@linzumi/cli 1.0.120 → 1.0.122

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.
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="4096" height="4096" aria-label="Linzumi" color="#0e404b"><path fill="currentColor" fill-rule="evenodd" d="M2111 3966c-37 2-34 3-69 2l-141-7c-34-2-36-1-65-5l-107-15c-30-5-43-7-76-15a3031 3031 0 0 1-217-61l-84-31c-26-10-33-11-70-29a2233 2233 0 0 1-423-259 1796 1796 0 0 1-381-416 1962 1962 0 0 1-168-298c-25-57-54-131-74-191-19-59-35-127-45-168-11-40-11-45-16-76-5-30-11-58-16-107-6-48-13-132-16-183q-2-77 1-122c0-31 1-30 3-61 3-31 8-89 13-126 4-37 4-47 14-95a1863 1863 0 0 1 475-956q51-56 92-94c27-26 36-36 71-65s99-79 137-107 62-43 90-61a1539 1539 0 0 1 156-88c31-15 58-31 104-49a1697 1697 0 0 1 492-133c61-9 144-19 202-22s111 1 145 2c34 2 30 6 57 9s70 5 103 9 56 7 96 15q59 10 141 30c54 15 143 44 187 59s47 18 77 31 59 25 102 48 108 59 157 89a2162 2162 0 0 1 210 153c27 23 50 42 88 80s99 101 141 148c41 48 74 91 106 138 33 46 67 104 90 141a1170 1170 0 0 1 92 180c17 40 44 107 59 149 16 41 22 63 32 99a3000 3000 0 0 1 47 195c5 28 9 46 14 95s13 137 16 198c2 62-1 123-4 172-2 50-7 88-11 126l-16 103a3048 3048 0 0 1-62 248c-10 31-17 49-29 80-12 32-22 60-44 108-23 48-64 130-92 180s-57 90-77 121l-45 62a3211 3211 0 0 1-153 182q-32 35-76 76a2201 2201 0 0 1-349 260c-50 28-132 69-180 91-48 23-76 32-108 44-33 12-42 17-84 30-42 12-109 33-168 46-60 12-130 24-187 31-58 6-119 8-157 10m9-294c18-3 10-6 14-12 4-5 4-11 9-19 6-7 16-19 25-27 10-8 14-12 31-18 16-6 50-14 69-17 18-3 33-1 42-2 8-1 6-3 7-4 1-2 10 3 0-4-11-7-46-26-65-40s-37-32-50-44c-13-13-18-17-29-31-12-14-29-41-39-53s-11-17-19-19q-11-3-31 4c-14 3-40 9-53 14s-15 6-23 15c-8 8-20 28-27 35-6 7-5 5-11 7s-18 5-27 4q-15-2-27-9c-6-6-11-18-14-24-3-7-4-9-4-16l3-26q2-17 12-39c7-13 14-26 31-42 16-15 56-41 68-51s5-5 5-10c1-4 4-6-1-17a341 341 0 0 0-80-101c-18-14-41-24-58-32-16-9-15-9-43-18-28-8-98-27-125-36-27-8-21-7-38-15l-61-32c-13-7-10-4-20-12l-41-34a114 114 0 0 1-34-54q-5-17 0-30c3-10 0-9 15-27 16-18 54-59 76-80 23-21 37-30 58-45a1278 1278 0 0 1 126-78c18-9 40-15 53-20q18-9 23-14c4-3 5 4 3-7-3-11-14-37-17-57-3-21-3-46 0-65q4-27 15-50 13-25 29-46 15-19 35-30c13-8 32-15 46-18q18-5 34-3l34 2q15 2 27 7c8 4 19 11 23 15 3 5 5 1-2 12-8 11-31 34-43 53q-18 30-30 65c-7 24-14 65-15 80-2 16 2 9 5 12l12 8q5 2 8-3c3-2 10-4 13-13 4-8 2-19 8-38 6-18 18-54 29-73 10-19 21-28 34-41q20-21 42-35c14-9 24-13 42-17 18-3 46-5 65-5 18 0 29 1 46 7 16 6 39 20 53 30q20 17 32 35c9 12 14 22 19 38s10 38 10 57c0 20-4 45-9 61q-7 25-18 40c-5 10-7 12-16 21-9 10-24 24-37 34-13 9-33 17-41 24-7 6-5 12-4 15q-2 4 7 3c7 1 13 3 34-1 21-3 62-16 91-21a632 632 0 0 1 271 0c24 4 31 8 47 13l45 17c18 8 41 18 61 31a541 541 0 0 1 153 152q18 27 28 50a878 878 0 0 1 35 103c5 21 9 33 12 61s3 88 4 107c2 19 3 8 5 9 2 2-6 8 8 1 13-7 52-29 73-44s34-28 52-46 41-46 56-65q20-26 29-46c8-13 10-14 18-34s22-57 28-84c7-27 7-58 9-80 1-22 0-35-1-54a481 481 0 0 0-53-194c-13-24-31-52-47-73a530 530 0 0 0-114-99q-33-19-58-31a650 650 0 0 0-99-28l-46-3h-107c-20-2-9-5-11-9s-2-12 0-16q1-4 7-7l27-9 46-7 65-2q32-1 65 3c21 3 46 11 64 16a464 464 0 0 1 256 183c13 17 18 23 31 46 12 23 34 69 43 93 10 24 11 28 16 50l14 80c3 14 1 5 3 6q3 3 8 1c2-1 0 5 6-7q11-20 31-65l45-111a2679 2679 0 0 0 76-279 1612 1612 0 0 0 21-343c-1-36-1-62-7-111s-23-142-31-183c-7-40-7-34-14-61-8-27-16-57-31-99s-40-107-60-153-36-77-62-122a1923 1923 0 0 0-184-266c-38-43-90-98-133-138-44-41-96-81-127-106s-39-29-61-44-36-26-72-46c-37-21-97-55-145-78a1921 1921 0 0 0-245-90 1334 1334 0 0 0-336-55c-40-2-99-4-148-3a1957 1957 0 0 0-248 26c-30 6-35 6-73 16s-106 28-156 46a1494 1494 0 0 0-406 211c-40 31-93 73-133 108-39 36-78 77-106 106-27 29-40 46-58 67l-46 59-76 111q-30 47-48 80a2814 2814 0 0 0-75 153c-12 28-17 39-30 76s-33 96-46 145a1912 1912 0 0 0-48 267 2164 2164 0 0 0-4 233 1469 1469 0 0 0 51 328 1340 1340 0 0 0 62 183c12 32 22 59 45 103 22 45 73 138 89 166 17 29 5 6 8 5 2-1 6 1 7-10 2-12 0-33 3-58a1421 1421 0 0 1 30-145 837 837 0 0 1 59-164c13-26 28-59 46-88a1133 1133 0 0 1 242-274 1321 1321 0 0 1 170-106 890 890 0 0 1 229-76q45-11 80-15c25-4 43-4 69-7 26-4 69-10 88-15s21-11 27-14c5-4 5-3 7-8 1-5 2-16 0-21-2-6 8-7-11-13s-72-14-103-22c-31-9-65-21-84-28s-17-7-29-15l-44-30c-7-7-3-6-2-8s-8 1 6-7l76-41c15-8 8-3 12-3s1-2 11 2c10 5 32 18 50 25a340 340 0 0 0 168 18c10-2 10-4 12-9s6-7-1-20c-7-14-33-49-42-63l-9-17q-3-5 0-7c1-2-8-1 9-6 18-4 78-19 96-21s5 0 13 8 23 27 36 39c14 12 33 24 46 32a144 144 0 0 0 69 21c14 0 37-1 53-5 16-3 27-7 42-15s35-20 50-33 26-38 42-45c16-6 37 4 53 7 17 3 37 9 46 12s7 3 7 6c1 3 8-3-2 11l-60 77c-10 14-4 6-5 11s0 15 1 19q2 6 6 8c2 2-1 3 7 4l42 2c17-1 33 1 57-5 25-6 69-22 88-29 20-7 24-10 31-15q9-6 13-11 5-3 10-2c3 0-5-6 11 2s70 37 84 46c15 9 3 6 3 8s5-1-3 5l-41 29c-11 7-8 7-24 14-16 8-49 22-72 30s-30 13-65 20c-35 6-108 13-145 19s-59 10-77 15c-17 5-16 7-26 14-11 8-20 12-37 29s-44 51-65 73-48 45-62 58c-15 12-12 10-25 18l-52 30-30 15-50 16c-18 5-29 9-57 15l-111 21c-27 6-32 8-53 15q-33 12-73 31-36 16-80 45a709 709 0 0 0-238 270c-15 28-22 49-29 69-8 20-12 30-17 49-5 20-11 39-16 69-4 31-11 83-13 115-2 31-2 45 0 76l14 111c5 28 11 44 16 61l14 42q11 29 32 71c16 28 40 68 60 97a712 712 0 0 0 299 246c33 15 81 34 111 44s39 11 69 17q43 8 107 16c42 4 107 8 148 9s78-2 97-4m915-1801-54 1c-17 0-21 2-49-3-28-6-87-21-119-32-31-10-47-20-72-33-26-13-64-34-80-44-16-9 2-2-16-11a1748 1748 0 0 0-190-90c-32-13-69-24-88-30s-17-2-27-5c-9-3-12-7-30-11a914 914 0 0 0-191-30c-29-2-36-2-61-1q-41-1-92 3a1494 1494 0 0 0-175 28 1889 1889 0 0 0-184 60c-24 10-21 6-68 31s-164 91-214 116-65 26-88 33c-23 8-32 9-49 12a606 606 0 0 1-164 2c-19-4-43-12-58-17-15-4-16-5-30-13-15-8-42-24-58-35a286 286 0 0 1-64-58q-15-17-30-41-17-28-32-61a352 352 0 0 1-22-127c0-22 1-50 5-72q6-32 18-61a361 361 0 0 1 164-183 366 366 0 0 1 125-44c19-3 40-1 50-3s10 10 12-7c3-17 0-70 3-95 2-25 6-37 11-54a388 388 0 0 1 66-127 509 509 0 0 1 87-79 578 578 0 0 1 104-48c19-5 52-10 68-13 16-2 14-1 27-1q20-1 50 2 30 2 68 12c26 8 69 30 84 35s3 2 8-7l19-48 15-27c5-9 8-14 19-27 10-12 25-33 42-49q27-25 59-46a384 384 0 0 1 94-44q20-7 50-12a507 507 0 0 1 137-1q30 5 53 13c16 5 26 8 42 16a561 561 0 0 1 96 58c12 10 18 16 31 31l44 57c10 15 10 17 16 30l19 49c5 10-1 10 8 7 9-2 32-15 48-21a410 410 0 0 1 109-26c18-2 28-4 53-2s69 9 95 16c27 7 49 19 65 26 16 8 19 11 31 19a595 595 0 0 1 73 62q17 19 34 42a439 439 0 0 1 47 107c5 17 8 26 10 50s0 78 3 95c2 17 2 5 12 7 11 2 32 0 50 3q27 3 57 13a412 412 0 0 1 137 79c17 13 22 20 32 32a347 347 0 0 1 62 99c8 16 9 17 14 38 4 22 12 61 12 92s-6 72-10 95c-5 24-8 30-16 46a499 499 0 0 1-59 95q-14 18-30 31c-11 10-20 18-35 28a705 705 0 0 1-88 46l-49 16q-23 5-46 6m-1146 957q10-1 16-9c6-5 13-16 17-21 3-6 2-6 3-12 0-5 2-11-2-19-3-7-13-20-19-26q-12-9-22-10c-6-2-8-2-15 0s-21 7-28 13q-10 11-15 23-3 10-1 19c2 8 9 20 13 27q8 8 16 12c4 3 5 3 11 4s19 1 26-1"/></svg>
@@ -0,0 +1,18 @@
1
+ import { createRequire } from 'node:module';
2
+ const require = createRequire(import.meta.url);
3
+ var cr=Object.create;var Sn=Object.defineProperty;var lr=Object.getOwnPropertyDescriptor;var ur=Object.getOwnPropertyNames;var fr=Object.getPrototypeOf,pr=Object.prototype.hasOwnProperty;var E=(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 R=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports);var gr=(e,n,t,r)=>{if(n&&typeof n=="object"||typeof n=="function")for(let o of ur(n))!pr.call(e,o)&&o!==t&&Sn(e,o,{get:()=>n[o],enumerable:!(r=lr(n,o))||r.enumerable});return e};var fe=(e,n,t)=>(t=e!=null?cr(fr(e)):{},gr(n||!e||!e.__esModule?Sn(t,"default",{value:e,enumerable:!0}):t,e));var F=R((Si,Cn)=>{"use strict";var kn=["nodebuffer","arraybuffer","fragments"],On=typeof Blob<"u";On&&kn.push("blob");Cn.exports={BINARY_TYPES:kn,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:On,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}});var pe=R((ki,Oe)=>{"use strict";var{EMPTY_BUFFER:mr}=F(),Ve=Buffer[Symbol.species];function hr(e,n){if(e.length===0)return mr;if(e.length===1)return e[0];let t=Buffer.allocUnsafe(n),r=0;for(let o=0;o<e.length;o++){let s=e[o];t.set(s,r),r+=s.length}return r<n?new Ve(t.buffer,t.byteOffset,r):t}function En(e,n,t,r,o){for(let s=0;s<o;s++)t[r+s]=e[s]^n[s&3]}function Pn(e,n){for(let t=0;t<e.length;t++)e[t]^=n[t&3]}function yr(e){return e.length===e.buffer.byteLength?e.buffer:e.buffer.slice(e.byteOffset,e.byteOffset+e.length)}function Ge(e){if(Ge.readOnly=!0,Buffer.isBuffer(e))return e;let n;return e instanceof ArrayBuffer?n=new Ve(e):ArrayBuffer.isView(e)?n=new Ve(e.buffer,e.byteOffset,e.byteLength):(n=Buffer.from(e),Ge.readOnly=!1),n}Oe.exports={concat:hr,mask:En,toArrayBuffer:yr,toBuffer:Ge,unmask:Pn};if(!process.env.WS_NO_BUFFER_UTIL)try{let e=E("bufferutil");Oe.exports.mask=function(n,t,r,o,s){s<48?En(n,t,r,o,s):e.mask(n,t,r,o,s)},Oe.exports.unmask=function(n,t){n.length<32?Pn(n,t):e.unmask(n,t)}}catch{}});var Rn=R((Oi,An)=>{"use strict";var Tn=Symbol("kDone"),Be=Symbol("kRun"),qe=class{constructor(n){this[Tn]=()=>{this.pending--,this[Be]()},this.concurrency=n||1/0,this.jobs=[],this.pending=0}add(n){this.jobs.push(n),this[Be]()}[Be](){if(this.pending!==this.concurrency&&this.jobs.length){let n=this.jobs.shift();this.pending++,n(this[Tn])}}};An.exports=qe});var me=R((Ci,Nn)=>{"use strict";var ge=E("zlib"),In=pe(),_r=Rn(),{kStatusCode:Mn}=F(),xr=Buffer[Symbol.species],br=Buffer.from([0,0,255,255]),Ee=Symbol("permessage-deflate"),V=Symbol("total-length"),te=Symbol("callback"),q=Symbol("buffers"),re=Symbol("error"),Ce,We=class{constructor(n,t,r){if(this._maxPayload=r|0,this._options=n||{},this._threshold=this._options.threshold!==void 0?this._options.threshold:1024,this._isServer=!!t,this._deflate=null,this._inflate=null,this.params=null,!Ce){let o=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;Ce=new _r(o)}}static get extensionName(){return"permessage-deflate"}offer(){let n={};return this._options.serverNoContextTakeover&&(n.server_no_context_takeover=!0),this._options.clientNoContextTakeover&&(n.client_no_context_takeover=!0),this._options.serverMaxWindowBits&&(n.server_max_window_bits=this._options.serverMaxWindowBits),this._options.clientMaxWindowBits?n.client_max_window_bits=this._options.clientMaxWindowBits:this._options.clientMaxWindowBits==null&&(n.client_max_window_bits=!0),n}accept(n){return n=this.normalizeParams(n),this.params=this._isServer?this.acceptAsServer(n):this.acceptAsClient(n),this.params}cleanup(){if(this._inflate&&(this._inflate.close(),this._inflate=null),this._deflate){let n=this._deflate[te];this._deflate.close(),this._deflate=null,n&&n(new Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(n){let t=this._options,r=n.find(o=>!(t.serverNoContextTakeover===!1&&o.server_no_context_takeover||o.server_max_window_bits&&(t.serverMaxWindowBits===!1||typeof t.serverMaxWindowBits=="number"&&t.serverMaxWindowBits>o.server_max_window_bits)||typeof t.clientMaxWindowBits=="number"&&!o.client_max_window_bits));if(!r)throw new Error("None of the extension offers can be accepted");return t.serverNoContextTakeover&&(r.server_no_context_takeover=!0),t.clientNoContextTakeover&&(r.client_no_context_takeover=!0),typeof t.serverMaxWindowBits=="number"&&(r.server_max_window_bits=t.serverMaxWindowBits),typeof t.clientMaxWindowBits=="number"?r.client_max_window_bits=t.clientMaxWindowBits:(r.client_max_window_bits===!0||t.clientMaxWindowBits===!1)&&delete r.client_max_window_bits,r}acceptAsClient(n){let t=n[0];if(this._options.clientNoContextTakeover===!1&&t.client_no_context_takeover)throw new Error('Unexpected parameter "client_no_context_takeover"');if(!t.client_max_window_bits)typeof this._options.clientMaxWindowBits=="number"&&(t.client_max_window_bits=this._options.clientMaxWindowBits);else if(this._options.clientMaxWindowBits===!1||typeof this._options.clientMaxWindowBits=="number"&&t.client_max_window_bits>this._options.clientMaxWindowBits)throw new Error('Unexpected or invalid parameter "client_max_window_bits"');return t}normalizeParams(n){return n.forEach(t=>{Object.keys(t).forEach(r=>{let o=t[r];if(o.length>1)throw new Error(`Parameter "${r}" must have only a single value`);if(o=o[0],r==="client_max_window_bits"){if(o!==!0){let s=+o;if(!Number.isInteger(s)||s<8||s>15)throw new TypeError(`Invalid value for parameter "${r}": ${o}`);o=s}else if(!this._isServer)throw new TypeError(`Invalid value for parameter "${r}": ${o}`)}else if(r==="server_max_window_bits"){let s=+o;if(!Number.isInteger(s)||s<8||s>15)throw new TypeError(`Invalid value for parameter "${r}": ${o}`);o=s}else if(r==="client_no_context_takeover"||r==="server_no_context_takeover"){if(o!==!0)throw new TypeError(`Invalid value for parameter "${r}": ${o}`)}else throw new Error(`Unknown parameter "${r}"`);t[r]=o})}),n}decompress(n,t,r){Ce.add(o=>{this._decompress(n,t,(s,i)=>{o(),r(s,i)})})}compress(n,t,r){Ce.add(o=>{this._compress(n,t,(s,i)=>{o(),r(s,i)})})}_decompress(n,t,r){let o=this._isServer?"client":"server";if(!this._inflate){let s=`${o}_max_window_bits`,i=typeof this.params[s]!="number"?ge.Z_DEFAULT_WINDOWBITS:this.params[s];this._inflate=ge.createInflateRaw({...this._options.zlibInflateOptions,windowBits:i}),this._inflate[Ee]=this,this._inflate[V]=0,this._inflate[q]=[],this._inflate.on("error",wr),this._inflate.on("data",jn)}this._inflate[te]=r,this._inflate.write(n),t&&this._inflate.write(br),this._inflate.flush(()=>{let s=this._inflate[re];if(s){this._inflate.close(),this._inflate=null,r(s);return}let i=In.concat(this._inflate[q],this._inflate[V]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[V]=0,this._inflate[q]=[],t&&this.params[`${o}_no_context_takeover`]&&this._inflate.reset()),r(null,i)})}_compress(n,t,r){let o=this._isServer?"server":"client";if(!this._deflate){let s=`${o}_max_window_bits`,i=typeof this.params[s]!="number"?ge.Z_DEFAULT_WINDOWBITS:this.params[s];this._deflate=ge.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:i}),this._deflate[V]=0,this._deflate[q]=[],this._deflate.on("data",vr)}this._deflate[te]=r,this._deflate.write(n),this._deflate.flush(ge.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let s=In.concat(this._deflate[q],this._deflate[V]);t&&(s=new xr(s.buffer,s.byteOffset,s.length-4)),this._deflate[te]=null,this._deflate[V]=0,this._deflate[q]=[],t&&this.params[`${o}_no_context_takeover`]&&this._deflate.reset(),r(null,s)})}};Nn.exports=We;function vr(e){this[q].push(e),this[V]+=e.length}function jn(e){if(this[V]+=e.length,this[Ee]._maxPayload<1||this[V]<=this[Ee]._maxPayload){this[q].push(e);return}this[re]=new RangeError("Max payload size exceeded"),this[re].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[re][Mn]=1009,this.removeListener("data",jn),this.reset()}function wr(e){if(this[Ee]._inflate=null,this[re]){this[te](this[re]);return}e[Mn]=1007,this[te](e)}});var oe=R((Ei,Pe)=>{"use strict";var{isUtf8:Jn}=E("buffer"),{hasBlob:Sr}=F(),kr=[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 Or(e){return e>=1e3&&e<=1014&&e!==1004&&e!==1005&&e!==1006||e>=3e3&&e<=4999}function Ke(e){let n=e.length,t=0;for(;t<n;)if((e[t]&128)===0)t++;else if((e[t]&224)===192){if(t+1===n||(e[t+1]&192)!==128||(e[t]&254)===192)return!1;t+=2}else if((e[t]&240)===224){if(t+2>=n||(e[t+1]&192)!==128||(e[t+2]&192)!==128||e[t]===224&&(e[t+1]&224)===128||e[t]===237&&(e[t+1]&224)===160)return!1;t+=3}else if((e[t]&248)===240){if(t+3>=n||(e[t+1]&192)!==128||(e[t+2]&192)!==128||(e[t+3]&192)!==128||e[t]===240&&(e[t+1]&240)===128||e[t]===244&&e[t+1]>143||e[t]>244)return!1;t+=4}else return!1;return!0}function Cr(e){return Sr&&typeof e=="object"&&typeof e.arrayBuffer=="function"&&typeof e.type=="string"&&typeof e.stream=="function"&&(e[Symbol.toStringTag]==="Blob"||e[Symbol.toStringTag]==="File")}Pe.exports={isBlob:Cr,isValidStatusCode:Or,isValidUTF8:Ke,tokenChars:kr};if(Jn)Pe.exports.isValidUTF8=function(e){return e.length<24?Ke(e):Jn(e)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let e=E("utf-8-validate");Pe.exports.isValidUTF8=function(n){return n.length<32?Ke(n):e(n)}}catch{}});var Qe=R((Pi,Vn)=>{"use strict";var{Writable:Er}=E("stream"),Ln=me(),{BINARY_TYPES:Pr,EMPTY_BUFFER:$n,kStatusCode:Tr,kWebSocket:Ar}=F(),{concat:He,toArrayBuffer:Rr,unmask:Ir}=pe(),{isValidStatusCode:Mr,isValidUTF8:Un}=oe(),Te=Buffer[Symbol.species],j=0,Dn=1,zn=2,Fn=3,Ze=4,Xe=5,Ae=6,Ye=class extends Er{constructor(n={}){super(),this._allowSynchronousEvents=n.allowSynchronousEvents!==void 0?n.allowSynchronousEvents:!0,this._binaryType=n.binaryType||Pr[0],this._extensions=n.extensions||{},this._isServer=!!n.isServer,this._maxPayload=n.maxPayload|0,this._skipUTF8Validation=!!n.skipUTF8Validation,this[Ar]=void 0,this._bufferedBytes=0,this._buffers=[],this._compressed=!1,this._payloadLength=0,this._mask=void 0,this._fragmented=0,this._masked=!1,this._fin=!1,this._opcode=0,this._totalPayloadLength=0,this._messageLength=0,this._fragments=[],this._errored=!1,this._loop=!1,this._state=j}_write(n,t,r){if(this._opcode===8&&this._state==j)return r();this._bufferedBytes+=n.length,this._buffers.push(n),this.startLoop(r)}consume(n){if(this._bufferedBytes-=n,n===this._buffers[0].length)return this._buffers.shift();if(n<this._buffers[0].length){let r=this._buffers[0];return this._buffers[0]=new Te(r.buffer,r.byteOffset+n,r.length-n),new Te(r.buffer,r.byteOffset,n)}let t=Buffer.allocUnsafe(n);do{let r=this._buffers[0],o=t.length-n;n>=r.length?t.set(this._buffers.shift(),o):(t.set(new Uint8Array(r.buffer,r.byteOffset,n),o),this._buffers[0]=new Te(r.buffer,r.byteOffset+n,r.length-n)),n-=r.length}while(n>0);return t}startLoop(n){this._loop=!0;do switch(this._state){case j:this.getInfo(n);break;case Dn:this.getPayloadLength16(n);break;case zn:this.getPayloadLength64(n);break;case Fn:this.getMask();break;case Ze:this.getData(n);break;case Xe:case Ae:this._loop=!1;return}while(this._loop);this._errored||n()}getInfo(n){if(this._bufferedBytes<2){this._loop=!1;return}let t=this.consume(2);if((t[0]&48)!==0){let o=this.createError(RangeError,"RSV2 and RSV3 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_2_3");n(o);return}let r=(t[0]&64)===64;if(r&&!this._extensions[Ln.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=Dn:this._payloadLength===127?this._state=zn:this.haveLength(n)}getPayloadLength16(n){if(this._bufferedBytes<2){this._loop=!1;return}this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength(n)}getPayloadLength64(n){if(this._bufferedBytes<8){this._loop=!1;return}let t=this.consume(8),r=t.readUInt32BE(0);if(r>Math.pow(2,21)-1){let o=this.createError(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009,"WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH");n(o);return}this._payloadLength=r*Math.pow(2,32)+t.readUInt32BE(4),this.haveLength(n)}haveLength(n){if(this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0)){let t=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");n(t);return}this._masked?this._state=Fn:this._state=Ze}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=Ze}getData(n){let t=$n;if(this._payloadLength){if(this._bufferedBytes<this._payloadLength){this._loop=!1;return}t=this.consume(this._payloadLength),this._masked&&(this._mask[0]|this._mask[1]|this._mask[2]|this._mask[3])!==0&&Ir(t,this._mask)}if(this._opcode>7){this.controlMessage(t,n);return}if(this._compressed){this._state=Xe,this.decompress(t,n);return}t.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(t)),this.dataMessage(n)}decompress(n,t){this._extensions[Ln.extensionName].decompress(n,this._fin,(o,s)=>{if(o)return t(o);if(s.length){if(this._messageLength+=s.length,this._messageLength>this._maxPayload&&this._maxPayload>0){let i=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");t(i);return}this._fragments.push(s)}this.dataMessage(t),this._state===j&&this.startLoop(t)})}dataMessage(n){if(!this._fin){this._state=j;return}let t=this._messageLength,r=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],this._opcode===2){let o;this._binaryType==="nodebuffer"?o=He(r,t):this._binaryType==="arraybuffer"?o=Rr(He(r,t)):this._binaryType==="blob"?o=new Blob(r):o=r,this._allowSynchronousEvents?(this.emit("message",o,!0),this._state=j):(this._state=Ae,setImmediate(()=>{this.emit("message",o,!0),this._state=j,this.startLoop(n)}))}else{let o=He(r,t);if(!this._skipUTF8Validation&&!Un(o)){let s=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");n(s);return}this._state===Xe||this._allowSynchronousEvents?(this.emit("message",o,!1),this._state=j):(this._state=Ae,setImmediate(()=>{this.emit("message",o,!1),this._state=j,this.startLoop(n)}))}}controlMessage(n,t){if(this._opcode===8){if(n.length===0)this._loop=!1,this.emit("conclude",1005,$n),this.end();else{let r=n.readUInt16BE(0);if(!Mr(r)){let s=this.createError(RangeError,`invalid status code ${r}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");t(s);return}let o=new Te(n.buffer,n.byteOffset+2,n.length-2);if(!this._skipUTF8Validation&&!Un(o)){let s=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");t(s);return}this._loop=!1,this.emit("conclude",r,o),this.end()}this._state=j;return}this._allowSynchronousEvents?(this.emit(this._opcode===9?"ping":"pong",n),this._state=j):(this._state=Ae,setImmediate(()=>{this.emit(this._opcode===9?"ping":"pong",n),this._state=j,this.startLoop(t)}))}createError(n,t,r,o,s){this._loop=!1,this._errored=!0;let i=new n(r?`Invalid WebSocket frame: ${t}`:t);return Error.captureStackTrace(i,this.createError),i.code=s,i[Tr]=o,i}};Vn.exports=Ye});var tn=R((Ai,qn)=>{"use strict";var{Duplex:Ti}=E("stream"),{randomFillSync:jr}=E("crypto"),Gn=me(),{EMPTY_BUFFER:Nr,kWebSocket:Jr,NOOP:Lr}=F(),{isBlob:se,isValidStatusCode:$r}=oe(),{mask:Bn,toBuffer:H}=pe(),N=Symbol("kByteLength"),Ur=Buffer.alloc(4),Re=8*1024,Z,ie=Re,L=0,Dr=1,zr=2,en=class e{constructor(n,t,r){this._extensions=t||{},r&&(this._generateMask=r,this._maskBuffer=Buffer.alloc(4)),this._socket=n,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._queue=[],this._state=L,this.onerror=Lr,this[Jr]=void 0}static frame(n,t){let r,o=!1,s=2,i=!1;t.mask&&(r=t.maskBuffer||Ur,t.generateMask?t.generateMask(r):(ie===Re&&(Z===void 0&&(Z=Buffer.alloc(Re)),jr(Z,0,Re),ie=0),r[0]=Z[ie++],r[1]=Z[ie++],r[2]=Z[ie++],r[3]=Z[ie++]),i=(r[0]|r[1]|r[2]|r[3])===0,s=6);let a;typeof n=="string"?(!t.mask||i)&&t[N]!==void 0?a=t[N]:(n=Buffer.from(n),a=n.length):(a=n.length,o=t.mask&&t.readOnly&&!i);let c=a;a>=65536?(s+=8,c=127):a>125&&(s+=2,c=126);let d=Buffer.allocUnsafe(o?a+s:s);return d[0]=t.fin?t.opcode|128:t.opcode,t.rsv1&&(d[0]|=64),d[1]=c,c===126?d.writeUInt16BE(a,2):c===127&&(d[2]=d[3]=0,d.writeUIntBE(a,4,6)),t.mask?(d[1]|=128,d[s-4]=r[0],d[s-3]=r[1],d[s-2]=r[2],d[s-1]=r[3],i?[d,n]:o?(Bn(n,r,d,s,a),[d]):(Bn(n,r,n,0,a),[d,n])):[d,n]}close(n,t,r,o){let s;if(n===void 0)s=Nr;else{if(typeof n!="number"||!$r(n))throw new TypeError("First argument must be a valid error code number");if(t===void 0||!t.length)s=Buffer.allocUnsafe(2),s.writeUInt16BE(n,0);else{let a=Buffer.byteLength(t);if(a>123)throw new RangeError("The message must not be greater than 123 bytes");s=Buffer.allocUnsafe(2+a),s.writeUInt16BE(n,0),typeof t=="string"?s.write(t,2):s.set(t,2)}}let i={[N]:s.length,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};this._state!==L?this.enqueue([this.dispatch,s,!1,i,o]):this.sendFrame(e.frame(s,i),o)}ping(n,t,r){let o,s;if(typeof n=="string"?(o=Buffer.byteLength(n),s=!1):se(n)?(o=n.size,s=!1):(n=H(n),o=n.length,s=H.readOnly),o>125)throw new RangeError("The data size must not be greater than 125 bytes");let i={[N]:o,fin:!0,generateMask:this._generateMask,mask:t,maskBuffer:this._maskBuffer,opcode:9,readOnly:s,rsv1:!1};se(n)?this._state!==L?this.enqueue([this.getBlobData,n,!1,i,r]):this.getBlobData(n,!1,i,r):this._state!==L?this.enqueue([this.dispatch,n,!1,i,r]):this.sendFrame(e.frame(n,i),r)}pong(n,t,r){let o,s;if(typeof n=="string"?(o=Buffer.byteLength(n),s=!1):se(n)?(o=n.size,s=!1):(n=H(n),o=n.length,s=H.readOnly),o>125)throw new RangeError("The data size must not be greater than 125 bytes");let i={[N]:o,fin:!0,generateMask:this._generateMask,mask:t,maskBuffer:this._maskBuffer,opcode:10,readOnly:s,rsv1:!1};se(n)?this._state!==L?this.enqueue([this.getBlobData,n,!1,i,r]):this.getBlobData(n,!1,i,r):this._state!==L?this.enqueue([this.dispatch,n,!1,i,r]):this.sendFrame(e.frame(n,i),r)}send(n,t,r){let o=this._extensions[Gn.extensionName],s=t.binary?2:1,i=t.compress,a,c;typeof n=="string"?(a=Buffer.byteLength(n),c=!1):se(n)?(a=n.size,c=!1):(n=H(n),a=n.length,c=H.readOnly),this._firstFragment?(this._firstFragment=!1,i&&o&&o.params[o._isServer?"server_no_context_takeover":"client_no_context_takeover"]&&(i=a>=o._threshold),this._compress=i):(i=!1,s=0),t.fin&&(this._firstFragment=!0);let d={[N]:a,fin:t.fin,generateMask:this._generateMask,mask:t.mask,maskBuffer:this._maskBuffer,opcode:s,readOnly:c,rsv1:i};se(n)?this._state!==L?this.enqueue([this.getBlobData,n,this._compress,d,r]):this.getBlobData(n,this._compress,d,r):this._state!==L?this.enqueue([this.dispatch,n,this._compress,d,r]):this.dispatch(n,this._compress,d,r)}getBlobData(n,t,r,o){this._bufferedBytes+=r[N],this._state=zr,n.arrayBuffer().then(s=>{if(this._socket.destroyed){let a=new Error("The socket was closed while the blob was being read");process.nextTick(nn,this,a,o);return}this._bufferedBytes-=r[N];let i=H(s);t?this.dispatch(i,t,r,o):(this._state=L,this.sendFrame(e.frame(i,r),o),this.dequeue())}).catch(s=>{process.nextTick(Fr,this,s,o)})}dispatch(n,t,r,o){if(!t){this.sendFrame(e.frame(n,r),o);return}let s=this._extensions[Gn.extensionName];this._bufferedBytes+=r[N],this._state=Dr,s.compress(n,r.fin,(i,a)=>{if(this._socket.destroyed){let c=new Error("The socket was closed while data was being compressed");nn(this,c,o);return}this._bufferedBytes-=r[N],this._state=L,r.readOnly=!1,this.sendFrame(e.frame(a,r),o),this.dequeue()})}dequeue(){for(;this._state===L&&this._queue.length;){let n=this._queue.shift();this._bufferedBytes-=n[3][N],Reflect.apply(n[0],this,n.slice(1))}}enqueue(n){this._bufferedBytes+=n[3][N],this._queue.push(n)}sendFrame(n,t){n.length===2?(this._socket.cork(),this._socket.write(n[0]),this._socket.write(n[1],t),this._socket.uncork()):this._socket.write(n[0],t)}};qn.exports=en;function nn(e,n,t){typeof t=="function"&&t(n);for(let r=0;r<e._queue.length;r++){let o=e._queue[r],s=o[o.length-1];typeof s=="function"&&s(n)}}function Fr(e,n,t){nn(e,n,t),e.onerror(n)}});var nt=R((Ri,et)=>{"use strict";var{kForOnEventAttribute:he,kListener:rn}=F(),Wn=Symbol("kCode"),Kn=Symbol("kData"),Hn=Symbol("kError"),Zn=Symbol("kMessage"),Xn=Symbol("kReason"),ae=Symbol("kTarget"),Yn=Symbol("kType"),Qn=Symbol("kWasClean"),G=class{constructor(n){this[ae]=null,this[Yn]=n}get target(){return this[ae]}get type(){return this[Yn]}};Object.defineProperty(G.prototype,"target",{enumerable:!0});Object.defineProperty(G.prototype,"type",{enumerable:!0});var X=class extends G{constructor(n,t={}){super(n),this[Wn]=t.code===void 0?0:t.code,this[Xn]=t.reason===void 0?"":t.reason,this[Qn]=t.wasClean===void 0?!1:t.wasClean}get code(){return this[Wn]}get reason(){return this[Xn]}get wasClean(){return this[Qn]}};Object.defineProperty(X.prototype,"code",{enumerable:!0});Object.defineProperty(X.prototype,"reason",{enumerable:!0});Object.defineProperty(X.prototype,"wasClean",{enumerable:!0});var de=class extends G{constructor(n,t={}){super(n),this[Hn]=t.error===void 0?null:t.error,this[Zn]=t.message===void 0?"":t.message}get error(){return this[Hn]}get message(){return this[Zn]}};Object.defineProperty(de.prototype,"error",{enumerable:!0});Object.defineProperty(de.prototype,"message",{enumerable:!0});var ye=class extends G{constructor(n,t={}){super(n),this[Kn]=t.data===void 0?null:t.data}get data(){return this[Kn]}};Object.defineProperty(ye.prototype,"data",{enumerable:!0});var Vr={addEventListener(e,n,t={}){for(let o of this.listeners(e))if(!t[he]&&o[rn]===n&&!o[he])return;let r;if(e==="message")r=function(s,i){let a=new ye("message",{data:i?s:s.toString()});a[ae]=this,Ie(n,this,a)};else if(e==="close")r=function(s,i){let a=new X("close",{code:s,reason:i.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});a[ae]=this,Ie(n,this,a)};else if(e==="error")r=function(s){let i=new de("error",{error:s,message:s.message});i[ae]=this,Ie(n,this,i)};else if(e==="open")r=function(){let s=new G("open");s[ae]=this,Ie(n,this,s)};else return;r[he]=!!t[he],r[rn]=n,t.once?this.once(e,r):this.on(e,r)},removeEventListener(e,n){for(let t of this.listeners(e))if(t[rn]===n&&!t[he]){this.removeListener(e,t);break}}};et.exports={CloseEvent:X,ErrorEvent:de,Event:G,EventTarget:Vr,MessageEvent:ye};function Ie(e,n,t){typeof e=="object"&&e.handleEvent?e.handleEvent.call(e,t):e.call(n,t)}});var on=R((Ii,tt)=>{"use strict";var{tokenChars:_e}=oe();function U(e,n,t){e[n]===void 0?e[n]=[t]:e[n].push(t)}function Gr(e){let n=Object.create(null),t=Object.create(null),r=!1,o=!1,s=!1,i,a,c=-1,d=-1,f=-1,p=0;for(;p<e.length;p++)if(d=e.charCodeAt(p),i===void 0)if(f===-1&&_e[d]===1)c===-1&&(c=p);else if(p!==0&&(d===32||d===9))f===-1&&c!==-1&&(f=p);else if(d===59||d===44){if(c===-1)throw new SyntaxError(`Unexpected character at index ${p}`);f===-1&&(f=p);let u=e.slice(c,f);d===44?(U(n,u,t),t=Object.create(null)):i=u,c=f=-1}else throw new SyntaxError(`Unexpected character at index ${p}`);else if(a===void 0)if(f===-1&&_e[d]===1)c===-1&&(c=p);else if(d===32||d===9)f===-1&&c!==-1&&(f=p);else if(d===59||d===44){if(c===-1)throw new SyntaxError(`Unexpected character at index ${p}`);f===-1&&(f=p),U(t,e.slice(c,f),!0),d===44&&(U(n,i,t),t=Object.create(null),i=void 0),c=f=-1}else if(d===61&&c!==-1&&f===-1)a=e.slice(c,p),c=f=-1;else throw new SyntaxError(`Unexpected character at index ${p}`);else if(o){if(_e[d]!==1)throw new SyntaxError(`Unexpected character at index ${p}`);c===-1?c=p:r||(r=!0),o=!1}else if(s)if(_e[d]===1)c===-1&&(c=p);else if(d===34&&c!==-1)s=!1,f=p;else if(d===92)o=!0;else throw new SyntaxError(`Unexpected character at index ${p}`);else if(d===34&&e.charCodeAt(p-1)===61)s=!0;else if(f===-1&&_e[d]===1)c===-1&&(c=p);else if(c!==-1&&(d===32||d===9))f===-1&&(f=p);else if(d===59||d===44){if(c===-1)throw new SyntaxError(`Unexpected character at index ${p}`);f===-1&&(f=p);let u=e.slice(c,f);r&&(u=u.replace(/\\/g,""),r=!1),U(t,a,u),d===44&&(U(n,i,t),t=Object.create(null),i=void 0),a=void 0,c=f=-1}else throw new SyntaxError(`Unexpected character at index ${p}`);if(c===-1||s||d===32||d===9)throw new SyntaxError("Unexpected end of input");f===-1&&(f=p);let y=e.slice(c,f);return i===void 0?U(n,y,t):(a===void 0?U(t,y,!0):r?U(t,a,y.replace(/\\/g,"")):U(t,a,y),U(n,i,t)),n}function Br(e){return Object.keys(e).map(n=>{let t=e[n];return Array.isArray(t)||(t=[t]),t.map(r=>[n].concat(Object.keys(r).map(o=>{let s=r[o];return Array.isArray(s)||(s=[s]),s.map(i=>i===!0?o:`${o}=${i}`).join("; ")})).join("; ")).join(", ")}).join(", ")}tt.exports={format:Br,parse:Gr}});var Je=R((Ni,gt)=>{"use strict";var qr=E("events"),Wr=E("https"),Kr=E("http"),st=E("net"),Hr=E("tls"),{randomBytes:Zr,createHash:Xr}=E("crypto"),{Duplex:Mi,Readable:ji}=E("stream"),{URL:sn}=E("url"),W=me(),Yr=Qe(),Qr=tn(),{isBlob:eo}=oe(),{BINARY_TYPES:rt,EMPTY_BUFFER:Me,GUID:no,kForOnEventAttribute:an,kListener:to,kStatusCode:ro,kWebSocket:P,NOOP:it}=F(),{EventTarget:{addEventListener:oo,removeEventListener:so}}=nt(),{format:io,parse:ao}=on(),{toBuffer:co}=pe(),lo=30*1e3,at=Symbol("kAborted"),dn=[8,13],B=["CONNECTING","OPEN","CLOSING","CLOSED"],uo=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/,O=class e extends qr{constructor(n,t,r){super(),this._binaryType=rt[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=Me,this._closeTimer=null,this._errorEmitted=!1,this._extensions={},this._paused=!1,this._protocol="",this._readyState=e.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,n!==null?(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,t===void 0?t=[]:Array.isArray(t)||(typeof t=="object"&&t!==null?(r=t,t=[]):t=[t]),dt(this,n,t,r)):(this._autoPong=r.autoPong,this._isServer=!0)}get binaryType(){return this._binaryType}set binaryType(n){rt.includes(n)&&(this._binaryType=n,this._receiver&&(this._receiver._binaryType=n))}get bufferedAmount(){return this._socket?this._socket._writableState.length+this._sender._bufferedBytes:this._bufferedAmount}get extensions(){return Object.keys(this._extensions).join()}get isPaused(){return this._paused}get onclose(){return null}get onerror(){return null}get onopen(){return null}get onmessage(){return null}get protocol(){return this._protocol}get readyState(){return this._readyState}get url(){return this._url}setSocket(n,t,r){let o=new Yr({allowSynchronousEvents:r.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:r.maxPayload,skipUTF8Validation:r.skipUTF8Validation}),s=new Qr(n,this._extensions,r.generateMask);this._receiver=o,this._sender=s,this._socket=n,o[P]=this,s[P]=this,n[P]=this,o.on("conclude",go),o.on("drain",mo),o.on("error",ho),o.on("message",yo),o.on("ping",_o),o.on("pong",xo),s.onerror=bo,n.setTimeout&&n.setTimeout(0),n.setNoDelay&&n.setNoDelay(),t.length>0&&n.unshift(t),n.on("close",ut),n.on("data",Ne),n.on("end",ft),n.on("error",pt),this._readyState=e.OPEN,this.emit("open")}emitClose(){if(!this._socket){this._readyState=e.CLOSED,this.emit("close",this._closeCode,this._closeMessage);return}this._extensions[W.extensionName]&&this._extensions[W.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=e.CLOSED,this.emit("close",this._closeCode,this._closeMessage)}close(n,t){if(this.readyState!==e.CLOSED){if(this.readyState===e.CONNECTING){I(this,this._req,"WebSocket was closed before the connection was established");return}if(this.readyState===e.CLOSING){this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end();return}this._readyState=e.CLOSING,this._sender.close(n,t,!this._isServer,r=>{r||(this._closeFrameSent=!0,(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end())}),lt(this)}}pause(){this.readyState===e.CONNECTING||this.readyState===e.CLOSED||(this._paused=!0,this._socket.pause())}ping(n,t,r){if(this.readyState===e.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof n=="function"?(r=n,n=t=void 0):typeof t=="function"&&(r=t,t=void 0),typeof n=="number"&&(n=n.toString()),this.readyState!==e.OPEN){cn(this,n,r);return}t===void 0&&(t=!this._isServer),this._sender.ping(n||Me,t,r)}pong(n,t,r){if(this.readyState===e.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof n=="function"?(r=n,n=t=void 0):typeof t=="function"&&(r=t,t=void 0),typeof n=="number"&&(n=n.toString()),this.readyState!==e.OPEN){cn(this,n,r);return}t===void 0&&(t=!this._isServer),this._sender.pong(n||Me,t,r)}resume(){this.readyState===e.CONNECTING||this.readyState===e.CLOSED||(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(n,t,r){if(this.readyState===e.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof t=="function"&&(r=t,t={}),typeof n=="number"&&(n=n.toString()),this.readyState!==e.OPEN){cn(this,n,r);return}let o={binary:typeof n!="string",mask:!this._isServer,compress:!0,fin:!0,...t};this._extensions[W.extensionName]||(o.compress=!1),this._sender.send(n||Me,o,r)}terminate(){if(this.readyState!==e.CLOSED){if(this.readyState===e.CONNECTING){I(this,this._req,"WebSocket was closed before the connection was established");return}this._socket&&(this._readyState=e.CLOSING,this._socket.destroy())}}};Object.defineProperty(O,"CONNECTING",{enumerable:!0,value:B.indexOf("CONNECTING")});Object.defineProperty(O.prototype,"CONNECTING",{enumerable:!0,value:B.indexOf("CONNECTING")});Object.defineProperty(O,"OPEN",{enumerable:!0,value:B.indexOf("OPEN")});Object.defineProperty(O.prototype,"OPEN",{enumerable:!0,value:B.indexOf("OPEN")});Object.defineProperty(O,"CLOSING",{enumerable:!0,value:B.indexOf("CLOSING")});Object.defineProperty(O.prototype,"CLOSING",{enumerable:!0,value:B.indexOf("CLOSING")});Object.defineProperty(O,"CLOSED",{enumerable:!0,value:B.indexOf("CLOSED")});Object.defineProperty(O.prototype,"CLOSED",{enumerable:!0,value:B.indexOf("CLOSED")});["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach(e=>{Object.defineProperty(O.prototype,e,{enumerable:!0})});["open","error","close","message"].forEach(e=>{Object.defineProperty(O.prototype,`on${e}`,{enumerable:!0,get(){for(let n of this.listeners(e))if(n[an])return n[to];return null},set(n){for(let t of this.listeners(e))if(t[an]){this.removeListener(e,t);break}typeof n=="function"&&this.addEventListener(e,n,{[an]:!0})}})});O.prototype.addEventListener=oo;O.prototype.removeEventListener=so;gt.exports=O;function dt(e,n,t,r){let o={allowSynchronousEvents:!0,autoPong:!0,protocolVersion:dn[1],maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...r,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:"GET",host:void 0,path:void 0,port:void 0};if(e._autoPong=o.autoPong,!dn.includes(o.protocolVersion))throw new RangeError(`Unsupported protocol version: ${o.protocolVersion} (supported versions: ${dn.join(", ")})`);let s;if(n instanceof sn)s=n;else try{s=new sn(n)}catch{throw new SyntaxError(`Invalid URL: ${n}`)}s.protocol==="http:"?s.protocol="ws:":s.protocol==="https:"&&(s.protocol="wss:"),e._url=s.href;let i=s.protocol==="wss:",a=s.protocol==="ws+unix:",c;if(s.protocol!=="ws:"&&!i&&!a?c=`The URL's protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"`:a&&!s.pathname?c="The URL's pathname is empty":s.hash&&(c="The URL contains a fragment identifier"),c){let l=new SyntaxError(c);if(e._redirects===0)throw l;je(e,l);return}let d=i?443:80,f=Zr(16).toString("base64"),p=i?Wr.request:Kr.request,y=new Set,u;if(o.createConnection=o.createConnection||(i?po:fo),o.defaultPort=o.defaultPort||d,o.port=s.port||d,o.host=s.hostname.startsWith("[")?s.hostname.slice(1,-1):s.hostname,o.headers={...o.headers,"Sec-WebSocket-Version":o.protocolVersion,"Sec-WebSocket-Key":f,Connection:"Upgrade",Upgrade:"websocket"},o.path=s.pathname+s.search,o.timeout=o.handshakeTimeout,o.perMessageDeflate&&(u=new W(o.perMessageDeflate!==!0?o.perMessageDeflate:{},!1,o.maxPayload),o.headers["Sec-WebSocket-Extensions"]=io({[W.extensionName]:u.offer()})),t.length){for(let l of t){if(typeof l!="string"||!uo.test(l)||y.has(l))throw new SyntaxError("An invalid or duplicated subprotocol was specified");y.add(l)}o.headers["Sec-WebSocket-Protocol"]=t.join(",")}if(o.origin&&(o.protocolVersion<13?o.headers["Sec-WebSocket-Origin"]=o.origin:o.headers.Origin=o.origin),(s.username||s.password)&&(o.auth=`${s.username}:${s.password}`),a){let l=o.path.split(":");o.socketPath=l[0],o.path=l[1]}let g;if(o.followRedirects){if(e._redirects===0){e._originalIpc=a,e._originalSecure=i,e._originalHostOrSocketPath=a?o.socketPath:s.host;let l=r&&r.headers;if(r={...r,headers:{}},l)for(let[x,C]of Object.entries(l))r.headers[x.toLowerCase()]=C}else if(e.listenerCount("redirect")===0){let l=a?e._originalIpc?o.socketPath===e._originalHostOrSocketPath:!1:e._originalIpc?!1:s.host===e._originalHostOrSocketPath;(!l||e._originalSecure&&!i)&&(delete o.headers.authorization,delete o.headers.cookie,l||delete o.headers.host,o.auth=void 0)}o.auth&&!r.headers.authorization&&(r.headers.authorization="Basic "+Buffer.from(o.auth).toString("base64")),g=e._req=p(o),e._redirects&&e.emit("redirect",e.url,g)}else g=e._req=p(o);o.timeout&&g.on("timeout",()=>{I(e,g,"Opening handshake has timed out")}),g.on("error",l=>{g===null||g[at]||(g=e._req=null,je(e,l))}),g.on("response",l=>{let x=l.headers.location,C=l.statusCode;if(x&&o.followRedirects&&C>=300&&C<400){if(++e._redirects>o.maxRedirects){I(e,g,"Maximum redirects exceeded");return}g.abort();let M;try{M=new sn(x,n)}catch{let v=new SyntaxError(`Invalid URL: ${x}`);je(e,v);return}dt(e,M,t,r)}else e.emit("unexpected-response",g,l)||I(e,g,`Unexpected server response: ${l.statusCode}`)}),g.on("upgrade",(l,x,C)=>{if(e.emit("upgrade",l),e.readyState!==O.CONNECTING)return;g=e._req=null;let M=l.headers.upgrade;if(M===void 0||M.toLowerCase()!=="websocket"){I(e,x,"Invalid Upgrade header");return}let J=Xr("sha1").update(f+no).digest("base64");if(l.headers["sec-websocket-accept"]!==J){I(e,x,"Invalid Sec-WebSocket-Accept header");return}let v=l.headers["sec-websocket-protocol"],h;if(v!==void 0?y.size?y.has(v)||(h="Server sent an invalid subprotocol"):h="Server sent a subprotocol but none was requested":y.size&&(h="Server sent no subprotocol"),h){I(e,x,h);return}v&&(e._protocol=v);let w=l.headers["sec-websocket-extensions"];if(w!==void 0){if(!u){I(e,x,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let k;try{k=ao(w)}catch{I(e,x,"Invalid Sec-WebSocket-Extensions header");return}let b=Object.keys(k);if(b.length!==1||b[0]!==W.extensionName){I(e,x,"Server indicated an extension that was not requested");return}try{u.accept(k[W.extensionName])}catch{I(e,x,"Invalid Sec-WebSocket-Extensions header");return}e._extensions[W.extensionName]=u}e.setSocket(x,C,{allowSynchronousEvents:o.allowSynchronousEvents,generateMask:o.generateMask,maxPayload:o.maxPayload,skipUTF8Validation:o.skipUTF8Validation})}),o.finishRequest?o.finishRequest(g,e):g.end()}function je(e,n){e._readyState=O.CLOSING,e._errorEmitted=!0,e.emit("error",n),e.emitClose()}function fo(e){return e.path=e.socketPath,st.connect(e)}function po(e){return e.path=void 0,!e.servername&&e.servername!==""&&(e.servername=st.isIP(e.host)?"":e.host),Hr.connect(e)}function I(e,n,t){e._readyState=O.CLOSING;let r=new Error(t);Error.captureStackTrace(r,I),n.setHeader?(n[at]=!0,n.abort(),n.socket&&!n.socket.destroyed&&n.socket.destroy(),process.nextTick(je,e,r)):(n.destroy(r),n.once("error",e.emit.bind(e,"error")),n.once("close",e.emitClose.bind(e)))}function cn(e,n,t){if(n){let r=eo(n)?n.size:co(n).length;e._socket?e._sender._bufferedBytes+=r:e._bufferedAmount+=r}if(t){let r=new Error(`WebSocket is not open: readyState ${e.readyState} (${B[e.readyState]})`);process.nextTick(t,r)}}function go(e,n){let t=this[P];t._closeFrameReceived=!0,t._closeMessage=n,t._closeCode=e,t._socket[P]!==void 0&&(t._socket.removeListener("data",Ne),process.nextTick(ct,t._socket),e===1005?t.close():t.close(e,n))}function mo(){let e=this[P];e.isPaused||e._socket.resume()}function ho(e){let n=this[P];n._socket[P]!==void 0&&(n._socket.removeListener("data",Ne),process.nextTick(ct,n._socket),n.close(e[ro])),n._errorEmitted||(n._errorEmitted=!0,n.emit("error",e))}function ot(){this[P].emitClose()}function yo(e,n){this[P].emit("message",e,n)}function _o(e){let n=this[P];n._autoPong&&n.pong(e,!this._isServer,it),n.emit("ping",e)}function xo(e){this[P].emit("pong",e)}function ct(e){e.resume()}function bo(e){let n=this[P];n.readyState!==O.CLOSED&&(n.readyState===O.OPEN&&(n._readyState=O.CLOSING,lt(n)),this._socket.end(),n._errorEmitted||(n._errorEmitted=!0,n.emit("error",e)))}function lt(e){e._closeTimer=setTimeout(e._socket.destroy.bind(e._socket),lo)}function ut(){let e=this[P];this.removeListener("close",ut),this.removeListener("data",Ne),this.removeListener("end",ft),e._readyState=O.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[P]=void 0,clearTimeout(e._closeTimer),e._receiver._writableState.finished||e._receiver._writableState.errorEmitted?e.emitClose():(e._receiver.on("error",ot),e._receiver.on("finish",ot))}function Ne(e){this[P]._receiver.write(e)||this.pause()}function ft(){let e=this[P];e._readyState=O.CLOSING,e._receiver.end(),this.end()}function pt(){let e=this[P];this.removeListener("error",pt),this.on("error",it),e&&(e._readyState=O.CLOSING,this.destroy())}});var _t=R((Li,yt)=>{"use strict";var Ji=Je(),{Duplex:vo}=E("stream");function mt(e){e.emit("close")}function wo(){!this.destroyed&&this._writableState.finished&&this.destroy()}function ht(e){this.removeListener("error",ht),this.destroy(),this.listenerCount("error")===0&&this.emit("error",e)}function So(e,n){let t=!0,r=new vo({...n,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return e.on("message",function(s,i){let a=!i&&r._readableState.objectMode?s.toString():s;r.push(a)||e.pause()}),e.once("error",function(s){r.destroyed||(t=!1,r.destroy(s))}),e.once("close",function(){r.destroyed||r.push(null)}),r._destroy=function(o,s){if(e.readyState===e.CLOSED){s(o),process.nextTick(mt,r);return}let i=!1;e.once("error",function(c){i=!0,s(c)}),e.once("close",function(){i||s(o),process.nextTick(mt,r)}),t&&e.terminate()},r._final=function(o){if(e.readyState===e.CONNECTING){e.once("open",function(){r._final(o)});return}e._socket!==null&&(e._socket._writableState.finished?(o(),r._readableState.endEmitted&&r.destroy()):(e._socket.once("finish",function(){o()}),e.close()))},r._read=function(){e.isPaused&&e.resume()},r._write=function(o,s,i){if(e.readyState===e.CONNECTING){e.once("open",function(){r._write(o,s,i)});return}e.send(o,i)},r.on("end",wo),r.on("error",ht),r}yt.exports=So});var bt=R(($i,xt)=>{"use strict";var{tokenChars:ko}=oe();function Oo(e){let n=new Set,t=-1,r=-1,o=0;for(o;o<e.length;o++){let i=e.charCodeAt(o);if(r===-1&&ko[i]===1)t===-1&&(t=o);else if(o!==0&&(i===32||i===9))r===-1&&t!==-1&&(r=o);else if(i===44){if(t===-1)throw new SyntaxError(`Unexpected character at index ${o}`);r===-1&&(r=o);let a=e.slice(t,r);if(n.has(a))throw new SyntaxError(`The "${a}" subprotocol is duplicated`);n.add(a),t=r=-1}else throw new SyntaxError(`Unexpected character at index ${o}`)}if(t===-1||r!==-1)throw new SyntaxError("Unexpected end of input");let s=e.slice(t,o);if(n.has(s))throw new SyntaxError(`The "${s}" subprotocol is duplicated`);return n.add(s),n}xt.exports={parse:Oo}});var Et=R((Di,Ct)=>{"use strict";var Co=E("events"),Le=E("http"),{Duplex:Ui}=E("stream"),{createHash:Eo}=E("crypto"),vt=on(),Y=me(),Po=bt(),To=Je(),{GUID:Ao,kWebSocket:Ro}=F(),Io=/^[+/0-9A-Za-z]{22}==$/,wt=0,St=1,Ot=2,ln=class extends Co{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:To,...n},n.port==null&&!n.server&&!n.noServer||n.port!=null&&(n.server||n.noServer)||n.server&&n.noServer)throw new TypeError('One and only one of the "port", "server", or "noServer" options must be specified');if(n.port!=null?(this._server=Le.createServer((r,o)=>{let s=Le.STATUS_CODES[426];o.writeHead(426,{"Content-Length":s.length,"Content-Type":"text/plain"}),o.end(s)}),this._server.listen(n.port,n.host,n.backlog,t)):n.server&&(this._server=n.server),this._server){let r=this.emit.bind(this,"connection");this._removeListeners=Mo(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(o,s,i)=>{this.handleUpgrade(o,s,i,r)}})}n.perMessageDeflate===!0&&(n.perMessageDeflate={}),n.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=n,this._state=wt}address(){if(this.options.noServer)throw new Error('The server is operating in "noServer" mode');return this._server?this._server.address():null}close(n){if(this._state===Ot){n&&this.once("close",()=>{n(new Error("The server is not running"))}),process.nextTick(xe,this);return}if(n&&this.once("close",n),this._state!==St)if(this._state=St,this.options.noServer||this.options.server)this._server&&(this._removeListeners(),this._removeListeners=this._server=null),this.clients?this.clients.size?this._shouldEmitClose=!0:process.nextTick(xe,this):process.nextTick(xe,this);else{let t=this._server;this._removeListeners(),this._removeListeners=this._server=null,t.close(()=>{xe(this)})}}shouldHandle(n){if(this.options.path){let t=n.url.indexOf("?");if((t!==-1?n.url.slice(0,t):n.url)!==this.options.path)return!1}return!0}handleUpgrade(n,t,r,o){t.on("error",kt);let s=n.headers["sec-websocket-key"],i=n.headers.upgrade,a=+n.headers["sec-websocket-version"];if(n.method!=="GET"){Q(this,n,t,405,"Invalid HTTP method");return}if(i===void 0||i.toLowerCase()!=="websocket"){Q(this,n,t,400,"Invalid Upgrade header");return}if(s===void 0||!Io.test(s)){Q(this,n,t,400,"Missing or invalid Sec-WebSocket-Key header");return}if(a!==13&&a!==8){Q(this,n,t,400,"Missing or invalid Sec-WebSocket-Version header",{"Sec-WebSocket-Version":"13, 8"});return}if(!this.shouldHandle(n)){be(t,400);return}let c=n.headers["sec-websocket-protocol"],d=new Set;if(c!==void 0)try{d=Po.parse(c)}catch{Q(this,n,t,400,"Invalid Sec-WebSocket-Protocol header");return}let f=n.headers["sec-websocket-extensions"],p={};if(this.options.perMessageDeflate&&f!==void 0){let y=new Y(this.options.perMessageDeflate,!0,this.options.maxPayload);try{let u=vt.parse(f);u[Y.extensionName]&&(y.accept(u[Y.extensionName]),p[Y.extensionName]=y)}catch{Q(this,n,t,400,"Invalid or unacceptable Sec-WebSocket-Extensions header");return}}if(this.options.verifyClient){let y={origin:n.headers[`${a===8?"sec-websocket-origin":"origin"}`],secure:!!(n.socket.authorized||n.socket.encrypted),req:n};if(this.options.verifyClient.length===2){this.options.verifyClient(y,(u,g,l,x)=>{if(!u)return be(t,g||401,l,x);this.completeUpgrade(p,s,d,n,t,r,o)});return}if(!this.options.verifyClient(y))return be(t,401)}this.completeUpgrade(p,s,d,n,t,r,o)}completeUpgrade(n,t,r,o,s,i,a){if(!s.readable||!s.writable)return s.destroy();if(s[Ro])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>wt)return be(s,503);let d=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${Eo("sha1").update(t+Ao).digest("base64")}`],f=new this.options.WebSocket(null,void 0,this.options);if(r.size){let p=this.options.handleProtocols?this.options.handleProtocols(r,o):r.values().next().value;p&&(d.push(`Sec-WebSocket-Protocol: ${p}`),f._protocol=p)}if(n[Y.extensionName]){let p=n[Y.extensionName].params,y=vt.format({[Y.extensionName]:[p]});d.push(`Sec-WebSocket-Extensions: ${y}`),f._extensions=n}this.emit("headers",d,o),s.write(d.concat(`\r
4
+ `).join(`\r
5
+ `)),s.removeListener("error",kt),f.setSocket(s,i,{allowSynchronousEvents:this.options.allowSynchronousEvents,maxPayload:this.options.maxPayload,skipUTF8Validation:this.options.skipUTF8Validation}),this.clients&&(this.clients.add(f),f.on("close",()=>{this.clients.delete(f),this._shouldEmitClose&&!this.clients.size&&process.nextTick(xe,this)})),a(f,o)}};Ct.exports=ln;function Mo(e,n){for(let t of Object.keys(n))e.on(t,n[t]);return function(){for(let r of Object.keys(n))e.removeListener(r,n[r])}}function xe(e){e._state=Ot,e.emit("close")}function kt(){this.destroy()}function be(e,n,t,r){t=t||Le.STATUS_CODES[n],r={Connection:"close","Content-Type":"text/html","Content-Length":Buffer.byteLength(t),...r},e.once("finish",e.destroy),e.end(`HTTP/1.1 ${n} ${Le.STATUS_CODES[n]}\r
6
+ `+Object.keys(r).map(o=>`${o}: ${r[o]}`).join(`\r
7
+ `)+`\r
8
+ \r
9
+ `+t)}function Q(e,n,t,r,o,s){if(e.listenerCount("wsClientError")){let i=new Error(o);Error.captureStackTrace(i,Q),e.emit("wsClientError",i,t,n)}else be(t,r,o,s)}});import{spawn as Ds}from"node:child_process";import{appendFileSync as zs,rmSync as tr,writeFileSync as ke,mkdirSync as ue,chmodSync as nr,readFileSync as Fs,readdirSync as Vs,statSync as Gs,unlinkSync as Bs}from"node:fs";import{dirname as rr,join as Fe}from"node:path";var jo=fe(_t(),1),No=fe(Qe(),1),Jo=fe(tn(),1),un=fe(Je(),1),Lo=fe(Et(),1);function $(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}import{appendFileSync as Vo,openSync as Zi}from"node:fs";import{homedir as It}from"node:os";import{dirname as Go,join as Mt,resolve as Bo,sep as qo}from"node:path";import{mkdirSync as Wo}from"node:fs";var D={_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_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_forward_failed","job.turn_forward_failed"],["codex.upstream_error_captured","harness.upstream_error_captured"],["codex.upstream_rejection_captured","harness.upstream_rejection_captured"],["codex.upstream_turn_error_captured","harness.upstream_turn_error_captured"],["kandan.chat_event","linzumi.chat_event"],["kandan.chat_event_abandoned","linzumi.chat_event_abandoned"],["kandan.chat_event_failed","linzumi.chat_event_failed"],["kandan.chat_event_failure_cleared","linzumi.chat_event_failure_cleared"],["kandan.claude_code_interrupt_state_push_failed","linzumi.claude_code_interrupt_state_push_failed"],["kandan.claude_code_stop_state_push_failed","linzumi.claude_code_stop_state_push_failed"],["kandan.claude_code_typing_heartbeat_failed","linzumi.claude_code_typing_heartbeat_failed"],["kandan.claude_code_typing_start_wait_timeout","linzumi.claude_code_typing_start_wait_timeout"],["kandan.claude_code_typing_stop_failed","linzumi.claude_code_typing_stop_failed"],["kandan.claude_code_user_input_abort_publish_failed","linzumi.claude_code_user_input_abort_publish_failed"],["kandan.claude_code_user_question_completed_publish_failed","linzumi.claude_code_user_question_completed_publish_failed"],["kandan.codex_command_output_forwarded","linzumi.codex_command_output_forwarded"],["kandan.codex_delta_forwarded","linzumi.codex_delta_forwarded"],["kandan.codex_file_change_forwarded","linzumi.codex_file_change_forwarded"],["kandan.codex_notification_push_failed","linzumi.codex_notification_push_failed"],["kandan.codex_output_forwarded","linzumi.codex_output_forwarded"],["kandan.codex_reasoning_delta_forwarded","linzumi.codex_reasoning_delta_forwarded"],["kandan.codex_web_search_progress_forwarded","linzumi.codex_web_search_progress_forwarded"],["kandan.connection_force_reconnect","linzumi.connection_force_reconnect"],["kandan.connection_force_reconnect_dispatched","linzumi.connection_force_reconnect_dispatched"],["kandan.connection_hard_reset","linzumi.connection_hard_reset"],["kandan.connection_hard_reset_exhausted","linzumi.connection_hard_reset_exhausted"],["kandan.connection_recovered","linzumi.connection_recovered"],["kandan.connection_stale","linzumi.connection_stale"],["kandan.connection_unrecoverable","linzumi.connection_unrecoverable"],["kandan.control","linzumi.control"],["kandan.control_ack_withheld_on_failure","linzumi.control_ack_withheld_on_failure"],["kandan.control_epoch_changed","linzumi.control_epoch_changed"],["kandan.control_handler_threw","linzumi.control_handler_threw"],["kandan.control_ignored","linzumi.control_ignored"],["kandan.control_response_push_failed","linzumi.control_response_push_failed"],["kandan.failed_seq_overflow","linzumi.failed_seq_overflow"],["kandan.forward_port_revoked_push_failed","linzumi.forward_port_revoked_push_failed"],["kandan.forward_response","linzumi.forward_response"],["kandan.forward_response_push_failed","linzumi.forward_response_push_failed"],["kandan.forward_tunnel_error","linzumi.forward_tunnel_error"],["kandan.forward_tunnel_open_failed","linzumi.forward_tunnel_open_failed"],["kandan.heartbeat_push_failed","linzumi.heartbeat_push_failed"],["kandan.local_editor_initial_status_failed","linzumi.local_editor_initial_status_failed"],["kandan.local_editor_status_push_failed","linzumi.local_editor_status_push_failed"],["kandan.message_duplicate_ignored","linzumi.message_duplicate_ignored"],["kandan.message_ignored","linzumi.message_ignored"],["kandan.message_queued","linzumi.message_queued"],["kandan.message_spawn_on_miss","linzumi.message_spawn_on_miss"],["kandan.message_spawn_on_miss_failed","linzumi.message_spawn_on_miss_failed"],["kandan.message_state_refresh_failed","linzumi.message_state_refresh_failed"],["kandan.optional_push_failed","linzumi.optional_push_failed"],["kandan.post_stop_queue_drain_failed","linzumi.post_stop_queue_drain_failed"],["kandan.queue_drain_blocked","linzumi.queue_drain_blocked"],["kandan.queue_drain_dead_worker_fail_publish_failed","linzumi.queue_drain_dead_worker_fail_publish_failed"],["kandan.queue_drain_dead_worker_rebuild","linzumi.queue_drain_dead_worker_rebuild"],["kandan.queue_drain_dead_worker_rebuild_exhausted","linzumi.queue_drain_dead_worker_rebuild_exhausted"],["kandan.queue_drain_dead_worker_rebuild_failed","linzumi.queue_drain_dead_worker_rebuild_failed"],["kandan.reconnect_handling_failed","linzumi.reconnect_handling_failed"],["kandan.reconnect_thread_context_fetch_failed","linzumi.reconnect_thread_context_fetch_failed"],["kandan.reconnect_thread_cwd_failed_state_push_failed","linzumi.reconnect_thread_cwd_failed_state_push_failed"],["kandan.reconnect_thread_failed","linzumi.reconnect_thread_failed"],["kandan.reconnect_thread_processing_state_push_failed","linzumi.reconnect_thread_processing_state_push_failed"],["kandan.reconnect_thread_queue_closed_state_push_failed","linzumi.reconnect_thread_queue_closed_state_push_failed"],["kandan.reconnect_thread_queue_failed_state_push_failed","linzumi.reconnect_thread_queue_failed_state_push_failed"],["kandan.reconnect_thread_queue_state_push_failed","linzumi.reconnect_thread_queue_state_push_failed"],["kandan.reconnect_thread_rehydrate_forced","linzumi.reconnect_thread_rehydrate_forced"],["kandan.reconnect_thread_rehydrated","linzumi.reconnect_thread_rehydrated"],["kandan.reconnect_thread_rehydrated_state_push_failed","linzumi.reconnect_thread_rehydrated_state_push_failed"],["kandan.reconnect_thread_rehydration_failed","linzumi.reconnect_thread_rehydration_failed"],["kandan.reconnect_thread_rehydration_ir_emitted","linzumi.reconnect_thread_rehydration_ir_emitted"],["kandan.reconnect_thread_rehydration_items_failed","linzumi.reconnect_thread_rehydration_items_failed"],["kandan.reconnect_thread_resume_failed","linzumi.reconnect_thread_resume_failed"],["kandan.reconnect_thread_seq_already_applied","linzumi.reconnect_thread_seq_already_applied"],["kandan.reconnect_thread_transcript_fetch_failed","linzumi.reconnect_thread_transcript_fetch_failed"],["kandan.reconnect_thread_unarchive_failed","linzumi.reconnect_thread_unarchive_failed"],["kandan.reconnect_thread_unarchive_resumed","linzumi.reconnect_thread_unarchive_resumed"],["kandan.reconnect_thread_unarchive_started","linzumi.reconnect_thread_unarchive_started"],["kandan.reconnect_thread_unavailable_state_push_failed","linzumi.reconnect_thread_unavailable_state_push_failed"],["kandan.reconnected","linzumi.reconnected"],["kandan.roster_seeded","linzumi.roster_seeded"],["kandan.session_app_server_lost_push_failed","linzumi.session_app_server_lost_push_failed"],["kandan.session_settings_publish_failed","linzumi.session_settings_publish_failed"],["kandan.start_instance_claude_code_attachment_failed_state_push_failed","linzumi.start_instance_claude_code_attachment_failed_state_push_failed"],["kandan.start_instance_codex_app_server_unavailable","linzumi.start_instance_codex_app_server_unavailable"],["kandan.start_instance_cwd_failed_state_push_failed","linzumi.start_instance_cwd_failed_state_push_failed"],["kandan.start_instance_cwd_rejected","linzumi.start_instance_cwd_rejected"],["kandan.start_instance_failed","linzumi.start_instance_failed"],["kandan.start_instance_processing_state_push_failed","linzumi.start_instance_processing_state_push_failed"],["kandan.start_instance_skipped_known_session","linzumi.start_instance_skipped_known_session"],["kandan.start_instance_stale_skipped","linzumi.start_instance_stale_skipped"],["kandan.start_instance_unavailable_state_push_failed","linzumi.start_instance_unavailable_state_push_failed"],["kandan.start_instance_wafer_state_push_failed","linzumi.start_instance_wafer_state_push_failed"],["kandan.start_turn_replay_skipped","linzumi.start_turn_replay_skipped"],["kandan.steer_duplicate_ignored","linzumi.steer_duplicate_ignored"],["kandan.steer_parked_as_own_turn","linzumi.steer_parked_as_own_turn"],["kandan.thread_bind_from_historical_reply_failed","linzumi.thread_bind_from_historical_reply_failed"],["kandan.thread_bound_from_historical_reply","linzumi.thread_bound_from_historical_reply"],["kandan.thread_sessions_reannounce_failed","linzumi.thread_sessions_reannounce_failed"],["kandan.thread_sessions_reannounced","linzumi.thread_sessions_reannounced"],["kandan.tui_input_mirrored","linzumi.tui_input_mirrored"],["kandan.typing_heartbeat_failed","linzumi.typing_heartbeat_failed"],["kandan.typing_stop_after_completion_failed","linzumi.typing_stop_after_completion_failed"]],keys:[["codexThreadId","harness_session_id"],["codex_thread_id","harness_session_id"],["kandanThreadId","thread_id"],["kandan_preview_ticket","linzumi_preview_ticket"],["kandan_thread_id","thread_id"],["linzumiThreadId","thread_id"],["linzumi_thread_id","thread_id"],["local_codex_runner","commander"],["runnerId","commander_id"],["runner_config","commander_config"],["runner_id","commander_id"]],keyPrimaryLegacy:[["commander","local_codex_runner"],["commander_config","runner_config"],["commander_id","runner_id"],["harness_session_id","codex_thread_id"],["linzumi_preview_ticket","kandan_preview_ticket"],["thread_id","kandan_thread_id"]],values:[["engine_boot_reconnect","harness_boot_reconnect"],["engine_for_runner_event_type","harness_for_commander_event_type"],["engine_rejected_steer","harness_rejected_steer"],["engine_unavailable","harness_unavailable"],["join_engine","join_harness"],["kandan-local-codex-runner","linzumi-commander"],["local_codex_runner","commander"],["original_engine","original_harness"],["resume_engine","resume_harness"]],topic:{legacyPrefix:"local_codex_runner:",canonicalPrefix:"commander:"},originator:{legacy:"kandan-local-codex-runner",canonical:"linzumi-commander"}};var Uo=new Map(D.events),Do=new Map(D.events.map(([e,n])=>[n,e])),Tt=new Map(D.keys),At=new Map(D.keyPrimaryLegacy),zo=new Map(D.values),Fo=new Map(D.values.map(([e,n])=>[n,e])),Bi={eventCanonicalByLegacy:Uo,eventLegacyByCanonical:Do,keyCanonicalByLegacy:Tt,keyPrimaryLegacyByCanonical:At,valueCanonicalByLegacy:zo,valueLegacyByCanonical:Fo,originator:D.originator,topic:D.topic};function Rt(e){let n=new Set(e);for(let t of e){let r=Tt.get(t);r!==void 0&&n.add(r);let o=At.get(t);o!==void 0&&n.add(o)}return n}var Pt=new Map;for(let[e,n]of D.keys){let t=Pt.get(n)??[];t.push(e),Pt.set(n,t)}var ee="<SENSITIVE_DATA>",jt=Rt(new Set(["access_token","authorization","code","cookie","kandan_preview_ticket","refresh_token","token"])),Ko=new Set(["--access-token","--api-key","--authorization","--cookie","--oauth-code","--password","--refresh-token","--secret","--token"]);function Ho(e){if(process.env.VITEST===void 0)return;let n=Mt(It(),".linzumi"),t=Bo(e);if(t===n||t.startsWith(`${n}${qo}`))throw new Error(`test-mode log isolation violated: refusing to open ${e} inside the real ~/.linzumi (point the logger at a temp path; the harness defaults LINZUMI_RUNNER_LOG_FILE / LINZUMI_CLI_AUDIT_LOG for exactly this - see plans/2026-07-10-cli-test-hygiene-spec.md item 2)`)}function ce(e,n,t={}){let r=t.logFile??Zo();Ho(r);try{Wo(Go(r),{recursive:!0}),Vo(r,`${JSON.stringify({ts:new Date().toISOString(),event:e,...t.sessionId===void 0?{}:{sessionId:t.sessionId},...Xo(n)})}
10
+ `,"utf8")}catch{return}}function Zo(){let e=process.env.LINZUMI_CLI_AUDIT_LOG?.trim();return e===void 0||e===""?Mt(It(),".linzumi","logs","command-events.jsonl"):e}function Xo(e){return Nt(e)}function fn(e,n){return es(n)?ee:typeof e=="string"?Jt(e):Array.isArray(e)?n==="args"?Yo(e):e.map(t=>fn(t,void 0)):e!==null&&typeof e=="object"?Nt(e):e}function Nt(e){let n=typeof e.name=="string"?e.name.toLowerCase():void 0,t=n==="authorization"||n==="cookie"||n==="set-cookie";return Object.fromEntries(Object.entries(e).filter(([r])=>r!=="runner_console").map(([r,o])=>[r,t&&r==="value"?ee:fn(o,r)]))}function Yo(e){let n=!1;return e.map(t=>{if(typeof t!="string")return n=!1,fn(t,void 0);if(n)return n=!1,ee;let[r,o]=Qo(t);return Ko.has(r)?o===void 0?(n=!0,t):`${r}=${ee}`:Jt(t)})}function Qo(e){let n=e.indexOf("=");return n===-1?[e,void 0]:[e.slice(0,n),e.slice(n+1)]}function es(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 Jt(e){return ns(e).replace(/\beyJ[A-Za-z0-9_-]*\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\b/g,ee)}function ns(e){let n;try{n=new URL(e)}catch{return ts(e)}for(let t of[...n.searchParams.keys()])jt.has(t.toLowerCase())&&n.searchParams.set(t,ee);return n.toString()}function ts(e){let n=e.indexOf("?"),t=e.indexOf("#");if(n===-1||t!==-1&&t<n)return e;let r=e.slice(0,n),o=t===-1?e.slice(n+1):e.slice(n+1,t),s=t===-1?"":e.slice(t),i=new URLSearchParams(o),a=!1;for(let c of[...i.keys()])jt.has(c.toLowerCase())&&(i.set(c,ee),a=!0);switch(a){case!0:return`${r}?${i.toString()}${s}`;case!1:return e}}import{mkdirSync as os,appendFileSync as ss}from"node:fs";import{dirname as is}from"node:path";function A(e){return e!==void 0&&$(e)?e:void 0}function pn(e){return Array.isArray(e)?e:void 0}function _(e){return typeof e=="string"&&e.trim()!==""?e.trim():void 0}function Lt(e){return JSON.stringify(e)}var ve,as=/(^|[_-])(token|secret|api[_-]?key|authorization|cookie|private[_-]?key|login[_-]?url)([_-]|$)/iu;function Se(e){let n=ds();if(n===void 0)return;let t=cs(n),r=ls(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:we(e.captureMetadata)},...r.transforms.length===0?e.transforms===void 0?{}:{transforms:e.transforms}:{transforms:[...e.transforms??[],...r.transforms]}};t.nextOrdinal+=1,ss(n,`${Lt(o)}
11
+ `,"utf8")}function ds(){let e=process.env.LINZUMI_AGENT_REPLAY_RECORD_FILE?.trim();return e===void 0||e===""?void 0:e}function cs(e){return ve!==void 0&&ve.path===e||(os(is(e),{recursive:!0}),ve={path:e,startedAtMs:Date.now(),nextOrdinal:0}),ve}function ls(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:we(e.rawValue,"$.rawValue",n);return{rawText:us(e.rawText,n),rawValue:t,transforms:n}}function us(e,n){if(e!==void 0)try{let t=JSON.parse(e);return JSON.stringify(we(t,"$.rawText",n))}catch{return e}}function we(e,n="$",t=[]){if(Array.isArray(e))return e.map((o,s)=>we(o,`${n}[${s}]`,t));if(!$(e))return e;let r=Object.entries(e).map(([o,s])=>{let i=`${n}.${o}`;return as.test(o)?(t.push({type:"credential_redaction",path:i}),[o,"[REDACTED]"]):[o,s===void 0?void 0:we(s,i,t)]});return Object.fromEntries(r)}function $t(e){return{name:"linzumi",command:e.command??"linzumi",args:[...e.argsPrefix??[],"mcp","server","--api-url",e.kandanUrl,...e.authFilePath===void 0?[]:["--auth-file",e.authFilePath],...e.delegationAuthFilePath===void 0?[]:["--delegation-auth-file",e.delegationAuthFilePath],...e.ownerUsername===void 0?[]:["--owner-username",e.ownerUsername],...e.cwd===void 0?[]:["--cwd",e.cwd],...e.threadId===void 0?[]:["--thread-id",e.threadId],"--mode",e.operatingMode??"text",...e.toolScope===void 0||e.toolScope==="all"?[]:["--tool-scope",e.toolScope],...e.agentSession===!0?["--agent-session"]:[]],env:{...e.accessToken===void 0?{}:{LINZUMI_MCP_ACCESS_TOKEN:e.accessToken},...e.devServices===void 0?{}:{LINZUMI_DEV_SERVICES_SCOPE:e.devServices.scope,LINZUMI_DEV_SERVICES_OWNER_PID:String(e.devServices.ownerPid)},ELECTRON_RUN_AS_NODE:"1"}}}function gn(e){return["-c",`mcp_servers.${e.name}.command=${JSON.stringify(e.command)}`,"-c",`mcp_servers.${e.name}.args=${fs(e.args)}`,...Object.entries(e.env).flatMap(([n,t])=>["-c",`mcp_servers.${e.name}.env.${n}=${JSON.stringify(t)}`])]}function fs(e){return`[${e.map(n=>JSON.stringify(n)).join(", ")}]`}var pa=["# 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 Ut(){return["-c",'mcp_oauth_credentials_store="file"',"-c",'cli_auth_credentials_store="file"']}var ps=5*6e4;var ms=(()=>{let e=process.env.LINZUMI_CODEX_WS_KEEPALIVE_MS;if(e===void 0)return 2e4;let n=Number.parseInt(e,10);return Number.isInteger(n)&&n>0?n:2e4})();function hs(e){let n=e;if(typeof n.ping=="function"&&n.readyState===WebSocket.OPEN)try{n.ping()}catch{}}function Ft(e,n={}){return["app-server",..._s(n),"--listen",e]}var ys=["-c","features.apps=false"];function _s(e){return[...ys,...Ut(),...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(n=>gn(n)),...e.modelProvider===void 0?[]:xs(e.modelProvider)]}function xs(e){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(([n,t])=>["-c",`model_providers.${e.id}.http_headers.${n}=${JSON.stringify(t)}`]),...Object.entries(e.envHttpHeaders??{}).flatMap(([n,t])=>["-c",`model_providers.${e.id}.env_http_headers.${n}=${JSON.stringify(t)}`]),"-c",`model_provider=${JSON.stringify(e.id)}`]}async function Vt(e,n=t=>new un.default(t)){let t=await ws(e,n),r=new Map,o=new Set,s=new Set,i=[],a=new Set,c={nextId:1,closeError:void 0},d=u=>{let g=new Error(u);r.forEach(l=>l.reject(g)),r.clear()},f=setInterval(()=>hs(t),ms);f.unref?.();let p=u=>{if(clearInterval(f),d(u),c.closeError===void 0){c.closeError=new Error(u);for(let g of a)zt(g,c.closeError);a.clear()}};return t.addEventListener("close",()=>p("codex app-server websocket closed")),t.addEventListener("error",()=>p("codex app-server websocket closed")),t.addEventListener("message",u=>{let g=String(u.data),l=vs(g);if(l!==void 0){if(Se({provider:"codex-app-server",captureKind:bs(l),rawText:g,rawValue:{message:l}}),"id"in l&&("result"in l||"error"in l)){let x=r.get(l.id);x!==void 0&&(r.delete(l.id),x.resolve(l));return}if("id"in l&&typeof l.method=="string"){ks(t,l,s);return}if(!("id"in l)&&typeof l.method=="string"){let x=l;o.size===0?i.push(x):o.forEach(C=>Dt(C,x))}}}),await Os(t,r),{request:(u,g)=>{let l=c.nextId;return c.nextId+=1,Gt(t,r,g===void 0?{jsonrpc:"2.0",id:l,method:u}:{jsonrpc:"2.0",id:l,method:u,params:g})},notify:(u,g)=>{let l=g===void 0?{jsonrpc:"2.0",method:u}:{jsonrpc:"2.0",method:u,params:g};Se({provider:"codex-app-server",captureKind:"outgoing",rawText:JSON.stringify(l),rawValue:{message:l}}),t.send(JSON.stringify(l))},onNotification:u=>{o.add(u),i.splice(0).forEach(g=>Dt(u,g))},onRequest:u=>{s.add(u)},onClose:u=>{if(c.closeError!==void 0){zt(u,c.closeError);return}a.add(u)},close:()=>{clearInterval(f),t.close()}}}function bs(e){return"id"in e&&("result"in e||"error"in e)?"response":"id"in e&&typeof e.method=="string"?"request":"notification"}function vs(e){let n=String(e);try{let t=JSON.parse(n);if(!$(t))throw new Error("codex app-server sent non-object JSON-RPC message");return t}catch(t){ce("codex.app_server_frame_malformed",{purpose:"codex.app_server",message:t instanceof Error?t.message:String(t),payload:n.slice(0,512),payloadChars:n.length});return}}function Dt(e,n){try{e(n)}catch(t){ce("codex.notification_callback_failed",{purpose:"codex.app_server",method:n.method,message:t instanceof Error?t.message:String(t)})}}function zt(e,n){try{e(n)}catch(t){ce("codex.close_callback_failed",{purpose:"codex.app_server",message:t instanceof Error?t.message:String(t)})}}async function ws(e,n,t=2e3){let r=Date.now()+t,o;for(;Date.now()<=r;){let s=n(e);try{return await Cs(s),s}catch(i){o=i instanceof Error?i:new Error(String(i)),Ss(s)}}throw o??new Error("websocket open failed")}function Ss(e){try{e.close()}catch{}}async function ks(e,n,t){try{if(t.size===0){e.send(JSON.stringify({jsonrpc:"2.0",id:n.id,error:{code:-32601,message:`unhandled Codex app-server request: ${n.method}`}}));return}for(let r of t){let o=await r(n);if(o!==void 0){e.send(JSON.stringify({jsonrpc:"2.0",id:n.id,result:o}));return}}e.send(JSON.stringify({jsonrpc:"2.0",id:n.id,error:{code:-32601,message:`unhandled Codex app-server request: ${n.method}`}}))}catch(r){e.send(JSON.stringify({jsonrpc:"2.0",id:n.id,error:{code:-32e3,message:r instanceof Error?r.message:String(r)}}))}}async function Os(e,n){let t=await Gt(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"};Se({provider:"codex-app-server",captureKind:"outgoing",rawText:JSON.stringify(r),rawValue:{message:r}}),e.send(JSON.stringify(r))}function Gt(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}),Se({provider:"codex-app-server",captureKind:"request",rawText:JSON.stringify(t),rawValue:{message:t}}),e.send(JSON.stringify(t))})}function Cs(e){return new Promise((n,t)=>{e.addEventListener("open",()=>n(),{once:!0}),e.addEventListener("error",()=>t(new Error("websocket open failed")),{once:!0})})}var Na=300*1e3;function $e(e){let n=new URL(e);switch(n.protocol){case"ws:":n.protocol="http:";break;case"wss:":n.protocol="https:";break;case"http:":case"https:":break;default:throw new Error("--api-url must be ws://, wss://, http://, or https://")}return n.pathname="",n.search="",n.hash="",n.toString().replace(/\/$/,"")}function mn(e){let n=e.fetchImpl??fetch,t=$e(e.kandanUrl),r=e.authMode==="personal-agent-delegation"?"/api/v2/personal-agent-mcp":"/api/v2/local-runner-mcp",o=e.operatingMode??"text",s=async(i,a,c,d={})=>{let f=new URL(a,t),p={...c,operating_mode:o},y={method:i,headers:{authorization:`Bearer ${e.accessToken}`},...d.signal===void 0?{}:{signal:d.signal}};if(i==="GET")for(let[M,J]of Object.entries(p))J!=null&&f.searchParams.set(M,String(J));else y.headers={...y.headers,"content-type":"application/json"},y.body=JSON.stringify(p);let u=await n(f,y),g=await u.json(),l=$(g)?g:void 0;if(l===void 0)throw new Error(`Linzumi MCP API returned non-object JSON from ${a}`);if(u.ok&&l.ok===!0)return l;let x=typeof l.error=="string"?l.error:`HTTP ${u.status}`,C=typeof l.detail=="string"?l.detail:void 0;throw new Error(`Linzumi MCP API ${a} failed: ${x}${C===void 0?"":` detail=${C}`}`)};return{validateAuth:()=>s("GET",`${r}/validate`,{}),issueOnboardingDiscoveryToken:i=>s("POST",`${r}/onboarding-discovery-token`,i),getMessage:i=>s("GET",`${r}/message`,i),getThread:i=>s("GET",`${r}/thread`,i),getThreadTranscript:i=>s("GET",`${r}/thread-transcript`,i),getChannel:i=>s("GET",`${r}/channel`,i),searchWorkspace:i=>s("GET",`${r}/search`,i),askWorkspace:i=>s("POST",`${r}/ask`,i),aboutMe:i=>s("GET",`${r}/about-me`,i),webSearch:i=>s("GET",`${r}/web-search`,i),fetchUrl:i=>s("GET",`${r}/fetch-url`,i),listUiTargets:i=>s("GET",`${r}/ui-targets`,i),openUi:i=>s("POST",`${r}/open-ui`,i),getCodingJobMetadata:i=>s("GET",`${r}/coding-job-metadata`,i),listProjects:i=>s("GET",`${r}/projects`,i),getProjectTasks:i=>s("GET",`${r}/project-tasks`,i),createProjectTask:i=>s("POST",`${r}/project-tasks/create`,i),updateProjectTask:i=>s("POST",`${r}/project-tasks/update`,i),deleteProjectTask:i=>s("POST",`${r}/project-tasks/delete`,i),addProjectTaskDependency:i=>s("POST",`${r}/project-tasks/add-dependency`,i),removeProjectTaskDependency:i=>s("POST",`${r}/project-tasks/remove-dependency`,i),getCallTranscript:i=>s("GET",`${r}/call-transcript`,i),renameCodingJob:i=>s("POST",`${r}/coding-job-title`,i),upsertCodingJobPlan:(i,a)=>s("POST",`${r}/coding-job-plan`,i,a),replaceCodingJobPlanSteps:i=>s("POST",`${r}/coding-job-plan/steps`,i),updateCodingJobPlanStep:i=>s("POST",`${r}/coding-job-plan/step`,i),linkCodingJobPullRequest:i=>s("POST",`${r}/coding-job-primary-pr`,i),listVaultSecrets:i=>s("GET",`${r}/vault-secrets`,i),noteProjectDirectory:i=>s("POST",`${r}/discovered-project`,i),noteAgentConversation:i=>s("POST",`${r}/discovered-conversation`,i),noteOnboardingDiscoveryStatus:i=>s("POST",`${r}/discovery-status`,i),sendChannelMessage:i=>s("POST",`${r}/channel-message`,i),editMessage:i=>s("POST",`${r}/message/edit`,i),agentReply:i=>s("POST",`${r}/agent-reply`,i),agentTurnProgress:i=>s("POST",`${r}/agent-turn-progress`,i),agentListCodingJobs:i=>s("GET",`${r}/agent/coding-jobs`,i),agentStartCodingJob:i=>s("POST",`${r}/agent/start-coding-job`,i),agentInterruptCodingJob:i=>s("POST",`${r}/agent/interrupt-coding-job`,i),agentSendCodingJobMessage:i=>s("POST",`${r}/agent/send-coding-job-message`,i),agentReadCodingJobThread:i=>s("GET",`${r}/agent/coding-job-thread`,i),agentResolveJobApproval:i=>s("POST",`${r}/agent/resolve-job-approval`,i),agentArchiveCodingJob:i=>s("POST",`${r}/agent/archive-coding-job`,i),agentUnarchiveCodingJob:i=>s("POST",`${r}/agent/unarchive-coding-job`,i),agentSetThreadStatus:i=>s("POST",`${r}/agent/set-thread-status`,i),agentCreateChannel:i=>s("POST",`${r}/agent/create-channel`,i),agentRenameChannel:i=>s("POST",`${r}/agent/rename-channel`,i),agentArchiveChannel:i=>s("POST",`${r}/agent/archive-channel`,i),agentUnarchiveChannel:i=>s("POST",`${r}/agent/unarchive-channel`,i),agentAddReaction:i=>s("POST",`${r}/agent/add-reaction`,i),agentRemoveReaction:i=>s("POST",`${r}/agent/remove-reaction`,i),agentPinMessage:i=>s("POST",`${r}/agent/pin-message`,i),agentUnpinMessage:i=>s("POST",`${r}/agent/unpin-message`,i),prepareMessageUploads:i=>s("POST",`${r}/message-uploads/prepare`,i),attachMessageFiles:i=>s("POST",`${r}/message-files/attach`,i),prepareCustomEmoji:i=>s("POST",`${r}/custom-emoji/prepare`,i),renameCustomEmoji:i=>s("POST",`${r}/custom-emoji/rename`,i),sendThreadReply:i=>s("POST",`${r}/thread-reply`,i),sendDm:i=>s("POST",`${r}/dm`,i),dmOwner:i=>s("POST",`${r}/dm-owner`,i),getVaultValues:i=>s("POST",`${r}/vault-values`,i)}}import{existsSync as Es,mkdirSync as za,readFileSync as Ps,renameSync as Fa,rmSync as Va,writeFileSync as Ga}from"node:fs";import{homedir as Ts}from"node:os";import{dirname as Wa,join as As}from"node:path";function Rs(){return As(Ts(),".linzumi","auth.json")}function hn(e,n=Rs()){if(!Es(n))return;let t=Is(Ps(n,"utf8")),r=$e(e),o=t.local_codex_runner?.[r];if(!(o===void 0||o.access_token.trim()==="")&&!(o.expires_at!==void 0&&Date.parse(o.expires_at)<=Date.now()))return{accessToken:o.access_token,kandanBaseUrl:r,issuedAt:o.issued_at,expiresAt:o.expires_at}}function Is(e){let n=JSON.parse(e);if(typeof n!="object"||n===null||Array.isArray(n))throw new Error("Kandan auth cache must contain a JSON object");let t=n,r=t.local_codex_runner,o=t.personal_agent_delegation;if(r!==void 0&&(typeof r!="object"||r===null||Array.isArray(r)))throw new Error("Kandan auth cache local_codex_runner must be an object");if(o!==void 0&&(typeof o!="object"||o===null||Array.isArray(o)))throw new Error("Kandan auth cache personal_agent_delegation must be an object");return{version:1,local_codex_runner:js(r),personal_agent_delegation:Ms(o)}}function Ms(e){if(typeof e!="object"||e===null||Array.isArray(e))return;let n=e.access_token,t=e.issued_at,r=e.expires_at;if(!(typeof n!="string"||typeof t!="string"))return{access_token:n,issued_at:t,expires_at:typeof r=="string"?r:void 0}}function js(e){if(!(typeof e!="object"||e===null||Array.isArray(e)))return Object.fromEntries(Object.entries(e).flatMap(([n,t])=>{if(typeof t!="object"||t===null||Array.isArray(t))return[];let r=t.access_token,o=t.issued_at,s=t.expires_at;return typeof r!="string"||typeof o!="string"?[]:[[n,{access_token:r,issued_at:o,expires_at:typeof s=="string"?s:void 0}]]}))}function Bt(e){let n=Ns(e);if(!(n===void 0||n===""))return{itemKey:_(e.itemId)??_(e.item_id)??_(A(e.item)?.id)??"assistant-message",turnId:_(e.turnId)??_(e.turn_id)??_(A(e.turn)?.id),delta:n}}function qt(e){let n=Wt(e);if(!(n===void 0||n===""))return{itemKey:_(e.itemId)??_(e.item_id)??_(A(e.item)?.id)??"reasoning",turnId:_(e.turnId)??_(e.turn_id)??_(A(e.turn)?.id),delta:n}}function Ns(e){return Wt(e)}function Wt(e){let n=e.delta;return typeof n=="string"?n:$(n)?_(n.text)??_(n.content)??_(n.delta)??_(n.message):_(e.text)??_(e.content)??_(e.message)}function Kt(e){let n=e.channelSession;return{...n.model===void 0?{}:{model:n.model},...n.reasoningEffort===void 0?{}:{reasoningEffort:n.reasoningEffort},...e.fast===!0?{serviceTier:"fast"}:{},...n.codexEnvironmentId===void 0?{}:{environmentId:n.codexEnvironmentId},approvalPolicy:Zt(n.approvalPolicy,n.sandbox,{sandboxedNeverDefault:n.sandboxedApprovalNeverDefault}),...n.sandbox===void 0?{}:{sandbox:n.sandbox}}}function Ht(e){let n=e.channelSession;return{cwd:e.cwd,...n.model===void 0?{}:{model:n.model},...n.reasoningEffort===void 0?{}:{effort:n.reasoningEffort},...e.fast===!0?{serviceTier:"fast"}:{},...n.codexEnvironmentId===void 0?{}:{environmentId:n.codexEnvironmentId},approvalPolicy:Zt(n.approvalPolicy,n.sandbox,{sandboxedNeverDefault:n.sandboxedApprovalNeverDefault}),...n.sandbox===void 0?{}:{sandboxPolicy:Ls(n.sandbox,e.cwd)}}}function Js(e,n,t){let r=t?.sandboxedNeverDefault===!0&&n==="workspace-write";switch(e){case void 0:case"default":return r?"never":"on-request";case"never":return n==="danger-full-access"||r?"never":"on-request";case"on-request":case"on-failure":return e;default:throw new Error(`unsupported Codex approval policy: ${e}`)}}function Zt(e,n,t){let r=Js(e,n,t);return r==="on-failure"?"on-request":r}function Ls(e,n){switch(e){case"danger-full-access":return{type:"dangerFullAccess"};case"read-only":return{type:"readOnly",access:{type:"fullAccess"},networkAccess:!1};case"workspace-write":return{type:"workspaceWrite",writableRoots:[n],readOnlyAccess:{type:"fullAccess"},networkAccess:!1,excludeTmpdirEnvVar:!1,excludeSlashTmp:!1};default:throw new Error(`unsupported Codex sandbox mode: ${e}`)}}var yn={mcpAuthFileContents:"LINZUMI_CLOUD_MCP_AUTH_JSON",llmProxyToken:"LINZUMI_CLOUD_LLM_PROXY_TOKEN"};function Xt(e){let n;try{n=JSON.parse(Buffer.from(e,"base64").toString("utf8"))}catch{throw new Error("invalid guest cloud turn config payload (not base64 JSON)")}if(typeof n!="object"||n===null||Array.isArray(n))throw new Error("invalid guest cloud turn config payload");let t=n;for(let[r,o]of[["codexVersion",t.codexVersion],["sandbox",t.sandbox],["approvalPolicy",t.approvalPolicy],["kandanUrl",t.kandanUrl],["cwd",t.cwd]])if(typeof o!="string"||o==="")throw new Error(`invalid guest cloud turn config payload (${r} missing)`);if(!Array.isArray(t.input))throw new Error("invalid guest cloud turn config payload (input)");if(typeof t.appServerPort!="number"||!Number.isInteger(t.appServerPort))throw new Error("invalid guest cloud turn config payload (appServerPort)");return t}var ne="/home/agent",$s=`${ne}/.linzumi-provisioned`;var _n="/dev/shm/linzumi",gd=`${_n}/codex`,md=`${_n}/mcp-auth.json`;var hd=`${_n}/codex.env`;var vd=`${ne}/cloud-supervisor.mjs`,Yt=`${ne}/mcp-server.mjs`,xn=`${ne}/.secrets`,bn=`${xn}/mcp-auth.json`,Ue=`${ne}/.codex`,Qt=`${Ue}/linzumi-thread-map.json`;var vn=`${ne}/.turn-heartbeats`,er=5e3,Us=/^[A-Za-z0-9-]{8,64}$/;function wn(e){if(!Us.test(e))throw new Error(`invalid cloud turn nonce: ${JSON.stringify(e.slice(0,80))}`)}var qs=3e4,Ws=200;function le(e){return e.replace(/\bsmk_[A-Za-z0-9._-]+/g,"smk_[REDACTED]").replace(/\b(sk|lz|tok|bearer)[-_][A-Za-z0-9._-]{8,}/gi,"$1_[REDACTED]")}var ze;function Ks(e){ze=e;try{ue(rr(e),{recursive:!0}),ke(e,"")}catch{ze=void 0}}function z(e){let n=`${JSON.stringify(e)}
13
+ `;if(process.stdout.write(n),ze!==void 0)try{zs(ze,n)}catch{}}function De(e,n,t){z({phase:"exit",ok:e,reason:le(n),turnMs:t})}function Hs(e){return{id:e.id,name:e.name,baseUrl:e.baseUrl,envKey:e.envKey,wireApi:e.wireApi,...e.httpHeaders===void 0?{}:{httpHeaders:{...e.httpHeaders}},...e.envHttpHeaders===void 0?{}:{envHttpHeaders:{...e.envHttpHeaders}}}}function Zs(e){if(e.sandbox!=="danger-full-access")throw new Error(`guest cloud turn requires sandbox "danger-full-access", got ${JSON.stringify(e.sandbox)}`);if(e.approvalPolicy!=="never")throw new Error(`guest cloud turn requires approvalPolicy "never", got ${JSON.stringify(e.approvalPolicy)}`)}function Xs(e,n=Ue){let t=$t({command:"node",argsPrefix:[Yt],kandanUrl:e.kandanUrl,authFilePath:bn,ownerUsername:e.ownerUsername,operatingMode:"text",cwd:e.cwd,threadId:e.threadId,agentSession:!0});return Ft(`ws://127.0.0.1:${e.appServerPort}`,{model:e.model,reasoningEffort:e.reasoningEffort,mcpServers:[t],...e.modelProvider===void 0?{}:{modelProvider:Hs(e.modelProvider)},env:{CODEX_HOME:n,...or(e)}})}function or(e){let n=process.env[yn.llmProxyToken];return e.modelProvider===void 0||n===void 0||n===""?{}:{[e.modelProvider.envKey]:n}}function Ys(e,n){let t=process.env[yn.mcpAuthFileContents];if(t===void 0||t==="")throw new Error("guest cloud turn missing MCP auth-cache (LINZUMI_CLOUD_MCP_AUTH_JSON)");ue(e,{recursive:!0,mode:448}),nr(e,448),ke(n,t,{mode:384}),nr(n,384)}function Qs(e){try{tr(e,{recursive:!0,force:!0})}catch{}}var ei=64;function sr(e){try{let n=JSON.parse(Fs(e,"utf8"));if(typeof n!="object"||n===null||Array.isArray(n))return{};let t={};for(let[r,o]of Object.entries(n))typeof o=="string"&&o!==""&&(t[r]=o);return t}catch{return{}}}function ni(e,n,t){try{let r=sr(e);delete r[n];let o=Object.entries(r),s=o.slice(Math.max(0,o.length-(ei-1)));s.push([n,t]),ue(rr(e),{recursive:!0}),ke(e,JSON.stringify(Object.fromEntries(s)))}catch{}}var ti=new Set(["turn/completed","turn/failed","turn/aborted"]),ri=2e3;function ir(e){let n=A(A(e)?.item);if(n===void 0||_(n.type)!=="agentMessage")return"";let t=_(n.text);return t!==void 0&&t!==""?t:(pn(n.content)??[]).map(s=>{let i=A(s);if(i===void 0)return;let a=_(i.type);if(!(a!=="text"&&a!=="output_text"&&a!=="input_text"))return _(i.text)??_(i.content)}).filter(s=>s!==void 0&&s!=="").join(`
14
+
15
+ `)}function oi(e){let n=A(A(e)?.item);if(n===void 0)return!1;let t=_(n.type);if(t!=="mcpToolCall"&&t!=="dynamicToolCall"&&t!=="collabAgentToolCall"||_(n.status)!=="completed"||n.error!==void 0&&n.error!==null||n.success===!1)return!1;let r=_(n.tool)??"";return(r.split("__").pop()??r)==="linzumi_agent_reply"}var si=15e3;function ii(e){return/already_replied|no_active_asker_binding/i.test(e)}async function ai(e){let n=e.body.trim();if(n==="")return"skipped";let t=hn(e.kandanUrl,e.mcpAuthPath);if(t===void 0)throw new Error("reply relay: no agent token in the guest MCP auth file");let r=async(s,i)=>{let a=new AbortController,c=setTimeout(()=>a.abort(),si);try{return await fetch(s,{...i,signal:a.signal})}finally{clearTimeout(c)}},o=mn({kandanUrl:e.kandanUrl,accessToken:t.accessToken,operatingMode:"text",fetchImpl:r});try{return await o.agentReply({body:n}),"posted"}catch(s){let i=s instanceof Error?s.message:String(s);if(ii(i))return"already";throw new Error(`reply relay failed: ${i}`)}}var di=900,ci=1e4,li=3,ui=8e3;function fi(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 pi(e){return async n=>{let t=hn(e.kandanUrl,e.mcpAuthPath);if(t===void 0)throw new Error("turn progress: no agent token in the guest MCP auth file");let r=async(s,i)=>{let a=new AbortController,c=setTimeout(()=>a.abort(),ci);try{return await fetch(s,{...i,signal:a.signal})}finally{clearTimeout(c)}};return mn({kandanUrl:e.kandanUrl,accessToken:t.accessToken,operatingMode:"text",fetchImpl:r}).agentTurnProgress(n)}}function gi(e){let n=Date.now,t=e.flushIntervalMs??di,r=e.log??z,o=e.post??pi({kandanUrl:e.kandanUrl,mcpAuthPath:e.mcpAuthPath}),s=new Map,i=!1,a=0,c=0,d,f,p=!1,y=!1,u=(v,h)=>{let w=s.get(v);if(w!==void 0)return w;let k={kind:h,text:"",snapshotIndex:0,state:"streaming",dirty:!1,lastFlushMs:0,ackedState:void 0};return s.set(v,k),k},g=v=>v.state==="streaming"?v.lastFlushMs+t:0,l=async(v,h)=>{let w=h.text,k=h.state;h.dirty=!1,h.snapshotIndex+=1,h.lastFlushMs=n();try{return await o({stream_key:`${e.streamKeyPrefix}:${v}`,item_id:v,kind:h.kind,body:w,stream_state:k,snapshot_index:h.snapshotIndex,...e.sourceSeq===void 0?{}:{source_seq:e.sourceSeq}}),c+=1,a=0,h.ackedState=k,!0}catch(b){a+=1;let S=b instanceof Error?b.message:String(b);return fi(S)?(y=!0,i=!0,r({phase:"progress",outcome:"permanent_reject",message:le(S)}),!1):(r({phase:"progress",outcome:"post_failed",consecutive_failures:a,message:le(S)}),a>=li&&(i=!0,r({phase:"progress",outcome:"disabled"})),!1)}},x=async()=>{for(;;){if(i)return;let v=n(),h,w=!1;for(let[k,b]of s){if(!b.dirty||b.text==="")continue;let S=g(b);S<=v?(await l(k,b),w=!0):h=h===void 0?S:Math.min(h,S)}if(!w){h!==void 0&&(clearTimeout(f),f=setTimeout(C,Math.max(10,h-n())),f.unref?.());return}}};function C(){i||p||d!==void 0||(d=x().catch(()=>{}).finally(()=>{d=void 0}))}return{onNotification:v=>{try{let h=A(v.params)??{};if(v.method==="item/agentMessage/delta"){let w=Bt(h);if(w!==void 0){let k=u(w.itemKey,"codex_assistant_message");k.text+=w.delta,k.dirty=!0,C()}return}if(v.method==="item/reasoning/textDelta"){let w=qt(h);if(w!==void 0){let k=u(w.itemKey,"codex_reasoning");k.text+=w.delta,k.dirty=!0,C()}return}if(v.method==="item/completed"){let w=A(h.item),k=_(w?.type),b=_(w?.id);if(b===void 0)return;if(k==="agentMessage"){let S=ir(v.params),m=u(b,"codex_assistant_message");S!==""&&(m.text=S),m.state="completed",m.dirty=!0,C()}else if(k==="reasoning"){let S=s.get(b);S!==void 0&&(S.state="completed",S.dirty=!0,C())}}}catch(h){r({phase:"progress",outcome:"notification_error",message:le(h instanceof Error?h.message:String(h))})}},finish:async v=>{try{let h=n()+(e.finishDeadlineMs??ui),w=()=>new Promise(b=>setTimeout(b,Math.max(0,h-n())).unref?.());p=!0,clearTimeout(f),d!==void 0&&await Promise.race([d,w()]);for(let b of s.values())b.state==="streaming"&&b.text!==""&&(b.state=v);let k=250;for(;;){let b=[...s.entries()].filter(([,m])=>m.text!==""&&m.state!==m.ackedState);if(b.length===0||y||n()>=h)break;let S=!1;for(let[m,T]of b){if(y||n()>=h)break;await l(m,T)||(S=!0)}S&&!y&&n()<h&&await new Promise(m=>setTimeout(m,k))}r({phase:"progress",outcome:"finished",frames_posted:c,disabled:i})}catch(h){r({phase:"progress",outcome:"finish_error",message:le(h instanceof Error?h.message:String(h))})}}}}function mi(e){if(e==="item/commandExecution/requestApproval"||e==="item/fileChange/requestApproval")return{decision:"approved"}}async function hi(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 Vt(e)}catch(r){if(Date.now()>=n)throw r;await new Promise(o=>setTimeout(o,Ws))}}}var yi=360*60*1e3;function _i(e,n){try{for(let t of Vs(e))try{let r=Fe(e,t);n-Gs(r).mtimeMs>yi&&Bs(r)}catch{}}catch{}}function xi(e,n,t=er){wn(n);let r=Fe(e,`${n}.beat`),o=()=>{try{ke(r,`${Date.now()}
16
+ `)}catch{}};try{ue(e,{recursive:!0})}catch{}_i(e,Date.now()),o();let s=setInterval(o,t);return s.unref?.(),()=>{clearInterval(s);try{tr(r,{force:!0})}catch{}}}function bi(e,n,t){try{wn(n),ue(e,{recursive:!0}),ke(Fe(e,`${n}.exit`),`${JSON.stringify({phase:"exit",ok:t.ok,reason:le(t.reason),turnMs:t.turnMs})}
17
+ `)}catch{}}async function vi(e,n={}){let t=n.now??Date.now,r=n.secretsDir??xn,o=n.mcpAuthPath??bn,s=n.codexHome??Ue,i=n.threadMapPath??Qt,a=t();Zs(e);let c=e.turnNonce!==void 0&&e.turnNonce!==""?xi(n.heartbeatDir??vn,e.turnNonce,n.heartbeatIntervalMs):void 0,d,f=()=>{try{d?.pid!==void 0&&d.kill("SIGINT")}catch{}};try{Ys(r,o);let p=Xs(e,s),y=`ws://127.0.0.1:${e.appServerPort}`;n.spawnCodex===void 0&&ue(s,{recursive:!0,mode:448}),d=n.spawnCodex?n.spawnCodex(p):Ds("codex",p,{cwd:e.cwd,env:{PATH:process.env.PATH??"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",...process.env.HOME===void 0?{}:{HOME:process.env.HOME},CODEX_HOME:s,...or(e)},stdio:["ignore","ignore","inherit"],detached:!1});let u=await hi(y,a+qs,d);try{u.onRequest?.(m=>mi(m.method));let g=e.codexThreadId,l;if(g!==void 0&&g!==""){let m=sr(i)[g];m!==void 0&&("error"in await u.request("thread/resume",{threadId:m,...Kt({cwd:e.cwd,channelSession:{model:e.model,reasoningEffort:e.reasoningEffort,approvalPolicy:e.approvalPolicy,sandbox:e.sandbox}})})||(l=m))}if(l===void 0){let m=await u.request("thread/start",{cwd:e.cwd,serviceName:"kandan-cloud-agent",personality:"pragmatic",approvalPolicy:e.approvalPolicy,...e.model===void 0?{}:{model:e.model},...e.sandbox===void 0?{}:{sandbox:e.sandbox}});if("error"in m)throw new Error(`thread/start failed: ${m.error.message}`);let T=_(A(A(m.result)?.thread)?.id);if(T===void 0)throw new Error("thread/start response did not include thread.id");l=T,g!==void 0&&g!==""&&ni(i,g,l),z({phase:"thread",mode:"started"})}else z({phase:"thread",mode:"resumed"});let x="",C=!1,M=!1,J=gi({kandanUrl:e.kandanUrl,mcpAuthPath:o,streamKeyPrefix:e.turnNonce!==void 0&&e.turnNonce!==""?`cloud:${e.turnNonce}`:`cloud:${a}`,...e.sourceSeq===void 0?{}:{sourceSeq:e.sourceSeq},post:n.progressPost,flushIntervalMs:n.progressFlushIntervalMs,now:t}),v,h=new Promise((m,T)=>{v={resolve:m,reject:T}}),w=m=>{if(M){z({phase:"codex-exit",benign:!0});return}setTimeout(()=>{M||v?.reject(m())},n.postTerminalGraceMs??ri).unref?.()};u.onNotification(m=>{if(z({phase:"notification",method:m.method}),J.onNotification(m),m.method==="item/completed"){let K=ir(m.params);K!==""&&(x=K),oi(m.params)&&(C=!0)}if(!ti.has(m.method))return;M=!0;let T=m.method==="turn/completed";v?.resolve({ok:T,reason:m.method==="turn/completed"?"turn completed":`turn terminal: ${m.method}`,turnMs:t()-a})}),u.onClose?.(m=>w(()=>new Error(`codex connection closed before a turn terminal: ${m?.message??"connection closed"}`))),d?.once("exit",m=>w(()=>new Error(`codex app-server process exited mid-turn (code ${m})`)));let k=await u.request("turn/start",{threadId:l,input:e.input,...Ht({cwd:e.cwd,channelSession:{model:e.model,reasoningEffort:e.reasoningEffort,approvalPolicy:e.approvalPolicy,sandbox:e.sandbox}})});if("error"in k)throw new Error(`turn/start failed: ${k.error.message}`);let b;try{b=await h}catch(m){throw await J.finish("failed"),m}let S=b;if(b.ok){let m=n.relayReply??ai;try{let T=await m({kandanUrl:e.kandanUrl,mcpAuthPath:o,body:x});z({phase:"reply",relay:T,reply_tool_call_seen:C,captured_chars:x.length}),T==="skipped"&&!C&&(S={ok:!1,reason:"turn completed but no reply was posted: codex produced no visible output to relay and never called linzumi_agent_reply",turnMs:b.turnMs})}catch(T){let K=T instanceof Error?T.message:String(T);z({phase:"reply",relay:"failed",reason:K}),S={ok:!1,reason:K,turnMs:b.turnMs}}}return await J.finish(S.ok?"completed":"failed"),S}finally{u.close()}}finally{c?.(),f(),Qs(r)}}async function ar(e=process.argv,n={}){let t=e[2];if(t==="--selftest")return z({phase:"selftest",ok:!0,node:process.version}),0;if(t===void 0||t==="")return De(!1,"missing turn config argv[2]",0),1;let r;try{r=Xt(t)}catch(a){return De(!1,`config decode failed: ${a instanceof Error?a.message:String(a)}`,0),1}let o=n.heartbeatDir??vn;Ks(Fe(o,"last-turn.debug.jsonl")),z({phase:"boot",turn_nonce:r.turnNonce??null,node:process.version});let s=n.runTurn??vi,i=a=>{r.turnNonce!==void 0&&r.turnNonce!==""&&bi(o,r.turnNonce,a)};try{let a=await s(r);return i(a),De(a.ok,a.reason,a.turnMs),a.ok?0:1}catch(a){let c=a instanceof Error?a.message:String(a);return i({ok:!1,reason:c,turnMs:0}),De(!1,c,0),1}}function dr(e){let n=!1,t=()=>{n||(n=!0,process.exit(e))};try{process.stdout.write("",t)}catch{t()}setTimeout(t,1e3).unref?.()}ar(process.argv).then(e=>{dr(e)}).catch(e=>{process.stdout.write(`${JSON.stringify({phase:"exit",ok:!1,reason:e instanceof Error?e.message:String(e),turnMs:0})}
18
+ `),dr(1)});
@@ -0,0 +1,14 @@
1
+ import { createRequire } from 'node:module';
2
+ const require = createRequire(import.meta.url);
3
+ import{randomUUID as ae}from"node:crypto";import{mkdir as de,realpath as fe,writeFile as ce}from"node:fs/promises";import{homedir as K}from"node:os";import{join as U}from"node:path";function x(e){return e===void 0?{BS_PRIVATE_NESTED_SOME_NONE:0}:e!==null&&e.BS_PRIVATE_NESTED_SOME_NONE!==void 0?{BS_PRIVATE_NESTED_SOME_NONE:e.BS_PRIVATE_NESTED_SOME_NONE+1|0}:e}function _(e){if(e===null||e.BS_PRIVATE_NESTED_SOME_NONE===void 0)return e;let t=e.BS_PRIVATE_NESTED_SOME_NONE;if(t!==0)return{BS_PRIVATE_NESTED_SOME_NONE:t-1|0}}function h(e,t){let r=e.length,i=new Array(r),n=0;for(let s=0;s<r;++s){let o=e[s],m=t(o);m!==void 0&&(i[n]=_(m),n=n+1|0)}return i.length=n,i}function g(e,t,r){return e!==void 0?r(_(e)):t}function k(e,t){if(e!==void 0)return x(t(_(e)))}function v(e,t){if(e!==void 0)return t(_(e))}function E(e,t){return e!==void 0?_(e):t}function H(e,t){let r=e[t];if(typeof r=="object"&&r!==null&&!Array.isArray(r))return r}function f(e,t){let r=e[t];if(typeof r=="string")return r}function T(e,t){let r=e[t];if(Array.isArray(r))return r}function G(e){return h(e,t=>{if(typeof t!="object"||t===null||Array.isArray(t))return;if(f(t,"type")==="text")return f(t,"text")}).join(`
4
+ `)}function R(e,t,r,i){return e+":"+t+":"+r+":"+i}function M(e,t){let r=t.split(":"),i=r[0],n=r[1],s=r[2];if(i===void 0||n===void 0||s===void 0||!(i===e&&n!==""&&s!==""&&r.length>=4))return;let o=r.slice(3,r.length).join(":");if(o!=="")return{keySessionId:n,keyTurnId:s,keyItemId:o}}function C(e,t){return{threadId:e,threadTitle:void 0,nodes:t,hasMore:!1,cursor:void 0,budget:void 0,session:void 0}}function ee(e,t,r){return R("codex",e,t,r)}function te(e){if(e===void 0)return"system_notice";switch(e){case"agentMessage":return"assistant_message";case"commandExecution":return"command_execution";case"fileChange":return"file_change";case"collabAgentToolCall":case"dynamicToolCall":case"mcpToolCall":return"tool_call";case"reasoning":return"reasoning";case"plan":case"subAgentActivity":return"agent_status";case"terminalInput":return"terminal_input";case"userMessage":return"user_message";default:return"system_notice"}}function j(e){return h(e,t=>{if(typeof t=="string")return t})}function re(e){let t=f(e,"type");if(t===void 0)return"";switch(t){case"collabAgentToolCall":return E(f(e,"prompt"),"");case"commandExecution":return E(f(e,"aggregatedOutput"),"");case"dynamicToolCall":return g(T(e,"contentItems"),"",G);case"fileChange":return g(T(e,"changes"),[],n=>h(n,s=>{if(typeof s=="object"&&s!==null&&!Array.isArray(s))return f(s,"path")})).join(`
5
+ `);case"mcpToolCall":return g(v(H(e,"result"),n=>T(n,"content")),"",G);case"reasoning":let r=g(T(e,"summary"),[],j),i=g(T(e,"content"),[],j);return r.concat(i).filter(n=>n!=="").join(`
6
+
7
+ `);case"subAgentActivity":return E(f(e,"agentPath"),"");case"agentMessage":case"plan":case"terminalInput":return E(f(e,"text"),"");case"userMessage":return g(T(e,"content"),"",G);default:return""}}function ne(e){return new Date(e).toISOString()}function q(e,t){let r=[];return t.turns.forEach(i=>{i.items.forEach(n=>{let s=n.item,o;o=typeof s=="object"&&s!==null&&!Array.isArray(s)?s:{};let m=E(f(o,"id"),"");r.push({kind:te(f(o,"type")),seq:r.length+1|0,at:k(n.completedAtMs,ne),harness:"codex",body:re(o),structured:n.item,actor:void 0,attachments:[],sourceSeq:void 0,streamKey:ee(t.harnessSessionId,i.turnId,m)})})}),C(e,r)}var B=["codex","claude-code","pi","opencode"];function se(e){return"rehydrated-"+e.toString()}var oe="rehydrated-marker";function ue(e,t){switch(e){case"agent_status":return"[status] "+t;case"approval_request":return"[approval] "+t;case"command_execution":return`[command]
8
+ `+t;case"error":return"[error] "+t;case"file_change":return`[file change]
9
+ `+t;case"system_notice":return"[notice] "+t;case"terminal_input":return`[terminal input]
10
+ `+t;case"tool_call":return`[tool call]
11
+ `+t;case"tool_result":return`[tool result]
12
+ `+t;default:return"["+e+"] "+t}}function W(e,t,r,i){let n={};n.type="text",n.text=i;let s={};s.role=e,s.content=[n];let o={};return o.type=e,o.session_id=t,o.uuid=r,o.message=s,o}function le(e,t,r,i,n){return"[linzumi cross-harness resume] This session continues linzumi thread "+r+", "+("imported from the "+e+" session "+t+". ")+(i.toString()+" activity records follow verbatim; ")+(n.toString()+" reasoning records were redacted ")+"(provider-private reasoning is never forged across harnesses)."}function V(e,t){let r={contents:void 0},i=a=>{if(r.contents===void 0){r.contents=a;return}};e===""?i("the caller-bound target session identity must be non-empty"):e.includes(":")&&i("the caller-bound target session identity must be colon-free"),r.contents===void 0&&t.nodes.length===0&&i("an empty page rehydrates nothing - the source session must carry content");let n={contents:void 0},s={contents:void 0};t.nodes.forEach(a=>{if(r.contents===void 0){let l=s.contents;l!==void 0&&a.seq<=l?i("page nodes must ascend by seq"):s.contents=a.seq}if(r.contents===void 0){let l=h(B.map(d=>d),d=>k(v(a.streamKey,c=>M(d,c)),c=>[d,c.keySessionId]))[0];if(l!==void 0){let d=l[1],c=l[0];if(c==="claude-code")i("the page was minted by the claude harness - same-harness resume rides the native session store, never rehydration");else{let b=n.contents;b!==void 0&&(b[0]!==c||b[1]!==d)?i("page mixes two harness session identities"):n.contents=[c,d]}}else i("node carries no parseable minted stream_key identity of a catalog harness")}if(r.contents!==void 0)return;let u=a.structured;if(!(typeof u=="object"&&u!==null&&!Array.isArray(u)))return i("node carries no verbatim native passthrough")});let o=r.contents,m=n.contents;if(o!==void 0)return{TAG:"Error",_0:o};if(m===void 0)return{TAG:"Error",_0:"page carries no source harness identity"};let A=m[1];if(A===e)return{TAG:"Error",_0:"the caller-bound target session identity must be distinct from the source session identity"};let O=m[0],y=[],S=[],p={contents:0};t.nodes.forEach(a=>{let u=a.kind;if(u==="reasoning"){p.contents=p.contents+1|0;return}let l;switch(u){case"assistant_message":l=["assistant",a.body];break;case"user_message":l=["user",a.body];break;default:l=["assistant",ue(u,a.body)]}let d=l[0],c=se(a.seq);y.push({sourceSeq:a.seq,sourceKind:u,uuid:c,role:d}),S.push(W(d,e,c,l[1]))});let w=[W("user",e,oe,le(O,A,t.threadId,S.length,p.contents))].concat(S);return{TAG:"Ok",_0:{session:{harnessSessionId:e,messages:w},report:{sourceHarness:O,sourceSessionId:A,sessionMessageCount:w.length,redactedReasoningCount:p.contents,emissions:y}}}}function me(e,t){if(e.TAG!=="Ok")throw new Error(`${t}: ${JSON.stringify(e._0)}`);return e._0}function pe(e,t=K()){let r=e.replace(/[^a-zA-Z0-9]/g,"-");return U(t,".claude","projects",r)}async function Pe({activity:e,codexThreadId:t,kandanThreadId:r,targetSessionId:i=ae(),cwd:n,home:s=K()}){try{let o=(e?.turns??[]).filter(u=>u.items.length>0);if(o.reduce((u,l)=>u+l.items.length,0)===0)return{ok:!1,failure:"no recorded harness activity to carry over (the failover journal is empty)"};let A=q(r,{harnessSessionId:t,turns:o}),O=me(V(i,A),"claude rehydration refused the exported page"),y=n;try{y=await fe(n)}catch{return{ok:!1,failure:`the thread's working directory is not resolvable: ${n}`}}let S=pe(y,s);await de(S,{recursive:!0});let p=U(S,`${i}.jsonl`),I=null,w=Date.now(),a=O.session.messages.map((u,l)=>{let d={parentUuid:I,isSidechain:!1,userType:"external",cwd:y,sessionId:i,version:"0.0.0-linzumi-cross-harness-failover",type:u.type,message:u.message,uuid:u.uuid,timestamp:new Date(w+l).toISOString()};return I=u.uuid,d});return await ce(p,a.map(u=>JSON.stringify(u)).join(`
13
+ `)+`
14
+ `),{ok:!0,targetSessionId:i,sessionFile:p,transpiledItemCount:O.report.emissions.length,redactedReasoningCount:O.report.redactedReasoningCount}}catch(o){return{ok:!1,failure:o instanceof Error?o.message:String(o)}}}export{pe as claudeSessionStoreDir,Pe as transpileAndSeedClaudeSession};