@linzumi/cli 1.0.233 → 1.0.234
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/impl-res/index.js +1 -1
- package/dist/impl-ts/index.js +2 -2
- package/package.json +1 -1
package/README.md
CHANGED
package/dist/impl-res/index.js
CHANGED
|
@@ -653,7 +653,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
653
653
|
`),process.exit(1))}function KA(e,t,r,n,i,o,a){let s=new Date().toISOString(),l=s+"-pid-"+process.pid.toString()+"-runner-"+t,d=c=>xD(c,e.contentMode,0,void 0),u=Object.fromEntries([["pid",process.pid],["argv",GCe(process.argv).map(d)],["runnerId",d(t)],["cwd",d(r)],["kandanUrl",d(n)],["workspaceSlug",Je(i,null,d)],["threadProcess",Je(o,null,d)],["fast",a],["startedAt",d(s)]]);return RCe(e,l,u)}import*as _K from"node:fs";import*as gK from"node:url";import*as bs from"node:path";import*as bK from"node:module";var MCe=[["linux","x64",{triple:"x86_64-unknown-linux-musl",packageName:"@openai/codex-linux-x64"}],["linux","arm64",{triple:"aarch64-unknown-linux-musl",packageName:"@openai/codex-linux-arm64"}],["android","x64",{triple:"x86_64-unknown-linux-musl",packageName:"@openai/codex-linux-x64"}],["android","arm64",{triple:"aarch64-unknown-linux-musl",packageName:"@openai/codex-linux-arm64"}],["darwin","x64",{triple:"x86_64-apple-darwin",packageName:"@openai/codex-darwin-x64"}],["darwin","arm64",{triple:"aarch64-apple-darwin",packageName:"@openai/codex-darwin-arm64"}],["win32","x64",{triple:"x86_64-pc-windows-msvc",packageName:"@openai/codex-win32-x64"}],["win32","arm64",{triple:"aarch64-pc-windows-msvc",packageName:"@openai/codex-win32-arm64"}]];function vD(e,t){return q(MCe.find(r=>r[0]===e?r[1]===t:!1),r=>r[2])}function DCe(e){try{return bK.createRequire(import.meta.url).resolve(e)}catch{return}}function $Ce(e){let t=ta(e);return t.TAG==="Ok"?t._0:[]}function JA(){return{platform:process.platform,arch:process.arch,fileExists:e=>_K.existsSync(e),listDirectory:$Ce,resolveModulePath:DCe,moduleDir:bs.dirname(gK.fileURLToPath(import.meta.url))}}function wD(e,t,r){let n=t;for(;;){let i=n,o=bs.join(...[i,"node_modules"].concat(e.split("/")));if(r(bs.join(o,"package.json")))return o;let a=bs.dirname(i);if(a===i)return;n=a}}function TD(e,t){let r=t.resolveModulePath(e+"/package.json");return r!==void 0?bs.dirname(r):wD(e,t.moduleDir,t.fileExists)}function jCe(e,t,r){let i=r.platform==="win32"?"codex.exe":"codex",o=bs.join(e,t),s=[bs.join(o,"codex",i),bs.join(o,"bin",i),bs.join(o,i)].find(l=>r.fileExists(l));return s!==void 0?s:r.listDirectory(o).map(l=>bs.join(o,l,i)).find(l=>r.fileExists(l))}function FCe(e){let t=vD(e.platform,e.arch);if(t===void 0)return;let r=[],n=TD(t.packageName,e);n!==void 0&&r.push(bs.join(n,"vendor"));let i=TD("@openai/codex",e);return i!==void 0&&r.push(bs.join(i,"vendor")),Xe(r,void 0,(o,a)=>o!==void 0?o:jCe(a,t.triple,e))}function NCe(e){let t=TD("@openai/codex",e);if(t===void 0)return;let r=Rt(bs.join(t,"package.json"));if(r.TAG!=="Ok")return;let n;try{n=JSON.parse(r._0)}catch{n=void 0}if(n===void 0||typeof n!="object"||n===null||Array.isArray(n))return;let i=n.version;if(i!==void 0&&typeof i=="string"&&i.trim()!=="")return i.trim()}var qCe=new RegExp("(\\d+\\.\\d+\\.\\d+)");function ZA(e){let t=Qs(e,["--version"],1e4,1048576);if(t.TAG!=="Ok")return;let r=qCe.exec(t._0);if(r!=null)return G(r.slice(1)[0],n=>n)}function zCe(e,t){return e!==void 0&&t!==void 0?e===t?{TAG:"Match",version:e}:{TAG:"Mismatch",pathVersion:e,pinnedVersion:t}:{TAG:"Unverified",pathVersion:e,pinnedVersion:t}}function LCe(e){switch(e.TAG){case"Match":return"match";case"Mismatch":return"mismatch";case"Unverified":return"unverified"}}var AD="LINZUMI_ALLOW_HARNESS_MISMATCH",pK={contents:!1};var UCe="Warning: the Codex engine bundled with @linzumi/cli could not be located in its install (@openai/codex platform binary missing). Falling back to `codex` from PATH - the engine version may not match this CLI release. Pass --codex-bin <path> to pin an engine explicitly.\n";function BCe(e){if(!pK.contents)return pK.contents=!0,e(UCe)}function hK(e,t){return"the codex engine bundled with @linzumi/cli is missing from this install and the `codex` on PATH is version "+e+", but this CLI release pins engine "+t+". "+("Running a mismatched engine breaks the wire protocol (codex "+t+" vocabulary), so refusing to start. ")+("Fix: reinstall the CLI (a fresh `npx -y @linzumi/cli@latest` restores the bundled engine), pass --codex-bin <path> to pin an engine deliberately, or set "+AD+"=1 to accept the skew.")}function WCe(e,t){return"Warning: proceeding with the PATH codex "+e+" despite the CLI pinning engine "+t+" ("+AD+`=1). Engine/CLI version skew can break the wire protocol.
|
|
654
654
|
`}function HCe(e,t){}function QA(e,t,r,n,i,o){let a=o!==void 0?o:HCe;if(e!==void 0)return{TAG:"Ok",_0:{codexBin:e,source:"ExplicitFlag"}};let s=FCe(t);if(s!==void 0){let f={};return f.codex_bin_path=s,f.codex_bin_source="bundled",a("codex.binary.resolved",f),{TAG:"Ok",_0:{codexBin:s,source:"Bundled"}}}BCe(r);let l=NCe(t),d=l!==void 0?n("codex"):void 0,u=zCe(d,l),c={};switch(c.codex_bin_path="codex",c.codex_bin_source="path-fallback",c.harness_version_check=LCe(u),u.TAG){case"Match":c.harness_version=u.version;break;case"Mismatch":c.path_harness_version=u.pathVersion,c.pinned_harness_version=u.pinnedVersion;break;case"Unverified":c.path_harness_version=Je(u.pathVersion,null,f=>f),c.pinned_harness_version=Je(u.pinnedVersion,null,f=>f);break}switch(a("codex.binary.resolved",c),u.TAG){case"Mismatch":let f=u.pinnedVersion,p=u.pathVersion,m=i[AD];return m===void 0?{TAG:"Error",_0:hK(p,f)}:m!=="1"?{TAG:"Error",_0:hK(p,f)}:(r(WCe(p,f)),{TAG:"Ok",_0:{codexBin:"codex",source:"PathFallback"}});case"Match":case"Unverified":return{TAG:"Ok",_0:{codexBin:"codex",source:"PathFallback"}}}}var VCe="invalid --agent-replay-provider. Use auto, codex, or claude-code",CD="invalid --agent-replay-speed. Use immediate, realtime, <number>x, or <number>ms";function KCe(e){if(e===void 0)return{TAG:"Ok",_0:"Auto"};switch(e){case"":case"auto":return{TAG:"Ok",_0:"Auto"};case"claude-code":return{TAG:"Ok",_0:{TAG:"Selected",_0:"ClaudeCode"}};case"codex":return{TAG:"Ok",_0:{TAG:"Selected",_0:"Codex"}};default:return{TAG:"Error",_0:VCe}}}var JCe=new RegExp("^([0-9]+(?:\\.[0-9]+)?)x$"),ZCe=new RegExp("^([0-9]+)ms$");function yK(e,t){return G(e[t],r=>r)}function QCe(e){if(e===void 0)return{TAG:"Ok",_0:"Immediate"};switch(e){case"":case"immediate":return{TAG:"Ok",_0:"Immediate"};case"realtime":return{TAG:"Ok",_0:"Realtime"};default:let t=JCe.exec(e);if(t==null){let n=ZCe.exec(e);if(n==null)return{TAG:"Error",_0:CD};let i=G(yK(n,1),ii);return i!==void 0&&Number.isSafeInteger(i)&&i>=0?{TAG:"Ok",_0:{TAG:"FixedDelayMs",_0:i}}:{TAG:"Error",_0:CD}}let r=G(yK(t,1),ii);return r!==void 0&&isFinite(r)&&r>0?{TAG:"Ok",_0:{TAG:"SpeedMultiplier",_0:r}}:{TAG:"Error",_0:CD}}}function xK(e,t,r){if(e===void 0)return{TAG:"Ok",_0:void 0};let n=KCe(t),i=QCe(r);return n.TAG==="Ok"?i.TAG==="Ok"?{TAG:"Ok",_0:{fixturePath:e,provider:n._0,clockMode:i._0}}:{TAG:"Error",_0:i._0}:{TAG:"Error",_0:n._0}}function YA(e,t){let r=e[t];if(typeof r=="string")return r}function OD(e,t){let r=e[t];if(r!==void 0&&typeof r=="number"&&isFinite(r)&&Math.trunc(r)===r&&r>=0)return r|0}var YCe=["incoming","outgoing","notification","request","response","sdk-message","commander-push","session-marker"],XCe=new RegExp("(^|[_-])(token|secret|api[_-]?key|authorization|cookie|private[_-]?key|login[_-]?url)([_-]|$)","iu");function PD(e){if(e===null)return!0;if(Array.isArray(e))return e.every(PD);switch(typeof e){case"string":switch(e){case"$REDACTED":case"<REDACTED>":case"[REDACTED]":return!0;default:return!1}case"boolean":case"number":return!1;case"object":return Object.entries(e).every(t=>PD(t[1]))}}function GD(e,t){if(Array.isArray(e))return ra(e.map((r,n)=>[r,t+"["+n.toString()+"]"]),r=>GD(r[0],r[1]));if(e!==null&&typeof e==="object")return ra(Object.entries(e),r=>{let n=r[1],i=r[0],o=t+"."+i;return XCe.test(i)&&!PD(n)?o:GD(n,o)})}function eOe(e,t,r){if(typeof r=="object"&&r!==null&&!Array.isArray(r)){let n=OD(r,"schemaVersion"),i=YA(r,"provider"),o=YA(r,"captureKind"),a=OD(r,"ordinal"),s=OD(r,"offsetMs"),l=0;if(n===1&&i!==void 0&&o!==void 0&&a!==void 0&&s!==void 0){let d=r.captureMetadata,u=typeof d=="object"&&d!==null&&!Array.isArray(d)?d:void 0,c=G(u,p=>YA(p,"direction")),f=G(u,p=>YA(p,"requestMethod"));if(!YCe.includes(o))return{TAG:"Error",_0:e+":"+t.toString()+" captureKind is not supported"};switch(i){case"claude-code-sdk":return{TAG:"Ok",_0:{provider:"ClaudeCode",captureKind:o,ordinal:a,offsetMs:s,captureDirection:c,requestMethod:f,rawValue:r.rawValue}};case"codex-app-server":return{TAG:"Ok",_0:{provider:"Codex",captureKind:o,ordinal:a,offsetMs:s,captureDirection:c,requestMethod:f,rawValue:r.rawValue}};default:return{TAG:"Error",_0:e+":"+t.toString()+" provider is not supported"}}}else l=2;if(l===2)return{TAG:"Error",_0:e+":"+t.toString()+" replay record is invalid"}}return{TAG:"Error",_0:e+":"+t.toString()+" record must be a JSON object"}}function tOe(e,t){let r=[],n={contents:void 0};je(t.split(new RegExp("\\r?\\n")),o=>o).forEach((o,a)=>{let s=n.contents,l=o.trim();if(s!==void 0||l==="")return;let d;try{d={TAG:"Ok",_0:JSON.parse(o)}}catch(p){let m=N(p);d={TAG:"Error",_0:Oe(m).message}}if(d.TAG!=="Ok"){n.contents=e+":"+(a+1|0).toString()+" "+d._0;return}let u=d._0,c=GD(u,"$");if(c!==void 0){n.contents=e+":"+(a+1|0).toString()+" contains credential-like field "+c;return}let f=eOe(e,a+1|0,u);if(f.TAG!=="Ok"){n.contents=f._0;return}r.push(f._0)});let i=n.contents;return i!==void 0?{TAG:"Error",_0:i}:{TAG:"Ok",_0:{path:e,records:r}}}function SK(e){let t=Rt(e);return t.TAG==="Ok"?tOe(e,t._0):{TAG:"Error",_0:e+": "+t._0.message}}function TK(e,t){if(typeof t=="object")return{TAG:"Ok",_0:t._0};let r=e.records.some(i=>i.provider==="Codex"),n=e.records.some(i=>i.provider==="ClaudeCode");return r?n?{TAG:"Error",_0:"replay fixture contains both Codex and Claude records; pass --agent-replay-provider"}:{TAG:"Ok",_0:"Codex"}:n?{TAG:"Ok",_0:"ClaudeCode"}:{TAG:"Error",_0:"replay fixture contains no provider records"}}function ED(e){return e<=0?Promise.resolve():new Promise((t,r)=>{setTimeout(()=>t(),e)})}function vK(e){let t={contents:0};return{waitUntil:async n=>{let i=n-t.contents|0,o=i>0?i:0;if(t.contents=n>t.contents?n:t.contents,typeof e!="object")return e==="Immediate"?void 0:await ED(o);if(e.TAG!=="SpeedMultiplier")return await ED(e._0);let a=e._0;return await ED(Math.round(o/(a>.001?a:.001)))}}}import*as VJ from"node:path";import*as KJ from"node:child_process";import*as Wf from"node:path";function ID(e){return e?"true":"false"}import*as Fs from"node:fs";import*as Ar from"node:path";import*as CK from"node:child_process";function OK(e,t){}function EK(e){return e.entryPath}var nOe=new RegExp("[\\\\/]");function iOe(e){let t=e.split(nOe),r=n=>t.some(i=>i!==void 0?n(i):!1);return r(n=>n==="_npx")||r(n=>n.startsWith("dlx-"))?!0:e.includes(".bun"+Ar.sep+"install"+Ar.sep+"cache")}var MD="cannot fork thread runner without current CLI script path";function oOe(e,t){return e!==void 0&&e.trim()!==""?{TAG:"Ok",_0:Ar.isAbsolute(e)?e:Ar.resolve(t,e)}:{TAG:"Error",_0:MD}}function aOe(e){let t=Rt(Ar.join(e,"package.json"));if(t.TAG!=="Ok")return;let r;try{r=JSON.parse(t._0)}catch{r=void 0}if(r===void 0||typeof r!="object"||r===null||Array.isArray(r))return;let n=a=>{let s=r[a];return typeof s=="string"?s.trim():""},i=n("name"),o=n("version");if(!(i===""||o===""))return{name:i,version:o}}function sOe(e){let t=e;for(;;){let r=t,n=aOe(r);if(n!==void 0)return{dir:r,name:n.name,version:n.version};let i=Ar.dirname(r);if(i===r)return;t=i}}function XA(e,t){return wD(e,t,r=>Fs.existsSync(r))}function RD(e,t){let r=Rt(Ar.join(e,"package.json"));if(r.TAG!=="Ok")return[];let n;try{n=JSON.parse(r._0)}catch{n=void 0}if(n===void 0)return[];if(typeof n!="object"||n===null||Array.isArray(n))return[];let i=n[t];return i!==void 0?typeof i=="object"&&i!==null&&!Array.isArray(i)?Object.keys(i):[]:[]}function PK(e){let t=Ar.join(e,"node_modules"),r=ta(t);if(r.TAG!=="Ok")return[];let n=[];return r._0.forEach(i=>{if(!i.startsWith(".")){if(i.startsWith("@")){let o=ta(Ar.join(t,i));if(o.TAG!=="Ok")return;o._0.forEach(a=>{if(!a.startsWith(".")){n.push(Ar.join(t,i,a));return}});return}n.push(Ar.join(t,i))}}),n.filter(i=>Fs.existsSync(Ar.join(i,"package.json")))}function lOe(e,t,r,n){let i=[],o=new Set,a=new Set,s=d=>{if(!o.has(d)){o.add(d),RD(d,"dependencies").forEach(u=>{i.push(u)}),PK(d).forEach(s);return}};return s(e),(()=>{for(;;){let d=i.shift();if(d===void 0)return{TAG:"Ok",_0:void 0};if(a.has(d))continue;a.add(d);let u=XA(d,t);if(u!==void 0){let c=Ar.join(...[r].concat(d.split("/"))),f=Ee(Ve(Nt(Ar.dirname(c)),p=>p.message),()=>Ve(IT(u,c),p=>p.message));if(f.TAG!=="Ok")return{TAG:"Error",_0:f._0};s(u);continue}n.push(d)}})()}function AK(e){switch(e){case"HarnessMirrored":return"mirrored";case"HarnessAlreadyPresent":return"already-present";case"HarnessSourceMissing":return"source-missing";case"HarnessUnsupportedPlatform":return"unsupported-platform"}}function DD(){return".building-"+process.pid.toString()+"-"+Date.now().toString()}function GK(e,t,r){let n=Ar.join(...[r].concat(e.split("/")));if(Fs.existsSync(Ar.join(n,"package.json")))return{TAG:"Ok",_0:"HarnessAlreadyPresent"};let i=XA(e,t);if(i===void 0)return{TAG:"Ok",_0:"HarnessSourceMissing"};let o=n+DD(),a=Ee(Ee(Ve(Nt(Ar.dirname(n)),s=>s.message),()=>Ve(IT(i,o),s=>s.message)),()=>{let s=Yn(o,n);return s.TAG==="Ok"?{TAG:"Ok",_0:"HarnessMirrored"}:Fs.existsSync(Ar.join(n,"package.json"))?(pa(o),{TAG:"Ok",_0:"HarnessAlreadyPresent"}):{TAG:"Error",_0:s._0.message}});return a.TAG==="Ok"?{TAG:"Ok",_0:a._0}:(pa(o),{TAG:"Error",_0:a._0})}function IK(e,t,r,n){let i=vD(w(r,process.platform),w(n,process.arch));return i!==void 0?GK(i.packageName,e,t):{TAG:"Ok",_0:"HarnessUnsupportedPlatform"}}function dOe(e,t){let r=[],n=[],i=new Set,o=new Set,a=new Set,s=d=>{if(!i.has(d)){i.add(d),RD(d,"dependencies").forEach(u=>{n.push(u)}),RD(d,"optionalDependencies").forEach(u=>{if(a.has(u))return;if(a.add(u),XA(u,t)!==void 0){r.push(u);return}}),PK(d).forEach(s);return}};return s(e),(()=>{for(;;){let d=n.shift();if(d===void 0)return;if(!o.has(d)){o.add(d);let u=XA(d,t);u!==void 0&&s(u)}}})(),r.toSorted(of)}function RK(e,t,r){let n=[],i=[],o=dOe(e,t),a=0;for(;;){let s=a,l=o[s];if(l===void 0)return{TAG:"Ok",_0:{present:n,mirrored:i}};let d=GK(l,t,r);if(d.TAG!=="Ok")return{TAG:"Error",_0:d._0};switch(d._0){case"HarnessMirrored":n.push(l),i.push(l),a=s+1|0;continue;case"HarnessAlreadyPresent":n.push(l),a=s+1|0;continue;case"HarnessSourceMissing":case"HarnessUnsupportedPlatform":a=s+1|0;continue}}}function k0(e,t,r){let n=r!==void 0?r:5,i=ta(e);if(i.TAG!=="Ok")return;let o=i._0.filter(d=>d!==t).map(d=>{let u=oz(Ar.join(e,d)),c;return c=u.TAG==="Ok"?u._0:0,[d,c]}).toSorted((d,u)=>u[1]-d[1]),a=o.filter(d=>d[0].includes(".building-")),s=o.filter(d=>!d[0].includes(".building-"));a.concat(s.slice(Math.max(0,n-1|0),s.length)).forEach(d=>{pa(Ar.join(e,d[0]))})}function ux(e){let t=e;for(;;){let r=t,n=Ar.dirname(r);if(n===r)return e;if(Ar.basename(n)==="node_modules")return Ar.dirname(n);t=n}}function uOe(e,t,r,n){let i=IK(ux(e),Ar.join(r,"node_modules"),void 0,void 0);if(i.TAG==="Ok")switch(i._0){case"HarnessMirrored":let o={};return o.version=t,o.healedIntoReusedMirror=!0,n("worker_entry_harness_mirrored",o);case"HarnessSourceMissing":let a={};return a.version=t,a.reusedMirror=!0,n("worker_entry_harness_missing",a);case"HarnessAlreadyPresent":case"HarnessUnsupportedPlatform":return}else{let o={};return o.version=t,o.reusedMirror=!0,o.message=i._0,n("worker_entry_harness_missing",o)}}function cOe(e,t,r,n){let i=RK(e,ux(e),Ar.join(r,"node_modules"));if(i.TAG==="Ok"){i._0.mirrored.forEach(a=>{let s={};s.version=t,s.package=a,s.healedIntoReusedMirror=!0,n("worker_entry_sibling_mirrored",s)});return}let o={};o.version=t,o.reusedMirror=!0,o.message=i._0,n("worker_entry_sibling_mirror_failed",o)}function fOe(e,t,r,n){let i=Ve(Zi(e),S=>S.message);if(i.TAG!=="Ok")return{TAG:"Error",_0:i._0};let o=i._0,a=sOe(Ar.dirname(o));if(a===void 0)return{TAG:"Error",_0:"could not locate a package.json above the entry script at "+o};let s=P5(t),l=Q1(a.version),d=Ar.join(s,l),u=Ar.relative(a.dir,o),c=Ar.join(...[d,"node_modules"].concat(a.name.split("/"))),f=Ar.join(c,u),p=Ar.join(d,hb),m=S=>{let T={};T.entryPath=f,T.version=a.version,S&&(T.lostBuildRace=!0),r("worker_entry_mirror_reused",T)};if(Fs.existsSync(p)&&Fs.existsSync(f))return A1(d),uOe(a.dir,a.version,d,r),cOe(a.dir,a.version,d,r),m(!1),k0(s,l,void 0),{TAG:"Ok",_0:{TAG:"MirroredEntry",entryPath:f,originalEntryPath:e}};let h=d+DD(),_=Date.now(),g=[],b=Ar.join(...[h,"node_modules"].concat(a.name.split("/"))),y=Ee(Ee(Ee(Ee(Ee(Ee(Ve(Nt(Ar.dirname(b)),S=>S.message),()=>Ve(IT(a.dir,b),S=>S.message)),()=>lOe(a.dir,ux(a.dir),Ar.join(h,"node_modules"),g)),()=>IK(ux(a.dir),Ar.join(h,"node_modules"),void 0,void 0)),S=>{if(S==="HarnessSourceMissing"){let T={};T.version=a.version,T.reusedMirror=!1,r("worker_entry_harness_missing",T)}return Qe(RK(a.dir,ux(a.dir),Ar.join(h,"node_modules")),T=>[S,T.present])}),S=>{let T=S[1],v=S[0];return Qe(Ve(jn(Ar.join(h,hb),I5({name:a.name,version:a.version,mirroredFrom:a.dir,mirroredAt:new Date().toISOString(),codexHarnessMirror:AK(v)})),O=>O.message),()=>[v,T])}),S=>{n!==void 0&&n();let T=Yn(h,d);return T.TAG==="Ok"?{TAG:"Ok",_0:[S[0],S[1]]}:Fs.existsSync(p)&&Fs.existsSync(f)?(pa(h),m(!0),k0(s,l,void 0),{TAG:"Ok",_0:void 0}):{TAG:"Error",_0:T._0.message}});if(y.TAG==="Ok"){let S=y._0;if(S===void 0)return{TAG:"Ok",_0:{TAG:"MirroredEntry",entryPath:f,originalEntryPath:e}};let T={};return T.entryPath=f,T.from=a.dir,T.version=a.version,T.durationMs=Date.now()-_,T.skippedDependencies=g.map(v=>v),T.codexHarnessMirror=AK(S[0]),T.platformSiblings=S[1].map(v=>v),r("worker_entry_mirrored",T),k0(s,l,void 0),{TAG:"Ok",_0:{TAG:"MirroredEntry",entryPath:f,originalEntryPath:e}}}return pa(h),{TAG:"Error",_0:y._0}}function MK(e,t,r,n,i){let o=n!==void 0?n:OK;if(e===void 0||e.trim()==="")return;let a=oOe(e,t);if(a.TAG!=="Ok")return;let s=a._0;if(!iOe(s))return{TAG:"OriginalEntry",entryPath:s};let l=fOe(s,r,o,i);if(l.TAG==="Ok")return l._0;let d={};return d.originalEntryPath=s,d.message=l._0,o("worker_entry_mirror_failed",d),{TAG:"OriginalEntry",entryPath:s}}var kK=["node_modules","@linzumi","cli","bin","linzumi.js"];function DK(e){return t=>{let r=t.packageSpec,n=t.prefixDir;return new Promise((i,o)=>{let a=CK.spawn("npm",["install",r,"--prefix",n,"--no-audit","--no-fund","--loglevel","error"],{stdio:["ignore","ignore","pipe"]}),s={contents:""},l={contents:!1},d={contents:void 0},u=m=>{if(l.contents)return;l.contents=!0;let h=d.contents;h!==void 0&&clearTimeout(pe(h)),i(m)},c=setTimeout(()=>{ga(a,"SIGKILL"),u({TAG:"Error",_0:"npm install "+r+" timed out after "+e.toString()+"ms"})},e);c.unref(),d.contents=be(c);let f=a.stderr;f?.on("data",m=>{s.contents=s.contents+m.toString("utf8")}),a.on("error",m=>u({TAG:"Error",_0:m.message}));let p=()=>{let m=s.contents;return m.slice(Math.max(0,m.length-2e3|0),m.length)};a.once("close",(m,h)=>m==null?u({TAG:"Error",_0:"npm install "+r+" exited null: "+p()}):u(m!==0?{TAG:"Error",_0:"npm install "+r+" exited "+m.toString()+": "+p()}:{TAG:"Ok",_0:void 0}))})}}async function $K(e,t,r,n){let i=r!==void 0?r:OK,o=G5(t),a=Q1(e),s=Ar.join(o,a),l=Ar.join(...[s].concat(kK)),d=Ar.join(s,hb),u=T=>{let v={};v.entryPath=l,v.version=e,T&&(v.lostBuildRace=!0),i("version_install_reused",v)};if(Fs.existsSync(d)&&Fs.existsSync(l))return A1(s),u(!1),k0(o,a,3),{TAG:"Ok",_0:{entryPath:l,reused:!0}};let c=s+DD(),f=Date.now(),p={};p.version=e,p.stagingRoot=c,i("version_install_started",p);let m=T=>{pa(c);let v={};return v.version=e,v.message=T,i("version_install_failed",v),{TAG:"Error",_0:T}},h=Nt(c);if(h.TAG!=="Ok")return m(h._0.message);let _=await n({prefixDir:c,packageSpec:"@linzumi/cli@"+e});if(_.TAG!=="Ok")return m(_._0);let g=Ar.join(...[c].concat(kK));if(!Fs.existsSync(g))return m("installed @linzumi/cli@"+e+" but its entry script is missing at "+g);let b=jn(Ar.join(c,hb),R5({name:"@linzumi/cli",version:e,installedAt:new Date().toISOString()}));if(b.TAG!=="Ok")return m(b._0.message);let y=Yn(c,s);if(y.TAG!=="Ok")return Fs.existsSync(d)&&Fs.existsSync(l)?(pa(c),u(!0),k0(o,a,3),{TAG:"Ok",_0:{entryPath:l,reused:!0}}):m(y._0.message);let S={};return S.entryPath=l,S.version=e,S.durationMs=Date.now()-f,i("version_installed",S),k0(o,a,3),{TAG:"Ok",_0:{entryPath:l,reused:!1}}}var mOe={armDeadline:(e,t)=>{setTimeout(e,t).unref()}};function pOe(e,t){process.on(e,t)}function hOe(e,t){process.off(e,t)}var _Oe={registerSignal:pOe,unregisterSignal:hOe};async function gOe(e){let t,r=0;for(;t===void 0&&r<e.length;){let i=e[r];if(i!==void 0){let o=await i();o.TAG==="Ok"?r=r+1|0:t=o._0}else r=r+1|0}let n=t;return n!==void 0?{TAG:"OrderedFailed",_0:n}:"OrderedDone"}async function FK(e,t,r,n){let i=n!==void 0?n:mOe,o=new Promise((l,d)=>i.armDeadline(()=>l("DeadlineFired"),t)),a=gOe(je([e.stopAccepting,e.interruptInFlightTurns,e.checkpointCurrentTurn,e.flushInboundQueues,e.flushOutbox],l=>l)),s=await Promise.race([a,o]);return typeof s=="object"?{TAG:"Error",_0:s._0}:s==="OrderedDone"?(r("runner.drain_complete",Object.fromEntries([])),{TAG:"Ok",_0:{drained:!0,timedOut:!1}}):(r("runner.drain_timed_out",Object.fromEntries([["deadlineMs",t]])),{TAG:"Ok",_0:{drained:!1,timedOut:!0}})}var bOe="SIGUSR2",yOe=15*6e4,xOe=120*6e4,SOe=1440*6e4,$D=2*6e4;function ek(e,t){if(e===void 0)return t;let r=e.trim();if(r==="")return t;let n=Number(r);return isFinite(n)&&n>0?Math.max(Math.floor(n),1e3):t}function jD(e){return ek(e.LINZUMI_UPDATE_RESTART_DRAIN_MAX_WAIT_MS,yOe)}function NK(e,t,r){let n=r!==void 0?r:!1,i=t!==void 0?t:jD(e),o=n?ek(e.LINZUMI_UPDATE_RESTART_DRAIN_OVERLAP_HARD_CAP_MS,SOe):ek(e.LINZUMI_UPDATE_RESTART_DRAIN_HARD_CAP_MS,xOe);return Math.max(o,i)}function qK(e){return ek(e.LINZUMI_UPDATE_RESTART_DRAIN_ACTIVITY_IDLE_MS,$D)}var TOe="this computer is updating its Linzumi runner",uJe=TOe+" to a new version - nothing was started. Retry in a few minutes once the update finishes.";var cJe=15*6e4;var zK="this computer restarted its Linzumi runner for an update",fJe=zK+" after waiting for this job past the drain timeout - the job was interrupted. Send your message again to continue.",mJe=zK+" while this job was waiting on your approval - the approval prompt was interrupted. Send your message again and answer the approval prompt to continue.";function LK(e,t,r){return e==="SIGTERM"&&t?r!=="win32":!1}function vOe(e,t){return setInterval(e,t)}function wOe(e){clearInterval(e)}var AOe={scheduleRepeating:vOe,cancelRepeating:wOe};function kOe(e,t,r,n,i,o){if(e>=r)return{TAG:"ForceExit",cause:"absolute_cap",idleMs:q(i,s=>Math.max(0,n-s))};if(e<t)return"KeepWaiting";if(i===void 0)return{TAG:"ForceExit",cause:"no_liveness_signal",idleMs:void 0};let a=n-i;return a>=w(o,$D)?{TAG:"ForceExit",cause:"silence",idleMs:a}:"KeepWaiting"}function COe(e){let t=w(e.scheduler,AOe),r=w(e.now,()=>Date.now()),n=w(e.pollMs,2e3),i=Math.max(w(e.hardCapMs,e.maxWaitMs),e.maxWaitMs),o=w(e.waitingLogIntervalMs,3e4),a={contents:!1},s={contents:!1},l={contents:void 0},d=()=>{let m=l.contents;if(m!==void 0){t.cancelRepeating(pe(m)),l.contents=void 0;return}},u=()=>{let m=e.hooks.inFlightTurns;return m!==void 0?m():[]},c=m=>m.harness+":"+m.threadId+":"+w(m.turnId,""),f=m=>m.map(h=>h.threadId);return{requestDrain:m=>{if(a.contents)return e.log("runner.update_restart_drain_request_ignored",Object.fromEntries([["trigger",m]]));a.contents=!0;let h=r(),_=e.hooks.isWaitEligible,g=_!==void 0?_():!0;e.log("runner.update_restart_drain_started",Object.fromEntries([["trigger",m],["maxWaitMs",e.maxWaitMs],["hardCapMs",i],["activityIdleMs",w(e.activityIdleMs,$D)],["waitEligible",g]])),e.hooks.beginDraining();let b=T=>{s.contents=!0,d();let v=r()-h;T||e.log("runner.drain_completed",Object.fromEntries([["duration_ms",v]])),e.hooks.exitViaDrain(T,v)};if(!g||e.hooks.isQuiescent())return b(!1);let y={contents:u()},S={contents:h};e.log("runner.drain_waiting",Object.fromEntries([["in_flight_turn_count",y.contents.length],["thread_ids",f(y.contents)],["waited_ms",0]])),l.contents=be(t.scheduleRepeating(()=>{let T=r()-h,v=u(),O=new Set(v.map(c));if(y.contents.forEach(k=>{if(O.has(c(k)))return;e.log("runner.drain_turn_completed",Object.fromEntries([["thread_id",k.threadId],["turn_id",w(q(k.turnId,U=>U),null)],["engine",k.harness],["remaining",v.length],["waited_ms",T]]));let I=e.hooks.onTurnCompleted;if(I!==void 0)return I(k)}),y.contents=v,e.hooks.isQuiescent())return e.log("runner.update_restart_drain_quiesced",Object.fromEntries([["waitedMs",T]])),b(!1);let A=e.hooks.lastActivityAtMs,C=kOe(T,e.maxWaitMs,i,r(),A!==void 0?A():void 0,e.activityIdleMs);if(typeof C!="object")return r()-S.contents>=o?(S.contents=r(),e.log("runner.drain_waiting",Object.fromEntries([["in_flight_turn_count",v.length],["thread_ids",f(v)],["waited_ms",T],["past_soft_cap",T>=e.maxWaitMs]]))):void 0;{let k=C.cause,I=C.idleMs;s.contents=!0,d();let U=u();e.log("runner.drain_timeout_forced_kill",Object.fromEntries([["waited_ms",T],["max_wait_ms",e.maxWaitMs],["hard_cap_ms",i],["cause",k],["idle_ms",w(q(I,D=>D),null)],["turn_ids",U.map(D=>w(q(D.turnId,V=>V),null))],["thread_ids",f(U)]])),e.log("runner.update_restart_drain_max_wait_forced",Object.fromEntries([["maxWaitMs",e.maxWaitMs],["waitedMs",T]]));let F=e.hooks.publishForcedKillTerminalStates;(F!==void 0?F(U):Promise.resolve({TAG:"Ok",_0:void 0})).then(D=>{D.TAG!=="Ok"&&e.log("runner.drain_forced_kill_state_publish_failed",Object.fromEntries([["message",D._0]])),e.hooks.exitViaDrain(!0,T)});return}},n))},cancelDrain:m=>!a.contents||s.contents?!1:(d(),a.contents=!1,e.log("runner.update_restart_drain_cancelled",Object.fromEntries([["reason",m]])),!0),stop:()=>d()}}function UK(e){let t=e.signals,r=t!==void 0?t:[w(e.signal,bOe)],n=w(e.signalSeam,_Oe),i=COe(e.drain),o=r.map(a=>{let s=()=>i.requestDrain(a);return n.registerSignal(a,s),[a,s]});return{uninstall:()=>{o.forEach(a=>n.unregisterSignal(a[0],a[1])),i.stop()},requestDrain:a=>i.requestDrain(a),cancelDrain:a=>i.cancelDrain(a)}}var BK="runner.thread_worker_sigterm_deferred_to_drain";function C0(e){return e!==void 0?pe(e):null}function Bf(e){return e==="Default"?"default":"plan"}function O0(e){if(e===void 0)return{TAG:"Ok",_0:void 0};switch(e){case"default":return{TAG:"Ok",_0:"Default"};case"plan":return{TAG:"Ok",_0:"Plan"};default:return{TAG:"Error",_0:"unsupported Codex collaboration mode: "+e}}}function WK(e,t){return t!==void 0?t:e}function POe(e,t){if(e.TAG!=="Ok")return{TAG:"Error",_0:e._0};let r=e._0;if(r.TAG!=="ResultReply")return{TAG:"Error",_0:t+" failed: "+r.message};let n=r._0;return typeof n=="object"&&n!==null&&!Array.isArray(n)?{TAG:"Ok",_0:n}:{TAG:"Error",_0:t+" response did not include an object result"}}function HK(e){try{let t=JSON.stringify(e);if(t===void 0)return{TAG:"Error",_0:"collaboration-mode payload was not JSON serializable"};try{return{TAG:"Ok",_0:JSON.parse(t)}}catch{return{TAG:"Error",_0:"collaboration-mode payload was not JSON serializable"}}}catch{return{TAG:"Error",_0:"collaboration-mode payload was not JSON serializable"}}}var GOe={};async function VK(e,t){let r=HK(GOe);return r.TAG==="Ok"?POe(await e.request(t,r._0),t):{TAG:"Error",_0:r._0}}async function IOe(e,t){let r=await VK(e,"collaborationMode/list");if(r.TAG!=="Ok")return{TAG:"Error",_0:r._0};let n=r._0.data;if(n===void 0)return{TAG:"Error",_0:"collaborationMode/list response did not include data"};if(!Array.isArray(n))return{TAG:"Error",_0:"collaborationMode/list response did not include data"};let i=Bf(t),o=ra(n,s=>{if(typeof s!="object"||s===null||Array.isArray(s))return;let l=s.mode;if(typeof l=="string"&&l===i)return s});if(o===void 0)return{TAG:"Error",_0:"Codex app-server does not advertise "+i+" mode"};let a=o.reasoning_effort;return a!==void 0?a===null?{TAG:"Ok",_0:void 0}:typeof a=="string"?{TAG:"Ok",_0:a}:{TAG:"Error",_0:"collaborationMode/list "+i+" mode included invalid reasoning_effort"}:{TAG:"Error",_0:"collaborationMode/list "+i+" mode included invalid reasoning_effort"}}async function ROe(e,t){if(t!==void 0){let l=t.trim();return l===""?{TAG:"Error",_0:"known Codex model must be a non-empty string"}:{TAG:"Ok",_0:l}}let r=await VK(e,"model/list");if(r.TAG!=="Ok")return{TAG:"Error",_0:r._0};let n=r._0.data;if(n===void 0)return{TAG:"Error",_0:"model/list response did not include data"};if(!Array.isArray(n))return{TAG:"Error",_0:"model/list response did not include data"};let i=je(n,l=>{if(typeof l!="object"||l===null||Array.isArray(l))return;if(l.isDefault===!0)return l});if(i.length!==1)return{TAG:"Error",_0:"model/list did not advertise exactly one valid default model"};let a=i[0].model;if(a===void 0)return{TAG:"Error",_0:"model/list did not advertise exactly one valid default model"};if(typeof a!="string")return{TAG:"Error",_0:"model/list did not advertise exactly one valid default model"};let s=a.trim();return s===""?{TAG:"Error",_0:"model/list did not advertise exactly one valid default model"}:{TAG:"Ok",_0:s}}async function KK(e,t,r,n){let i=await IOe(e,t);if(i.TAG!=="Ok")return{TAG:"Error",_0:i._0};let o=await ROe(e,n);if(o.TAG!=="Ok")return{TAG:"Error",_0:o._0};let a=C0(gn(i._0,r));return HK({mode:Bf(t),settings:{model:o._0,reasoning_effort:a,developer_instructions:null}})}function MOe(e,t){}var ND="linzumi.thread_runner";function JK(e,t){return e!==void 0&&e.trim()!==""?{TAG:"Ok",_0:Wf.isAbsolute(e)?e:Wf.resolve(t,e)}:{TAG:"Error",_0:MD}}function DOe(e){return["--require","-r","--import","--loader","--experimental-loader"].includes(e)}function $Oe(e){return["--require=","-r=","--import=","--loader=","--experimental-loader="].some(t=>e.startsWith(t))}function jOe(e){let t=[],r=0;for(;r<e.length;){let n=e[r];if(n!==void 0){let i=DOe(n),o=$Oe(n);if(i){let a=e[r+1|0];a!==void 0&&(t.push(n),t.push(a)),r=r+2|0}else o&&t.push(n),r=r+1|0}else r=r+1|0}return t}function qD(e,t,r){return jOe(r).concat([e].concat(t))}function Ja(e,t){return t!==void 0?t!==""?[e,t]:[]:[]}function ZK(e){let t=e.codingJob;if(t===void 0||typeof t!="object"||t===null||Array.isArray(t))return;let r=t.mcpToken;if(r===void 0||typeof r!="string")return;let n=r.trim();if(n!=="")return n}function QK(e){let t=i=>{let o=i.join(",");if(o!=="")return o},r=e.codexModelProvider,n=e.runtimeDefaults;return[["--api-url",e.kandanUrl],["--cwd",e.cwd],["--codex-bin",e.codexBin],Ja("--workspace",e.workspaceSlug),Ja("--log-file",e.logFile),Ja("--debug-trace-dir",q(e.debugTrace,i=>i.dir)),Ja("--debug-trace-content",G(e.debugTrace,i=>i.contentMode)),e.fast?["--fast"]:[],Ja("--allowed-cwd",t(e.allowedCwds)),Ja("--forward-port",t(e.allowedForwardPorts.map(i=>i.toString()))),Ja("--code-server-bin",e.codeServerBin),Ja("--model",G(e.runtimeDefaults,i=>i.model)),Ja("--reasoning-effort",G(e.runtimeDefaults,i=>i.reasoningEffort)),Ja("--collaboration-mode",G(e.runtimeDefaults,i=>q(i.collaborationMode,Bf))),Ja("--sandbox",G(e.runtimeDefaults,i=>i.sandbox)),Ja("--approval-policy",G(e.runtimeDefaults,i=>i.approvalPolicy)),r!==void 0?["--model-provider",r.provider,"--llm-proxy-base-url",r.llmProxyBaseUrl]:[],e.vmExecution?["--vm-execution"]:[],Ja("--execution-mode",e.executionMode),Ja("--egress-mode",e.egressMode),Ja("--project-public-id",e.projectPublicId),Ja("--golden-image-id",e.goldenImagePublicId),["--multi-agent-jobs-eligible",ID(e.multiAgentJobsEligible)],["--multi-agent-jobs-enabled",ID(e.multiAgentJobs)],n!==void 0?n.allowPortForwardingByDefault?["--allow-port-forwarding-by-default"]:["--no-allow-port-forwarding-by-default"]:[]].flat()}function YK(e){let t=[],r=0;for(;r<e.length;){let n=e[r];n!==void 0?n==="--token"?(t.push("--token"),t.push("<redacted>"),r=r+2|0):(t.push(n),r=r+1|0):r=r+1|0}return t}function XK(e,t,r){let n=e.mcpAuthority,i;i=typeof n!="object"?n==="WorkerManagedRunner"?["managed-runner","",""]:["static-runner","",""]:n.TAG==="WorkerPersonalAgent"?["personal-agent",n._0,""]:["coding-job","",n._0];let o=[["LINZUMI_THREAD_RUNNER_ROLE","thread"],["LINZUMI_THREAD_RUNNER_KANDAN_THREAD_ID",e.kandanThreadId],["LINZUMI_THREAD_RUNNER_TOKEN",e.token],["LINZUMI_THREAD_RUNNER_MCP_AUTHORITY",i[0]],["LINZUMI_DEV_SERVICES_PARENT_PID",t.toString()]],a=e.codexModelProvider;return a!==void 0&&o.push(["LINZUMI_LLM_PROXY_TOKEN",a.llmProxyToken]),o.push(["LINZUMI_THREAD_RUNNER_AGENT_MCP_TOKEN",i[1]]),o.push(["LINZUMI_THREAD_RUNNER_CODING_JOB_MCP_TOKEN",i[2]]),r!==void 0&&o.push(["OPENAI_API_KEY",r]),o}function zp(e){let t=e.length;return t>12e3?e.slice(t-12e3|0,t):e}function rk(e){let t=Je(e.code,"null",o=>o.toString()),r=w(e.signal,"null"),n="thread Codex worker exited before ready: code="+t+" signal="+r,i=e.capturedOutput.trim();return i===""?n:n+`
|
|
655
655
|
worker output: `+i}function eJ(e,t){return"thread Codex worker did not report ready within "+t.toString()+"ms for Kandan thread "+e}var FOe="thread runner ready timeout must be a non-negative number";function tJ(e){let t=w(e,3e4);return isFinite(t)&&t>=0?{TAG:"Ok",_0:t}:{TAG:"Error",_0:FOe}}var nk="thread worker start preflight failed";function NOe(e){return Wf.isAbsolute(e)||new RegExp("^[A-Za-z]:[\\\\/]").test(e)?!0:e.startsWith("\\\\")}function zD(e){return e===""?!0:!NOe(e)&&e!==".."&&!e.startsWith("../")&&!e.startsWith("..\\")&&!e.includes("/../")?!e.includes("\\..\\"):!1}function ik(e,t,r){if(e===void 0)return{TAG:"CwdRefused",reason:"missing_cwd"};if(e.trim()==="")return{TAG:"CwdRefused",reason:"missing_cwd"};if(t.length===0)return{TAG:"CwdRefused",reason:"no_allowed_cwd"};let i=Zi(Wf.resolve(e));if(i.TAG!=="Ok")return{TAG:"CwdRefused",reason:"cwd_not_found"};let o=i._0,a=t.find(s=>zD(Wf.relative(s,o)));return a!==void 0?r(o)?{TAG:"CwdRefused",reason:"cwd_dangerous"}:{TAG:"CwdAllowed",cwd:o,matchedRoot:a}:{TAG:"CwdRefused",reason:"cwd_not_allowed"}}function rJ(e,t,r){if(r.TAG==="CwdAllowed")return;let n=r.reason,o=t.length!==0?t.join(", "):"none";return{reason:n,message:nk+" ("+n+"): working directory "+e+" cannot start a coding session on this runner (allowed roots: "+o+")"}}function qOe(e){return e.split(`
|
|
656
|
-
`).map(t=>t.trim()).find(t=>t.startsWith(nk))}var hJe=new RegExp("worker exited before ready|worker did not report ready within","i");function Xn(e,t){let r=e.trim(),n=r.length,i=" ... ",o=i.length,a=n<=t,s=t<(o+2|0);if(a)return r;if(s)return r.slice(n-Math.max(1,t)|0,n);let l=Math.max(1,Math.floor((t-o|0)/3)|0),d=Math.max(1,(t-o|0)-l|0);return r.slice(0,l)+i+r.slice(n-d|0,n)}function zOe(e){return new Promise((t,r)=>{setTimeout(()=>t(),e)})}async function nJ(e,t,r,n,i,o){let a=o!==void 0?o:MOe,s=Math.max(1,w(t,2)),l=w(r,250),d=w(n,zOe),u,c,f=1;for(;Ln(u)&&f<=s;){let m=f,h=await e(m);if(h.TAG==="Ready")u={TAG:"Ok",_0:h._0};else{let _=h._0;c=_;let g=qOe(_.capturedOutput),b=m<s&&Ln(g),y={};y.purpose=ND,y.attempt=m,y.maxAttempts=s,y.code=Je(_.code,null,S=>S),y.signal=Je(_.signal,null,S=>S),y.capturedOutput=_.capturedOutput,y.willRespawn=b,g!==void 0&&(y.deterministicPreflightFailure=g),a("runner.thread_runner_exited_before_ready",y),g!==void 0?u={TAG:"Error",_0:g}:(b&&(i!==void 0&&i({attemptNumber:m+1|0,previous:_}),l>0&&await d(l)),f=m+1|0)}}let p=u;return p!==void 0?p:{TAG:"Error",_0:rk(w(c,{code:void 0,signal:void 0,capturedOutput:""}))}}function iJ(e){return typeof e!="object"?e==="WorkerManagedRunner":!1}var oJ=3e4;import*as G0 from"node:fs";import*as bJ from"node:os";import*as Yi from"node:path";var cx="KANDAN_EDITOR_COLLABORATION_",aJ=cx+"DEPLOYMENT_SHAPE",sJ=cx+"ENTRY_MODE",lJ=cx+"ROOM_ID",dJ=cx+"SERVER_URL",uJ=cx+"AUTO_HOST_CLAIM_PATH",ok="Kandan",cJ="kandan-local-editor-",fJ="oct.kandanEditorSessionId",mJ="oct.kandanCollaborationStateUrl",pJ="kandan_auto_host_or_join",hJ="kandan-oct-auto-host.lock",_J="/_linzumi/collaboration/",gJ="/api/v2/local-codex-runner/editor-runtime/",Hf="kandan",P0="kandan.document-state-telemetry";function sk(e){return e.message}function yJ(){return{tmpdir:()=>bJ.tmpdir(),mkdtemp:e=>Ve(Zd(e),sk),mkdirRecursive:e=>Ve(Nt(e),sk),writeFileUtf8:(e,t)=>Ve(jn(e,t),sk),existsSync:e=>G0.existsSync(e),copyFile:(e,t)=>{try{return{TAG:"Ok",_0:(G0.copyFileSync(e,t),void 0)}}catch(r){let n=N(r);return{TAG:"Error",_0:Oe(n).message}}},copyTree:(e,t)=>{try{return{TAG:"Ok",_0:(G0.cpSync(e,t,{recursive:!0}),void 0)}}catch(r){let n=N(r);return{TAG:"Error",_0:Oe(n).message}}},readFileUtf8:e=>Ve(Rt(e),sk)}}function LD(e,t,r,n){return["--bind-addr","127.0.0.1:"+e.toString(),"--auth","none","--disable-telemetry","--disable-update-check","--disable-workspace-trust","--disable-getting-started-override","--app-name",ok,"--user-data-dir",r].concat((n!==void 0?["--extensions-dir",n]:[]).concat([t]))}function LOe(e){let t={};return t["extensions.autoCheckUpdates"]=!1,t["extensions.autoUpdate"]=!1,t["extensions.ignoreRecommendations"]=!0,t["extensions.showRecommendationsOnlyOnDemand"]=!0,t["oct.alwaysAskToOverrideServerUrl"]=!1,t["oct.joinAcceptMode"]="auto",e!==void 0&&(t[fJ]=e.control.editorSessionId,t[mJ]=e.collaborationStateUrl,t["oct.serverUrl"]=e.bootstrapServerUrl),t["security.workspace.trust.enabled"]=!1,t["telemetry.telemetryLevel"]="off",t["workbench.secondarySideBar.defaultVisibility"]="hidden",t["workbench.startupEditor"]="none",t["workbench.welcomePage.walkthroughs.openOnInstall"]=!1,t}var UOe=new RegExp(`exec\\s+(?:"([^"]+)"|'([^']+)'|([^\\s]+))\\s+"\\$@"`,"u");function BOe(e,t){let r=t.readFileUtf8(e);if(r.TAG!=="Ok")return[];let n=UOe.exec(r._0);if(n==null)return[];let i=n.slice(1),o=l=>G(i[l],d=>d),a=gn(gn(o(0),o(1)),o(2));return a===void 0?[]:a.trim()===""?[]:[a]}function UD(e){let t={},r=[];return e.forEach(n=>{let i=n.length>0,o=t[n];if(i&&o===void 0){t[n]=!0,r.push(n);return}}),r}function WOe(e){return[Yi.join(e,"extensions","git-base","dist","extension.js"),Yi.join(e,"extensions","merge-conflict","dist","mergeConflictMain.js")]}var HOe="code-server runtime did not include a VS Code root candidate";function VOe(e,t){let r=a=>Yi.join(Yi.dirname(Yi.dirname(a)),"lib","vscode"),n=UD([Yi.join(e.root,"lib","vscode"),r(e.codeServerBin)].concat(BOe(e.codeServerBin,t).map(r))),i=n.find(a=>WOe(a).every(s=>t.existsSync(s))),o=n[0];return i!==void 0?{TAG:"Ok",_0:i}:o!==void 0?{TAG:"Ok",_0:o}:{TAG:"Error",_0:HOe}}function KOe(e){let t=(n,i)=>Yi.join(e,"extensions",n,"dist",i),r=(n,i)=>Yi.join(e,"extensions",n,"dist","browser",i);return[{source:t("git-base","extension.js"),target:r("git-base","extension.js"),required:!0},{source:t("git-base","extension.js.map"),target:r("git-base","extension.js.map"),required:!1},{source:t("merge-conflict","mergeConflictMain.js"),target:r("merge-conflict","mergeConflictMain.js"),required:!0},{source:t("merge-conflict","mergeConflictMain.js.map"),target:r("merge-conflict","mergeConflictMain.js.map"),required:!1}]}function JOe(e,t){return Ee(VOe(e,t),r=>Xe(KOe(r),{TAG:"Ok",_0:void 0},(n,i)=>Ee(n,()=>{let o=t.existsSync(i.target),a=!i.required&&!t.existsSync(i.source);return o||a?{TAG:"Ok",_0:void 0}:Ee(t.mkdirRecursive(Yi.dirname(i.target)),()=>t.copyFile(i.source,i.target))})))}function xJ(e,t,r){return Ee(r.mkdtemp(Yi.join(r.tmpdir(),cJ)),n=>{let i=Yi.join(n,"extensions"),o=Yi.join(n,"collaboration-server"),a=Yi.join(n,"tmp"),s=Yi.join(n,"User");return Qe(Ee(Ee(Ee(Ee(Ee(r.mkdirRecursive(s),()=>r.mkdirRecursive(i)),()=>r.mkdirRecursive(o)),()=>r.mkdirRecursive(a)),()=>t!==void 0?Ee(JOe(t,r),()=>{let l=Yi.join(i,P0);return Ee(r.mkdirRecursive(Yi.dirname(l)),()=>r.copyTree(t.assets.documentStateExtensionDir,l))}):{TAG:"Ok",_0:void 0}),()=>r.writeFileUtf8(Yi.join(s,"settings.json"),JSON.stringify(LOe(e),void 0,2))),()=>({userDataDir:n,extensionsDir:i,collaborationServerDir:o}))})}function SJ(e,t,r,n){let i={};return Object.entries(e).forEach(o=>{let a=o[0];a!=="PORT"&&(i[a]=o[1])}),i.PWD=t,n!==void 0&&(i[aJ]="local_runner_sidecar",i[sJ]=pJ,i[lJ]=n.control.roomId,i[dJ]=n.bootstrapServerUrl,i[uJ]=Yi.join(r,hJ)),i}function TJ(e,t){let r=q(e.LINZUMI_NODE_BIN,n=>n.trim());return r!==void 0&&r!==""?r:Yi.basename(t).toLowerCase().includes("bun")?"node":t}import*as R0 from"node:fs";import*as OJ from"node:os";import*as Oi from"node:path";import*as EJ from"node:crypto";import*as PJ from"node:child_process";function ZOe(e){switch(e){case"UnsupportedPlatform":return"unsupported_platform";case"AuthExpired":return"auth_expired";case"AuthUnauthorized":return"auth_unauthorized";case"ManifestUnavailable":return"manifest_unavailable";case"DownloadFailed":return"download_failed";case"ChecksumMismatch":return"checksum_mismatch";case"ArchiveExtractFailed":return"archive_extract_failed";case"InvalidArchive":return"invalid_archive";case"InstallFailed":return"install_failed"}}var wJ="server_managed",QOe="custom";function GJ(e){let t={};switch(e.TAG){case"RuntimeReady":t.status="ready",t.mode=wJ,t.version=e.version,t.platform=e.platform,t.archiveSha256=e.archiveSha256,t.codeServerVersion=e.codeServerVersion,t.updated=e.updated;break;case"RuntimeCustom":t.status="custom",t.mode=QOe,t.codeServerBin=e.codeServerBin;break;case"RuntimeUnavailable":t.status="unavailable",t.mode=wJ,t.reason=ZOe(e.reason);break}return t}function YOe(e,t){switch(e+"-"+t){case"darwin-arm64":return"darwin-arm64";case"darwin-x64":return"darwin-x64";case"linux-x64":return"linux-x64";default:return}}function Tu(e){if(e===void 0||typeof e!="string")return;let t=e.trim();if(t!=="")return t}var XOe=new RegExp("^[a-f0-9]{64}$","i");function IJ(e){return G(Tu(e),t=>{if(XOe.test(t))return t.toLowerCase()})}var WD="bin/code-server",eEe="linzumi-editor-runtime.json";function tEe(e){if(Array.isArray(e))return Xe(e,[],(t,r)=>G(t,n=>{if(typeof r!="object"||r===null||Array.isArray(r))return;let i=Tu(r.path),o=IJ(r.sha256),a=Tu(r.url),s=Tu(r.contentBase64);if(i!==void 0&&o!==void 0)return n.push({path:i,sha256:o,url:a,contentBase64:s}),n}))}function rEe(e){let t=Tu(e.version),r=Tu(e.platform),n=Tu(e.archiveUrl),i=IJ(e.archiveSha256),o=Tu(e.codeServerVersion),a=w(Tu(e.codeServerBinPath),WD),s=w(Tu(e.manifestPath),eEe),l=tEe(e.assets);return t!==void 0&&r!==void 0&&n!==void 0&&i!==void 0&&o!==void 0&&l!==void 0?{TAG:"Ok",_0:{version:t,platform:r,archiveUrl:n,archiveSha256:i,codeServerVersion:o,codeServerBinPath:a,manifestPath:s,assets:l}}:{TAG:"Error",_0:"ManifestUnavailable"}}function RJ(e,t){return Oi.resolve(e,t.platform,t.archiveSha256)}var AJ="/"+WD;function lk(e){let t=e.replaceAll("\\","/");if(t===WD)return".";if(!t.endsWith(AJ))return Oi.dirname(t);let r=t.slice(0,t.length-AJ.length|0);return r===""?".":r}function nEe(e){let t={};return e.forEach(r=>{t[r.path]=r.sha256}),t}function iEe(e,t){return e.protocol===t.protocol?e.host===t.host:!1}function oEe(e){return Oi.join(e,".linzumi","editor-runtimes")}var aEe=".install-",sEe="runtime.tar.gz",lEe="runtime";function MJ(e){return{collaborationExtensionTarball:Oi.join(...[e].concat([Hf,"editor_extensions","typefox.open-collaboration-tools.tar.gz"])),collaborationServerTarball:Oi.join(...[e].concat([Hf,"editor_servers","open-collaboration-server.tar.gz"])),documentStateExtensionDir:Oi.join(...[e].concat([Hf,"editor_extensions",P0]))}}function dEe(e){try{return{TAG:"Ok",_0:EJ.createHash("sha256").update(R0.readFileSync(e)).digest("hex")}}catch(t){let r=N(t);return{TAG:"Error",_0:Oe(r).message}}}function uEe(e,t){try{return{TAG:"Ok",_0:(R0.writeFileSync(e,t),void 0)}}catch(r){let n=N(r);return{TAG:"Error",_0:Oe(n).message}}}function cEe(e){return gJ+encodeURIComponent(e)+"/manifest"}async function fEe(e){let t=await e.bodyJson();if(t.TAG!=="Ok")return"AuthUnauthorized";let r=t._0;return typeof r!="object"||r===null||Array.isArray(r)?"AuthUnauthorized":r.error==="token_expired"?"AuthExpired":"AuthUnauthorized"}async function mEe(e,t,r,n){let i=ai(e);if(i.TAG!=="Ok")return{TAG:"Error",_0:"ManifestUnavailable"};let o=ko(cEe(r),i._0);if(o.TAG!=="Ok")return{TAG:"Error",_0:"ManifestUnavailable"};let a=await n.fetchUrl(o._0.toString(),t);if(a.TAG!=="Ok")return{TAG:"Error",_0:"ManifestUnavailable"};let s=a._0,l=s.status;if(l!==200)return l!==401?{TAG:"Error",_0:"ManifestUnavailable"}:{TAG:"Error",_0:await fEe(s)};let d=await s.bodyJson();if(d.TAG!=="Ok")return{TAG:"Error",_0:"ManifestUnavailable"};let u=d._0;if(typeof u!="object"||u===null||Array.isArray(u))return{TAG:"Error",_0:"ManifestUnavailable"};let c=u.ok,f=u.runtime;return c===!0&&typeof f=="object"&&f!==null&&!Array.isArray(f)?rEe(f):{TAG:"Error",_0:"ManifestUnavailable"}}function pEe(e){let t=lk(e.codeServerBinPath),r=["lib","vscode","node_modules","vsda","rust","web"];return[e.codeServerBinPath,Oi.join(...[t].concat(r.concat(["vsda.js"]))),Oi.join(...[t].concat(r.concat(["vsda_bg.wasm"]))),[Hf,"editor_extensions","typefox.open-collaboration-tools.tar.gz"].join("/"),[Hf,"editor_servers","open-collaboration-server.tar.gz"].join("/"),[Hf,"editor_extensions",P0].join("/")+"/package.json",[Hf,"editor_extensions",P0].join("/")+"/out/extension.js"]}function DJ(e,t,r){let n=nEe(t.assets),i=pEe(t).every(s=>{let l=n[s],d=s===t.codeServerBinPath;if(l===void 0)return d?r.existsSync(Oi.join(e,s)):!1;let u=Oi.join(e,s);if(!r.existsSync(u))return!1;let c=r.fileSha256(u);return c.TAG==="Ok"?c._0===l:!1}),o=MJ(e),a=r.existsSync(o.collaborationExtensionTarball)&&r.existsSync(o.collaborationServerTarball);if(i&&a)return o}function hEe(e,t,r){let n=RJ(e,t),i=Oi.join(n,t.manifestPath),o=Oi.join(n,t.codeServerBinPath),a=r.existsSync(i)&&r.existsSync(o),s=DJ(n,t,r);if(!a||s===void 0)return;let l=r.readFileUtf8(i);if(l.TAG!=="Ok")return;let d;try{d=JSON.parse(l._0)}catch{d=void 0}if(d===void 0||typeof d!="object"||d===null||Array.isArray(d))return;let u=Q(d.version,t.version),c=Q(d.platform,t.platform),f=d.archiveSha256,p=f!==void 0?typeof f=="string"?f===t.archiveSha256:!1:!0;if(u&&c&&p)return{root:n,codeServerBin:o,assets:s}}async function _Ee(e,t,r,n,i){let o=ai(e);if(o.TAG!=="Ok")return{TAG:"Error",_0:"DownloadFailed"};let a=o._0,s=ko(r.archiveUrl,a),l=Ao(a);if(s.TAG!=="Ok")return{TAG:"Error",_0:"DownloadFailed"};if(l===void 0)return{TAG:"Error",_0:"DownloadFailed"};let d=s._0,u=iEe(d,pe(l))?t:void 0,c=await i.fetchUrl(d.toString(),u);if(c.TAG!=="Ok")return{TAG:"Error",_0:"DownloadFailed"};let f=c._0;if(f.status!==200)return{TAG:"Error",_0:"DownloadFailed"};let m=await f.bodyBytes();if(m.TAG!=="Ok")return{TAG:"Error",_0:"DownloadFailed"};if(i.writeBytes(n,m._0).TAG!=="Ok")return{TAG:"Error",_0:"DownloadFailed"};let _=i.fileSha256(n);return _.TAG==="Ok"?_._0===r.archiveSha256?{TAG:"Ok",_0:void 0}:{TAG:"Error",_0:"ChecksumMismatch"}:{TAG:"Error",_0:"DownloadFailed"}}async function gEe(e,t,r){let n=t.contentBase64,i=t.url;if(n!==void 0)try{return{TAG:"Ok",_0:be(Buffer.from(n,"base64"))}}catch(o){let a=N(o);return{TAG:"Error",_0:Oe(a).message}}else{if(i===void 0)return{TAG:"Ok",_0:void 0};let o=ai(e);if(o.TAG!=="Ok")return{TAG:"Error",_0:o._0};let a=ko(i,o._0);if(a.TAG!=="Ok")return{TAG:"Error",_0:a._0};let s=await r.fetchUrl(a._0.toString(),void 0);if(s.TAG!=="Ok")return{TAG:"Error",_0:s._0};let l=s._0;if(l.status!==200)return{TAG:"Ok",_0:void 0};let u=await l.bodyBytes();return u.TAG==="Ok"?{TAG:"Ok",_0:be(u._0)}:{TAG:"Error",_0:u._0}}}async function bEe(e,t,r,n){let i=0,o=!1;for(;!o&&i<t.assets.length;){let a=t.assets[i];if(a!==void 0){let s=Oi.join(r,a.path),l=await gEe(e,a,n);if(l.TAG==="Ok"){let d=l._0;if(d!==void 0){let u=pe(d);Ee(n.mkdirRecursive(Oi.dirname(s)),()=>n.writeBytes(s,u)).TAG==="Ok"?i=i+1|0:o=!0}else i=i+1|0}else o=!0}else i=i+1|0}return!o}function yEe(e){let t={};return t.version=e.version,t.platform=e.platform,t.archiveSha256=e.archiveSha256,t.codeServerVersion=e.codeServerVersion,t.codeServerBinPath=e.codeServerBinPath,t.manifestPath=e.manifestPath,t.assets=e.assets.map(r=>{let n={};n.path=r.path,n.sha256=r.sha256;let i=r.url;i!==void 0&&(n.url=i);let o=r.contentBase64;return o!==void 0&&(n.contentBase64=o),n}),JSON.stringify(t,void 0,2)}async function xEe(e,t,r,n,i,o){let a=Oi.join(i,sEe),s=Oi.join(i,lEe),l=await _Ee(e,t,r,a,o);if(l.TAG!=="Ok")return{TAG:"Error",_0:l._0};if(o.mkdirRecursive(s).TAG!=="Ok")return{TAG:"Error",_0:"InstallFailed"};if(!await o.extractArchive(a,s))return{TAG:"Error",_0:"ArchiveExtractFailed"};if(!await bEe(e,r,s,o))return{TAG:"Error",_0:"InstallFailed"};let u=Oi.join(s,r.manifestPath),c=Oi.join(s,r.codeServerBinPath),f=o.existsSync(c),p=DJ(s,r,o);if(!f)return{TAG:"Error",_0:"InvalidArchive"};if(p===void 0)return{TAG:"Error",_0:"InvalidArchive"};let m=RJ(n,r);return Ee(Ee(Ee(Ee(o.mkdirRecursive(Oi.dirname(u)),()=>o.writeFileUtf8(u,yEe(r))),()=>o.rmRecursiveForce(m)),()=>o.mkdirRecursive(Oi.dirname(m))),()=>o.rename(s,m)).TAG==="Ok"?{TAG:"Ok",_0:{root:m,codeServerBin:Oi.join(m,r.codeServerBinPath),assets:MJ(m)}}:{TAG:"Error",_0:"InstallFailed"}}async function SEe(e,t,r,n,i){if(i.mkdirRecursive(n).TAG!=="Ok")return{TAG:"Error",_0:"InstallFailed"};let a=i.mkdtemp(Oi.join(n,aEe));if(a.TAG!=="Ok")return{TAG:"Error",_0:"InstallFailed"};let s=a._0,l=await xEe(e,t,r,n,s,i);return i.rmRecursiveForce(s),l}function kJ(e){return{status:{TAG:"RuntimeUnavailable",reason:e},codeServerBin:void 0,runtime:void 0}}function CJ(e,t,r){return{status:{TAG:"RuntimeReady",version:e.version,platform:e.platform,archiveSha256:e.archiveSha256,codeServerVersion:e.codeServerVersion,updated:r},codeServerBin:t.codeServerBin,runtime:t}}async function HD(e,t){let r=e.customCodeServerBin;if(r!==void 0)return{status:{TAG:"RuntimeCustom",codeServerBin:r},codeServerBin:r,runtime:void 0};let n=YOe(t.platform,t.arch);if(n===void 0)return{status:{TAG:"RuntimeUnavailable",reason:"UnsupportedPlatform"},codeServerBin:void 0,runtime:void 0};let i=await mEe(e.serviceUrl,e.token,n,t);if(i.TAG!=="Ok")return kJ(i._0);let o=i._0,a=w(e.cacheRoot,oEe(t.homeDir())),s=hEe(a,o,t);if(s!==void 0)return CJ(o,s,!1);let l=await SEe(e.serviceUrl,e.token,o,a,t);return l.TAG==="Ok"?CJ(o,l._0,!0):kJ(l._0)}var BD="editor_runtime.extract";function TEe(e,t,r){return new Promise((n,i)=>{let o="tar",a=["-xzf",e,"-C",t],s=a.map(f=>f);r("process.spawn",Object.fromEntries([["command",o],["args",s],["purpose",BD]]));let l=PJ.spawn(o,a,{stdio:["ignore","ignore","ignore"]}),d=l.pid,u=d??null;r("process.spawned",Object.fromEntries([["command",o],["args",s],["pid",u],["purpose",BD]]));let c={contents:!1};l.on("error",f=>{if(!c.contents)return c.contents=!0,n(!1)}),l.once("exit",(f,p)=>{if(r("process.exit",Object.fromEntries([["command",o],["args",s],["pid",u],["code",f??null],["signal",p??null],["purpose",BD]])),!c.contents)return c.contents=!0,n(Q(f==null?void 0:be(f),0))})})}function I0(e){return e.message}function VD(e){return{fetchUrl:async(t,r)=>{let n=r!==void 0?{headers:Object.fromEntries([["authorization","Bearer "+r]])}:{},i=await Ua(t,n);if(i.TAG!=="Ok")return{TAG:"Error",_0:i._0.message};let o=i._0;return{TAG:"Ok",_0:{status:o.status,bodyJson:async()=>{let a=await Cl(o);return a.TAG==="Ok"?{TAG:"Ok",_0:a._0}:{TAG:"Error",_0:a._0.message}},bodyBytes:async()=>{try{return{TAG:"Ok",_0:Buffer.from(await o.arrayBuffer())}}catch(a){let s=N(a);return{TAG:"Error",_0:Oe(s).message}}}}}},extractArchive:(t,r)=>TEe(t,r,e),platform:process.platform,arch:process.arch,homeDir:()=>OJ.homedir(),existsSync:t=>R0.existsSync(t),readFileUtf8:t=>Ve(Rt(t),I0),writeFileUtf8:(t,r)=>Ve(jn(t,r),I0),writeBytes:uEe,mkdirRecursive:t=>Ve(Nt(t),I0),mkdtemp:t=>Ve(Zd(t),I0),rmRecursiveForce:t=>Ve(pa(t),I0),rename:(t,r)=>Ve(Yn(t,r),I0),fileSha256:dEe}}import*as $J from"node:fs";import*as vu from"node:path";function jJ(){return{existsSync:e=>$J.existsSync(e),realpath:e=>Ve(Zi(e),t=>t.message)}}function vEe(e){return e.includes("/")?!0:e.includes("\\")}function wEe(e,t){let r=t.realpath(e);if(r.TAG==="Ok"){let i=vu.dirname(r._0);return i==="/"?void 0:i}let n=vu.dirname(e);switch(n){case".":case"/":return;default:return n}}function uk(e,t,r){return vEe(e)?q(wEe(e,r),n=>({command:e,directory:n})):Xe(t.split(vu.delimiter),void 0,(n,i)=>{let o=i.trim();if(n!==void 0)return n;if(o==="")return;let a=vu.join(i,e);if(!r.existsSync(a))return;let s=r.realpath(a);if(s.TAG!=="Ok")return;let l=s._0;return{command:l,directory:vu.dirname(l)}})}function FJ(e,t,r){return q(uk(e,t,r),n=>lk(n.command))}function AEe(e,t){let r=t.realpath(e);return r.TAG==="Ok"?[e,r._0]:[e]}var kEe=["/usr","/bin","/sbin","/lib","/lib64","/etc","/nix","/opt"];function CEe(e,t){let r=uk(w(e.bubblewrapBin,"bwrap"),e.envPath,t),n=uk(e.codeServerBin,e.envPath,t);if(r===void 0||n===void 0)return"SandboxUnavailable";let i=e.codeServerRuntimeRoot,o=UD(kEe.concat((i!==void 0?AEe(i,t):[]).concat([n.directory]))),a=e.extensionsDir,s=["--die-with-parent","--proc","/proc","--dev-bind","/dev","/dev","--tmpfs","/tmp","--setenv","HOME",e.cwd,"--setenv","PWD",e.cwd,"--setenv","XDG_DATA_HOME",vu.join(e.userDataDir,"data"),"--setenv","XDG_CONFIG_HOME",vu.join(e.userDataDir,"config")].concat(o.flatMap(l=>["--ro-bind-try",l,l]).concat(["--bind",e.cwd,e.cwd,"--bind",e.userDataDir,e.userDataDir].concat(a!==void 0?["--bind",a,a]:[]).concat(["--chdir",e.cwd,"--",n.command].concat(LD(e.port,e.cwd,e.userDataDir,e.extensionsDir)))));return{TAG:"LaunchReady",command:r.command,args:s}}function NJ(e,t){switch(e.platform){case"darwin":let n=uk(e.codeServerBin,e.envPath,t);return n!==void 0?{TAG:"LaunchReady",command:n.command,args:LD(e.port,e.cwd,e.userDataDir,e.extensionsDir)}:"SandboxUnavailable";case"linux":return CEe(e,t);default:return"SandboxUnavailable"}}var EEe=new RegExp("/+$");function qJ(e){if(e===void 0)return;let t=e.trim();if(t!=="")return t.replace(EEe,"")}function PEe(e){return _J+e.toString()}function GEe(e){return"/api/v2/editor/sessions/"+e.toString()+"/collaboration-state"}function zJ(e,t,r,n){if(e===void 0)return{TAG:"Ok",_0:void 0};if(r===void 0)return{TAG:"Ok",_0:void 0};let i=PEe(r),o=GEe(e.editorSessionId);return{TAG:"Ok",_0:{control:e,serverPort:r,serverUrl:i,bootstrapServerUrl:i,collaborationStateUrl:i+o}}}function ck(e){return{provider:e.control.provider,editorSessionId:e.control.editorSessionId,runtimeSessionId:e.control.runtimeSessionId,roomId:e.control.roomId,serverPort:e.serverPort,serverUrl:e.serverUrl}}function LJ(e,t){return e!==void 0?t!==void 0&&e.control.editorSessionId===t.editorSessionId&&e.control.runtimeSessionId===t.runtimeSessionId?e.control.roomId===t.roomId:!1:t===void 0}function UJ(e){let t={};return t.provider=e.provider,t.editorSessionId=e.editorSessionId,t.runtimeSessionId=e.runtimeSessionId,t.roomId=e.roomId,t.serverPort=e.serverPort,t.serverUrl=e.serverUrl,t}var REe="local_editor_disabled",MEe="missing_browser_base_url",Vf="code_server_spawn_failed",DEe="local_editor_filesystem_sandbox_unavailable";function JJ(e,t){if(t!==void 0)return{TAG:"CustomRuntime",_0:{codeServerBin:e,editorRuntime:t}}}function $Ee(e){return typeof e!="object"?"disabled":"running"}function ZJ(e,t,r){let n={};if(n.localEditor=jt(e)&&t.length!==0,n.localEditorStatus=$Ee(r),typeof r=="object"){let i=r.collaboration;n.localEditorPort=r.port,n.localEditorCwd=r.cwd,i!==void 0&&(n.localEditorCollaboration=UJ(ck(i.prepared)))}return n}function jEe(e){return e.map(t=>t)}function BJ(e,t){if(t!==void 0){e.pid=t;return}}function FEe(e){return e!==void 0?e:null}function NEe(e){return e!==void 0?e:null}var qEe="local_editor.code_server",zEe="local_editor.collaboration_sidecar",LEe="local_editor.install_process";function QJ(e){return new Promise((t,r)=>{let n={contents:!1},i=()=>{if(!n.contents)return n.contents=!0,t()};if(e.onExitOnce((o,a)=>i()),e.onCloseOnce(i),e.hasExited())return i()})}function YJ(e,t){return new Promise((r,n)=>{let i={contents:!1},o=a=>{if(!i.contents)return i.contents=!0,r(a)};e.onSpawnOnce(()=>o("ProcessSpawned")),e.onErrorOnce(a=>o("ProcessSpawnFailed")),t.scheduleImmediate(()=>{let a=i.contents,s=e.pid();if(!(a||s===void 0))return o("ProcessSpawned")})})}function XJ(e,t,r,n){let i=n.nowMs()+1e4;return new Promise((o,a)=>{let s={contents:!1},l={contents:void 0},d=f=>{if(s.contents)return;s.contents=!0;let p=l.contents;p!==void 0&&p(),o(f)},u=()=>{l.contents=n.scheduleTimeout(()=>{c()},50)},c=async()=>{if(n.nowMs()>i)return d("ProbeFailed");let f=await n.probeUrlStatus(e,t);return f.TAG==="Ok"&&f._0<500?d("ProbeReady"):u()};r.then(()=>(d("ProbeFailed"),Promise.resolve())),c()})}function KD(e,t,r,n,i,o){let a=()=>{let u={};return u.command=e.command,u.args=jEe(e.args),r.forEach(c=>{u[c[0]]=c[1]}),u},s=a();s.purpose=t,n.forEach(u=>{s[u[0]]=u[1]}),o.audit("process.spawn",s,i);let l=o.spawnProcess(e),d=a();return BJ(d,l.pid()),d.purpose=t,n.forEach(u=>{d[u[0]]=u[1]}),o.audit("process.spawned",d,i),l.onExitOnce((u,c)=>{let f=a();BJ(f,l.pid()),f.code=FEe(u),f.signal=NEe(c),f.purpose=t,n.forEach(p=>{f[p[0]]=p[1]}),o.audit("process.exit",f,i)}),l}function UEe(e,t,r){return new Promise((n,i)=>{let o=KD({command:e,args:t,cwd:void 0,env:void 0,stdio:"StderrOnly"},LEe,[],[],void 0,r),a={contents:!1},s=l=>{if(!a.contents)return a.contents=!0,n(l)};o.onErrorOnce(l=>s({TAG:"Error",_0:l})),o.onExitOnce((l,d)=>s(l!==void 0?l!==0?{TAG:"Error",_0:e+" exited with "+l.toString()}:{TAG:"Ok",_0:void 0}:{TAG:"Error",_0:e+" exited with unknown"}))})}async function WJ(e,t,r){let n=r.profile.mkdirRecursive(t);return n.TAG==="Ok"?await UEe("tar",["-xzf",e,"-C",t],r):{TAG:"Error",_0:n._0}}async function BEe(e,t,r,n,i){if(e===void 0)return{TAG:"SidecarStarted",collaboration:void 0,ready:Promise.resolve("ProbeReady")};if(!(await Promise.all([WJ(r.assets.collaborationExtensionTarball,t.extensionsDir,i),WJ(r.assets.collaborationServerTarball,t.collaborationServerDir,i)])).every(cz))return"SidecarFailed";let a=TJ(i.env,i.execPath),s=[VJ.join(t.collaborationServerDir,"open-collaboration-server","bundle","app.js"),"--hostname","127.0.0.1","--port",e.serverPort.toString()],l={};Object.entries(i.env).forEach(m=>{l[m[0]]=m[1]}),l.OCT_ACTIVATE_SIMPLE_LOGIN="true",l.OCT_SERVER_OWNER=ok;let d=[["editorSessionId",e.control.editorSessionId],["runtimeSessionId",e.control.runtimeSessionId]],u=KD({command:a,args:s,cwd:void 0,env:l,stdio:"InheritOutput"},zEe,[],d,n,i),c=QJ(u);if(await YJ(u,i)!=="ProcessSpawned")return"SidecarFailed";let p=XJ("http://127.0.0.1:"+e.serverPort.toString()+"/api/login/initial",!0,c,i);return{TAG:"SidecarStarted",collaboration:{prepared:e,process:u,exited:c},ready:p}}function HJ(e){if(typeof e!="object")return;let t=e.collaboration;if(t!==void 0)return t.prepared}function fx(e){if(typeof e!="object")return;let t=e.collaboration;if(e.process.kill("SIGINT"),t!==void 0)return t.process.kill("SIGINT")}async function eZ(e,t,r){let n=t.editorRuntime;if(n===void 0)return{TAG:"StartRefused",state:t.currentState,reason:REe};let i=w(Gi(r.env,"PATH"),""),o;if(n.TAG==="CustomRuntime"){let h=n._0,_=h.codeServerBin;o=[_,h.editorRuntime,FJ(_,i,r.sandboxFs)]}else{let h=n._0;o=[h.codeServerBin,h,h.root]}let a=o[1],s=ik(e.cwd,t.allowedCwds,r.isDangerousCwd);if(s.TAG!=="CwdAllowed")return{TAG:"StartRefused",state:t.currentState,reason:s.reason};let l=s.cwd,d=t.currentState,u;if(u=typeof d!="object"||d.cwd!==l?!1:LJ(HJ(t.currentState),e.collaboration),u){let h=t.currentState;return typeof h!="object"?{TAG:"StartRefused",state:t.currentState,reason:Vf}:{TAG:"Started",state:t.currentState,event:{cwd:h.cwd,port:h.port,startedAt:r.nowIso(),collaboration:q(HJ(t.currentState),ck)}}}let c=e.browserBaseUrl,f=qJ(c!==void 0?c:t.browserBaseUrl),p=e.collaboration,m=0;if(p!==void 0){if(f===void 0)return{TAG:"StartRefused",state:t.currentState,reason:MEe};m=1}else m=1;if(m===1){let h=await r.choosePort(),_=e.collaboration,g;if(_!==void 0){let D=await r.choosePort();g=D.TAG==="Ok"?{TAG:"Ok",_0:D._0}:{TAG:"Error",_0:D._0}}else g={TAG:"Ok",_0:void 0};if(h.TAG!=="Ok")return{TAG:"StartRefused",state:t.currentState,reason:Vf};let b=h._0;if(g.TAG!=="Ok")return{TAG:"StartRefused",state:t.currentState,reason:Vf};let y=f!==void 0?zJ(e.collaboration,w(t.runnerId,"local-runner"),g._0,f):{TAG:"Ok",_0:void 0};if(y.TAG!=="Ok")return{TAG:"StartRefused",state:t.currentState,reason:Vf};let S=y._0,T=xJ(S,a,r.profile);if(T.TAG!=="Ok")return{TAG:"StartRefused",state:t.currentState,reason:Vf};let v=T._0,O=NJ({codeServerBin:o[0],codeServerRuntimeRoot:o[2],port:b,cwd:l,userDataDir:v.userDataDir,extensionsDir:v.extensionsDir,platform:r.platform,bubblewrapBin:void 0,envPath:i},r.sandboxFs);if(typeof O!="object")return{TAG:"StartRefused",state:t.currentState,reason:DEe};let A,C=0;S!==void 0?a!==void 0?C=2:A=Promise.resolve("SidecarFailed"):a!==void 0?C=2:A=Promise.resolve({TAG:"SidecarStarted",collaboration:void 0,ready:Promise.resolve("ProbeReady")}),C===2&&(A=BEe(S,v,a,t.runnerId,r));let k=await A;if(typeof k!="object")return{TAG:"StartRefused",state:t.currentState,reason:Vf};let I=k.collaboration,U=KD({command:O.command,args:O.args,cwd:l,env:SJ(r.env,l,v.userDataDir,q(I,D=>D.prepared)),stdio:"InheritOutput"},qEe,[["cwd",l]],[],t.runnerId,r),F=QJ(U);return await YJ(U,r)==="ProcessSpawned"?(await Promise.all([XJ("http://127.0.0.1:"+b.toString()+"/",!1,F,r),k.ready])).every(V=>V==="ProbeReady")?(fx(t.currentState),{TAG:"Started",state:{TAG:"Running",cwd:l,port:b,process:U,collaboration:I,exited:F},event:{cwd:l,port:b,startedAt:r.nowIso(),collaboration:q(I,V=>ck(V.prepared))}}):(U.kill("SIGINT"),I!==void 0&&I.process.kill("SIGINT"),{TAG:"StartRefused",state:t.currentState,reason:Vf}):(I!==void 0&&I.process.kill("SIGINT"),{TAG:"StartRefused",state:t.currentState,reason:Vf})}}function fk(e){return e==="InheritOutput"?["ignore","inherit","inherit"]:["ignore","ignore","inherit"]}function WEe(e){let t=e.cwd,r=e.env,n=KJ.spawn(e.command,e.args,t!==void 0?r!==void 0?{cwd:t,env:r,stdio:fk(e.stdio)}:{cwd:t,stdio:fk(e.stdio)}:r!==void 0?{env:r,stdio:fk(e.stdio)}:{stdio:fk(e.stdio)});return{pid:()=>q(lt(n.pid),i=>i),kill:i=>{ga(n,i)},onExitOnce:i=>{n.once("exit",(o,a)=>i(q(o==null?void 0:be(o),s=>s),a==null?void 0:be(a)))},onCloseOnce:i=>{n.once("close",i)},onSpawnOnce:i=>{n.once("spawn",i)},onErrorOnce:i=>{n.once("error",o=>i(o.message))},hasExited:()=>jt(lt(n.exitCode))?!0:jt(lt(n.signalCode))}}async function HEe(e,t){let n=await Ua(e,t?{method:"POST"}:{});return n.TAG==="Ok"?{TAG:"Ok",_0:n._0.status}:{TAG:"Error",_0:n._0.message}}function tZ(e,t){return{spawnProcess:WEe,choosePort:XT,probeUrlStatus:HEe,nowIso:()=>new Date().toISOString(),nowMs:()=>Date.now(),scheduleTimeout:(r,n)=>{let i=setTimeout(r,n);return()=>{clearTimeout(i)}},scheduleImmediate:r=>{setImmediate(r)},env:process.env,execPath:process.execPath,platform:process.platform,audit:e,isDangerousCwd:t,profile:yJ(),sandboxFs:jJ()}}function wu(){return w("1.0.233","0.0.0-unbundled")}function JD(){return"linzumi "+w("1.0.233","0.0.0-unbundled")}import*as Io from"node:os";import*as es from"node:path";import*as PS from"node:crypto";var VEe=No(e=>({startupFailedControlSeqs:e.m(Oo(gr))}));function nZ(e){return vf(e,VEe)}var KEe=bt(e=>({instanceId:e.f("instanceId",L),seq:e.f("seq",gr),method:e.f("method",L),params:e.f("params",xf(si)),receivedAt:e.f("receivedAt",L)}));function M0(e){return e.f("payload",xf(si))}var _Je=Sf([bt(e=>(e.tag("kind","instance_started"),{TAG:"InstanceStarted",payload:M0(e)})),bt(e=>(e.tag("kind","instance_stopped"),{TAG:"InstanceStopped",payload:M0(e)})),bt(e=>(e.tag("kind","codex_notification"),{TAG:"HarnessNotification",payload:e.f("payload",KEe)})),bt(e=>(e.tag("kind","codex_request"),{TAG:"HarnessRequest",payload:M0(e)})),bt(e=>(e.tag("kind","codex_response"),{TAG:"HarnessResponse",payload:M0(e)})),bt(e=>(e.tag("kind","codex_error"),{TAG:"HarnessError",payload:M0(e)})),bt(e=>(e.tag("kind","heartbeat"),{TAG:"Heartbeat",payload:M0(e)}))]);function iZ(e){return"local_runner:"+e}var ZEe="kandan-local-codex-runner",QEe="rescript";function oZ(e){let t={};t.clientName=ZEe,t.clientId=e.clientId;let r=e.machineFingerprint;t.machineFingerprint=r!==void 0?r:null,Object.entries(m9(e.machineFingerprintV2)).forEach(a=>{t[a[0]]=a[1]}),t.runnerPid=e.runnerPid,t.runnerBootId=e.runnerBootId,t.version=e.version,t.hostname=e.hostname,t.cwd=e.cwd;let n=e.workspace;t.workspace=n!==void 0?n:null;let i=e.channel;t.channel=i!==void 0?i:null,t.capabilities=e.capabilities;let o=e.generationOverlapEpoch;if(o!==void 0){let a={};a.epoch=o,a.overlap=!0,t.generation=a}return t.commander_impl=QEe,t}function aZ(e,t,r){let n={};return n.last_seq=r,t!==void 0&&(n.runner_id=e,n.thread_id=t),n}function $r(e,t){return e.catch(r=>t(N(r)))}var ZD=No(e=>({baseUrl:e.m(J(L)),token:e.m(J(L))})),lZ=No(e=>({mcpToken:e.m(J(L))})),dZ=No(e=>({mcpToken:e.m(J(L))})),uZ=No(e=>({accountId:e.m(L),grantId:e.m(L),generation:e.m(gr),credential:e.m(J(L))})),YEe=No(e=>({offerId:e.m(L),contextStrategy:e.m(L)})),mx=Bb(L),XEe=Bb(gr),e1e=No(e=>({instanceId:e.m(J(L)),requestId:e.m(J(L)),workspace:e.m(J(L)),channel:e.m(J(L)),threadId:e.m(J(L)),rootSeq:e.m(J(gr)),sourceSeq:e.m(J(gr)),cwd:e.m(J(L)),workDescription:e.m(J(L)),attachments:e.m(J(Oo(si))),developerPrompt:e.m(J(L)),agentNickname:e.m(J(L)),agentProvider:e.m(J(L)),modelProvider:e.m(Eo(L)),modelTransportCatalogStatus:e.m(J(L)),llmProxy:e.m(J(ZD)),resumeSessionId:e.m(Eo(L)),linzumiContext:e.m(J(xf(si))),launchTui:e.m(J(Fo)),model:e.m(Eo(L)),reasoningEffort:e.m(Eo(L)),approvalPolicy:e.m(Eo(L)),sandbox:e.m(Eo(L)),codingJobToolScope:e.m(J(L)),sandboxedApprovalNeverDefault:e.m(J(Fo)),fast:e.m(Eo(Fo)),allowPortForwardingByDefault:e.m(Eo(Fo)),executionMode:e.m(J(L)),egressMode:e.m(J(L)),projectId:e.m(J(gr)),projectPublicId:e.m(J(L)),goldenImagePublicId:e.m(J(L)),projectSharedInstructions:e.m(J(L)),projectPersonalInstructions:e.m(J(L)),projectMemory:e.m(J(L)),linzumiAgent:e.m(J(lZ)),codingJob:e.m(J(dZ)),codingAccount:e.m(J(uZ)),adtStream:e.m(J(si))})),t1e=No(e=>({instanceId:e.m(J(L)),requestId:e.m(J(L)),workspace:e.m(J(L)),channel:e.m(J(L)),threadId:e.m(J(L)),rootSeq:e.m(J(gr)),sourceSeq:e.m(J(gr)),transportCeilingRecoveryRequestId:e.m(J(L)),cwd:e.m(J(L)),workDescription:e.m(J(L)),attachments:e.m(J(Oo(si))),traceparent:e.m(J(L)),developerPrompt:e.m(J(L)),agentNickname:e.m(J(L)),codexThreadId:e.m(J(L)),sessionRehydrate:e.m(J(Fo)),codingAccountHandoff:e.m(J(YEe)),agentProvider:e.m(J(L)),modelProvider:e.m(Eo(L)),modelTransportCatalogStatus:e.m(J(L)),llmProxy:e.m(J(ZD)),linzumiContext:e.m(J(xf(si))),model:e.m(Eo(L)),reasoningEffort:e.m(Eo(L)),approvalPolicy:e.m(Eo(L)),sandbox:e.m(Eo(L)),codingJobToolScope:e.m(J(L)),sandboxedApprovalNeverDefault:e.m(J(Fo)),fast:e.m(Eo(Fo)),allowPortForwardingByDefault:e.m(Eo(Fo)),projectSharedInstructions:e.m(J(L)),projectPersonalInstructions:e.m(J(L)),projectMemory:e.m(J(L)),linzumiAgent:e.m(J(lZ)),codingJob:e.m(J(dZ)),codingAccount:e.m(J(uZ)),adtStream:e.m(J(si))})),cZ=bt(e=>({questionId:e.f("questionId",L),selectedLabels:e.f("selectedLabels",J(Oo(L))),freeText:e.f("freeText",J(L))})),r1e=No(e=>({instanceId:e.m(J(L)),kandanThreadId:e.m(L),threadId:e.m(L),model:e.m(J(mx)),modelProvider:e.m(J(mx)),modelTransportCatalogStatus:e.m(J(L)),reasoningEffort:e.m(J(mx)),approvalPolicy:e.m(J(mx)),sandbox:e.m(J(mx)),fast:e.m(Eo(Fo)),allowPortForwardingByDefault:e.m(Eo(Fo)),actorUserId:e.m(J(gr)),actorSlug:e.m(J(L))})),gJe=No(e=>({defaultMs:e.m(XEe),version:e.m(gr)})),n1e=No(e=>({defaultMs:e.m(J(si)),version:e.m(J(si))})),i1e=bt(e=>({provider:e.f("provider",L),editorSessionId:e.f("editorSessionId",gr),runtimeSessionId:e.f("runtimeSessionId",L),roomId:e.f("roomId",L),extensionAssetPath:e.f("extensionAssetPath",L),serverAssetPath:e.f("serverAssetPath",L),bootstrapToken:e.f("bootstrapToken",J(L))})),o1e=bt(e=>(e.tag("type","start_instance"),{TAG:"StartInstance",_0:e.flatten(e1e)})),a1e=bt(e=>(e.tag("type","authorize_coding_account"),{TAG:"AuthorizeCodingAccount",_0:{attemptId:e.f("attemptId",L),accountId:e.f("accountId",L),harness:e.f("harness",L)}})),s1e=bt(e=>(e.tag("type","coding_account_credential"),{TAG:"CodingAccountCredential",_0:{accountId:e.f("accountId",L),grantId:e.f("grantId",L),generation:e.f("generation",gr),credential:e.f("credential",L)}})),l1e=bt(e=>(e.tag("type","reconnect_thread"),{TAG:"ReconnectThread",_0:e.flatten(t1e)})),d1e=bt(e=>(e.tag("type","list_claude_code_sessions"),{TAG:"ListClaudeCodeSessions",_0:{instanceId:e.f("instanceId",J(L)),requestId:e.f("requestId",J(L)),cwd:e.f("cwd",J(L)),limit:e.f("limit",J(gr)),messagesPerSession:e.f("messagesPerSession",J(gr))}})),u1e=bt(e=>(e.tag("type","list_agent_slash_commands"),{TAG:"ListAgentSlashCommands",_0:{instanceId:e.f("instanceId",J(L)),requestId:e.f("requestId",J(L)),threadId:e.f("threadId",J(L)),cwd:e.f("cwd",J(L)),harness:e.f("agentProvider",J(L)),harnessSessionKey:e.f("providerSessionKey",J(L))}})),c1e=bt(e=>(e.tag("type","browse_directory"),{TAG:"BrowseDirectory",_0:{instanceId:e.f("instanceId",J(L)),requestId:e.f("requestId",J(L)),path:e.f("path",J(L))}})),f1e=bt(e=>(e.tag("type","create_project"),{TAG:"CreateProject",_0:{instanceId:e.f("instanceId",J(L)),requestId:e.f("requestId",J(L)),name:e.f("name",J(L)),description:e.f("description",J(L)),template:e.f("template",J(L))}})),m1e=bt(e=>(e.tag("type","clone_repository"),{TAG:"CloneRepository",_0:{instanceId:e.f("instanceId",J(L)),requestId:e.f("requestId",J(L)),url:e.f("url",J(L)),destinationPath:e.f("destinationPath",J(L)),directoryName:e.f("directoryName",J(L)),branch:e.f("branch",J(L))}})),p1e=bt(e=>(e.tag("type","suggest_tasks"),{TAG:"SuggestTasks",_0:{instanceId:e.f("instanceId",J(L)),requestId:e.f("requestId",J(L)),workspace:e.f("workspace",J(L)),cwd:e.f("cwd",J(L)),modelProvider:e.f("modelProvider",J(L)),model:e.f("model",J(L)),llmProxy:e.f("llmProxy",J(ZD))}})),h1e=bt(e=>(e.tag("type","set_workspace_viewport"),{TAG:"SetWorkspaceViewport",_0:{instanceId:e.f("instanceId",J(L)),url:e.f("url",L),workspace:e.f("workspace",J(L)),layout:e.f("layout",J(L)),targetCount:e.f("targetCount",J(gr)),reason:e.f("reason",J(L))}})),_1e=bt(e=>(e.tag("type","import_onboarding_conversations"),{TAG:"ImportOnboardingConversations",_0:{instanceId:e.f("instanceId",J(L)),workspace:e.f("workspace",J(L)),sources:e.f("sources",J(Oo(si)))}})),g1e=bt(e=>(e.tag("type","scan_onboarding_projects"),{TAG:"ScanOnboardingProjects",_0:{instanceId:e.f("instanceId",J(L)),workspace:e.f("workspace",J(L)),paths:e.f("paths",J(Oo(si)))}})),b1e=bt(e=>(e.tag("type","remote_codex_exec"),{TAG:"RemoteCodexExec",_0:{instanceId:e.f("instanceId",J(L)),requestId:e.f("requestId",J(L)),threadId:e.f("threadId",J(L)),cwd:e.f("cwd",J(L)),command:e.f("command",J(L)),args:e.f("args",J(Oo(si))),env:e.f("env",J(xf(si))),stdin:e.f("stdin",J(L)),timeoutMs:e.f("timeoutMs",J(gr))}})),y1e=bt(e=>(e.tag("type","remote_codex_exec_cancel"),{TAG:"RemoteCodexExecCancel",_0:{instanceId:e.f("instanceId",J(L)),requestId:e.f("requestId",J(L)),threadId:e.f("threadId",J(L))}})),x1e=bt(e=>(e.tag("type","stop_instance"),{TAG:"StopInstance",_0:{instanceId:e.f("instanceId",L)}})),S1e=bt(e=>(e.tag("type","kill_instance"),{TAG:"KillInstance",_0:{instanceId:e.f("instanceId",L)}})),T1e=bt(e=>(e.tag("type","replace_runner"),{TAG:"ReplaceCommander",_0:{reason:e.f("reason",J(L)),replacementRunnerId:e.f("replacementRunnerId",J(L)),replacementVersion:e.f("replacementVersion",J(L))}})),v1e=bt(e=>(e.tag("type","update_available"),{TAG:"UpdateAvailable",_0:{latestVersion:e.f("latestVersion",J(L)),currentVersion:e.f("currentVersion",J(L)),reason:e.f("reason",J(L))}})),w1e=bt(e=>(e.tag("type","start_turn"),{TAG:"StartTurn",_0:{instanceId:e.f("instanceId",L),threadId:e.f("threadId",L),input:e.f("input",Oo(si))}})),A1e=bt(e=>(e.tag("type","steer_turn"),{TAG:"SteerTurn",_0:{instanceId:e.f("instanceId",L),threadId:e.f("threadId",L),turnId:e.f("turnId",J(L)),harnessSessionKey:e.f("providerSessionKey",J(L)),harness:e.f("agentProvider",J(L)),input:e.f("input",si),sourceSeq:e.f("sourceSeq",J(gr)),rootSeq:e.f("rootSeq",J(gr)),workspace:e.f("workspace",J(L)),channel:e.f("channel",J(L)),cwd:e.f("cwd",J(L)),workDescription:e.f("workDescription",J(L)),attachments:e.f("attachments",J(Oo(si))),linzumiContext:e.f("linzumiContext",J(si)),traceparent:e.f("traceparent",J(L))}})),k1e=bt(e=>(e.tag("type","steer_child_thread"),{TAG:"SteerChildThread",_0:{instanceId:e.f("instanceId",L),threadId:e.f("threadId",L),harnessSessionKey:e.f("providerSessionKey",L),harness:e.f("agentProvider",J(L)),providerChildThreadId:e.f("providerChildThreadId",L),input:e.f("input",si)}})),C1e=bt(e=>(e.tag("type","interrupt_turn"),{TAG:"InterruptTurn",_0:{instanceId:e.f("instanceId",L),threadId:e.f("threadId",L),turnId:e.f("turnId",J(L))}})),O1e=bt(e=>(e.tag("type","stop_turn"),{TAG:"StopTurn",_0:{instanceId:e.f("instanceId",J(L)),threadId:e.f("threadId",L),turnId:e.f("turnId",J(L)),harnessSessionKey:e.f("providerSessionKey",J(L)),harness:e.f("agentProvider",J(L)),targetSourceSeq:e.f("targetSourceSeq",J(gr))}})),E1e=bt(e=>(e.tag("type","compact_thread"),{TAG:"CompactThread",_0:{instanceId:e.f("instanceId",J(L)),requestId:e.f("requestId",L),workspace:e.f("workspace",L),channel:e.f("channel",L),threadId:e.f("threadId",L),harnessSessionKey:e.f("providerSessionKey",L),harness:e.f("agentProvider",L),sourceSeq:e.f("sourceSeq",gr),suppressMessageState:e.f("suppressMessageState",J(Fo))}})),P1e=bt(e=>(e.tag("type","rewind_thread"),{TAG:"RewindThread",_0:{instanceId:e.f("instanceId",J(L)),threadId:e.f("threadId",L),requestId:e.f("requestId",J(L)),harness:e.f("agentProvider",J(L)),checkpointId:e.f("checkpointId",J(L))}})),G1e=bt(e=>(e.tag("type","interrupt_queued_messages"),{TAG:"InterruptQueuedMessages",_0:{instanceId:e.f("instanceId",J(L)),threadId:e.f("threadId",L),harness:e.f("agentProvider",J(L)),throughSeq:e.f("throughSeq",J(gr))}})),I1e=bt(e=>(e.tag("type","resolve_codex_approval_request"),{TAG:"ResolveApprovalRequest",_0:{instanceId:e.f("instanceId",J(L)),threadId:e.f("threadId",L),sourceSeq:e.f("sourceSeq",gr),requestId:e.f("requestId",L),decision:e.f("decision",L),harness:e.f("agentProvider",J(L))}})),R1e=bt(e=>(e.tag("type","resolve_claude_user_input_request"),{TAG:"ResolveClaudeUserInputRequest",_0:{instanceId:e.f("instanceId",J(L)),threadId:e.f("threadId",L),sessionId:e.f("sessionId",J(L)),requestId:e.f("requestId",L),answers:e.f("answers",Oo(cZ)),actorUserId:e.f("actorUserId",J(gr)),actorSlug:e.f("actorSlug",J(L)),harness:e.f("agentProvider",J(L))}})),M1e=bt(e=>(e.tag("type","deny_claude_user_input_request"),{TAG:"DenyClaudeUserInputRequest",_0:{instanceId:e.f("instanceId",J(L)),threadId:e.f("threadId",L),sessionId:e.f("sessionId",J(L)),requestId:e.f("requestId",L),reason:e.f("reason",J(L)),actorUserId:e.f("actorUserId",J(gr)),actorSlug:e.f("actorSlug",J(L)),harness:e.f("agentProvider",J(L))}})),D1e=bt(e=>(e.tag("type","resolve_codex_user_input_request"),{TAG:"ResolveCodexUserInputRequest",_0:{instanceId:e.f("instanceId",J(L)),threadId:e.f("threadId",L),sessionId:e.f("sessionId",J(L)),requestId:e.f("requestId",L),answers:e.f("answers",Oo(cZ)),actorUserId:e.f("actorUserId",J(gr)),actorSlug:e.f("actorSlug",J(L)),harness:e.f("agentProvider",J(L))}})),$1e=bt(e=>(e.tag("type","deny_codex_user_input_request"),{TAG:"DenyCodexUserInputRequest",_0:{instanceId:e.f("instanceId",J(L)),threadId:e.f("threadId",L),sessionId:e.f("sessionId",J(L)),requestId:e.f("requestId",L),reason:e.f("reason",J(L)),actorUserId:e.f("actorUserId",J(gr)),actorSlug:e.f("actorSlug",J(L)),harness:e.f("agentProvider",J(L))}})),j1e=bt(e=>(e.tag("type","update_session_settings"),{TAG:"UpdateSessionSettings",_0:e.flatten(r1e)})),F1e=bt(e=>(e.tag("type","stream_idle_timeout_default"),{TAG:"StreamIdleTimeoutDefault",_0:e.flatten(n1e)})),N1e=bt(e=>(e.tag("type","resolve_port_forward_request"),{TAG:"ResolvePortForwardRequest",_0:{instanceId:e.f("instanceId",L),threadId:e.f("threadId",J(L)),requestId:e.f("requestId",L),decision:e.f("decision",L),actorUserId:e.f("actorUserId",J(gr)),actorSlug:e.f("actorSlug",J(L))}})),q1e=bt(e=>(e.tag("type","update_thread_interaction_access"),{TAG:"UpdateThreadInteractionAccess",_0:{instanceId:e.f("instanceId",J(L)),threadId:e.f("threadId",L),requesterUserId:e.f("requesterUserId",J(gr)),requesterSlug:e.f("requesterSlug",J(L)),grant:e.f("grant",Fo)}})),z1e=bt(e=>(e.tag("type","set_port_forward_enabled"),{TAG:"SetPortForwardEnabled",_0:{instanceId:e.f("instanceId",J(L)),port:e.f("port",gr),enabled:e.f("enabled",Fo)}})),L1e=bt(e=>(e.tag("type","read_thread"),{TAG:"ReadThread",_0:{instanceId:e.f("instanceId",L),threadId:e.f("threadId",L),includeTurns:e.f("includeTurns",J(Fo))}})),U1e=bt(e=>(e.tag("type","forward_http_request"),{TAG:"ForwardHttpRequest",_0:{instanceId:e.f("instanceId",J(L)),threadId:e.f("threadId",J(L)),requestId:e.f("requestId",L),port:e.f("port",gr),method:e.f("method",L),path:e.f("path",L),queryString:e.f("queryString",J(L)),headers:e.f("headers",J(si)),bodyBase64:e.f("bodyBase64",J(L))}})),B1e=bt(e=>(e.tag("type","forward_websocket_open"),{TAG:"ForwardWebSocketOpen",_0:{instanceId:e.f("instanceId",J(L)),threadId:e.f("threadId",J(L)),socketId:e.f("socketId",L),port:e.f("port",gr),path:e.f("path",L),queryString:e.f("queryString",J(L)),headers:e.f("headers",J(si))}})),W1e=bt(e=>(e.tag("type","forward_websocket_send"),{TAG:"ForwardWebSocketSend",_0:{instanceId:e.f("instanceId",J(L)),threadId:e.f("threadId",J(L)),socketId:e.f("socketId",L),opcode:e.f("opcode",L),bodyBase64:e.f("bodyBase64",L)}})),H1e=bt(e=>(e.tag("type","forward_websocket_close"),{TAG:"ForwardWebSocketClose",_0:{instanceId:e.f("instanceId",J(L)),threadId:e.f("threadId",J(L)),socketId:e.f("socketId",L)}})),V1e=bt(e=>(e.tag("type","forward_tcp_open"),{TAG:"ForwardTcpOpen",_0:{instanceId:e.f("instanceId",J(L)),threadId:e.f("threadId",J(L)),socketId:e.f("socketId",L),port:e.f("port",gr)}})),K1e=bt(e=>(e.tag("type","forward_tcp_send"),{TAG:"ForwardTcpSend",_0:{instanceId:e.f("instanceId",J(L)),threadId:e.f("threadId",J(L)),socketId:e.f("socketId",L),bodyBase64:e.f("bodyBase64",L)}})),J1e=bt(e=>(e.tag("type","forward_tcp_close"),{TAG:"ForwardTcpClose",_0:{instanceId:e.f("instanceId",J(L)),threadId:e.f("threadId",J(L)),socketId:e.f("socketId",L)}})),Z1e=bt(e=>(e.tag("type","update_runner_config"),{TAG:"UpdateCommanderConfig",_0:{instanceId:e.f("instanceId",J(L)),allowedCwds:e.f("allowedCwds",Oo(L)),configVersion:e.f("configVersion",J(gr))}})),Q1e=bt(e=>(e.tag("type","multi_agent_jobs_state"),{TAG:"MultiAgentJobsState",_0:{workspace:e.f("workspace",J(L)),enabled:e.f("enabled",J(Fo))}})),Y1e=bt(e=>(e.tag("type","fleet_breaker_state"),{TAG:"FleetBreakerState",_0:{state:e.f("state",J(L)),fate:e.f("fate",J(L)),openedAt:e.f("openedAt",J(Bb(L))),probeIntervalSeconds:e.f("probeIntervalSeconds",J(gr)),detectionRule:e.f("detectionRule",J(Bb(L))),monitorOnly:e.f("monitorOnly",J(Fo)),version:e.f("version",J(gr))}})),X1e=bt(e=>(e.tag("type","start_local_editor"),{TAG:"StartLocalEditor",_0:{instanceId:e.f("instanceId",J(L)),requestId:e.f("requestId",J(L)),cwd:e.f("cwd",L),browserBaseUrl:e.f("browserBaseUrl",J(L)),collaboration:e.f("collaboration",J(i1e))}})),ePe=bt(e=>(e.tag("type","set_commander_impl"),{TAG:"SetCommanderImpl",_0:{impl:e.f("impl",J(L))}})),tPe=bt(e=>(e.tag("type","invoke_cross_harness_switch"),{TAG:"InvokeCrossHarnessSwitch",_0:{instanceId:e.f("instanceId",J(L)),requestId:e.f("requestId",J(L)),threadId:e.f("threadId",J(L)),harnessSessionId:e.f("harnessSessionId",J(L)),sourceSeq:e.f("sourceSeq",J(gr)),targetHarness:e.f("targetHarness",J(L)),model:e.f("model",J(L)),targetSessionId:e.f("targetSessionId",J(L))}})),rPe=Sf([a1e,s1e,o1e,l1e,d1e,u1e,c1e,f1e,m1e,p1e,h1e,_1e,g1e,b1e,y1e,x1e,S1e,T1e,v1e,w1e,A1e,k1e,C1e,O1e,E1e,P1e,G1e,I1e,R1e,M1e,D1e,$1e,j1e,F1e,N1e,q1e,z1e,L1e,U1e,B1e,W1e,H1e,V1e,K1e,J1e,Z1e,Q1e,Y1e,X1e,ePe,tPe]),nPe=["authorize_coding_account","coding_account_credential","start_instance","reconnect_thread","list_claude_code_sessions","list_agent_slash_commands","browse_directory","create_project","clone_repository","suggest_tasks","set_workspace_viewport","import_onboarding_conversations","scan_onboarding_projects","remote_codex_exec","remote_codex_exec_cancel","stop_instance","kill_instance","replace_runner","update_available","start_turn","steer_turn","steer_child_thread","interrupt_turn","stop_turn","compact_thread","rewind_thread","interrupt_queued_messages","resolve_codex_approval_request","resolve_claude_user_input_request","deny_claude_user_input_request","resolve_codex_user_input_request","deny_codex_user_input_request","update_session_settings","stream_idle_timeout_default","resolve_port_forward_request","update_thread_interaction_access","set_port_forward_enabled","read_thread","forward_http_request","forward_websocket_open","forward_websocket_send","forward_websocket_close","forward_tcp_open","forward_tcp_send","forward_tcp_close","update_runner_config","multi_agent_jobs_state","fleet_breaker_state","start_local_editor","set_commander_impl","invoke_cross_harness_switch"];function px(e){let t=rt(e);if(t===void 0)return{TAG:"Error",_0:ot("expected a control object")};let r=t.control_seq,n=typeof r=="number"?r:void 0,i=t.type,o=typeof i=="string"?i:void 0;return o!==void 0?nPe.includes(o)?Qe(kl(e,rPe),a=>({controlSeq:n,control:a})):{TAG:"Ok",_0:{controlSeq:n,control:{TAG:"Unknown",_0:{controlType:o,raw:t}}}}:{TAG:"Error",_0:ot("control is missing a string `type`")}}var bJe=bt(e=>({controlSeq:e.f("control_seq",J(gr)),event:e.f("event",L),payload:e.f("payload",xf(si))}));function pZ(e){return JSON.parse(JSON.stringify(e))}function pk(e){return{type:"user",message:{role:"user",content:e},parent_tool_use_id:null}}function QD(e){return{TAG:"TurnKey",_0:e}}var hk=Q;function YD(e){if(e.TAG!=="InitialReleaseLease")return e._1}function XD(e){return e.TAG==="InitialReleaseLease"?e._1:e._2}function D0(e,t){return e.TAG==="InitialReleaseLease"?t.TAG==="InitialReleaseLease"&&e._0===t._0?Q(e._1,t._1):!1:t.TAG==="InitialReleaseLease"||!(e._0===t._0&&Q(e._1,t._1))?!1:Q(e._2,t._2)}var mZ="Claude Code streaming input is closed";function iPe(e,t){let r={contents:0},n=()=>(r.contents=r.contents+1|0,{TAG:"Reader",_0:r.contents}),i={contents:0},o=()=>(i.contents=i.contents+1|0,{TAG:"TurnKey",_0:"legacy-turn-"+i.contents.toString()}),a=e.initialTurnKey,s=a!==void 0?a:o(),l=pk(e.content),d=t?[]:[l],u=t?[]:[{turnKey:s,sourceSeq:e.sourceSeq}],c=[],f=new Set,p=new Map;t||(f.add(s),p.set(l,s));let m=()=>{for(;;){let ie=o();if(!f.has(ie))return ie}},h={contents:0},_={contents:void 0},g={contents:void 0},b=new Set,y=[],S=new Map,T=[],v={contents:!1},O=ie=>new Promise((ge,Pe)=>{S.set(ie,ge)}),A=(ie,ge)=>{let Pe=S.get(ie);if(Pe!==void 0)return S.delete(ie),Pe(ge)},C=ie=>{A(ie,!0);let ge=p.get(ie);if(ge===void 0)return;p.delete(ie);let Pe=e.onTurnPulled;if(Pe!==void 0){Promise.resolve().then(()=>(Pe(ge),Promise.resolve()));return}},k=ie=>{T.forEach(ge=>{if(!Q(ge.turnKey,ie))return;let Pe=d.findIndex(Ge=>Q(Ge,ge.message));if(Pe>=0)return d.splice(Pe,1),A(ge.message,!1)})},I=()=>{let ie=v.contents;for(;ie;){let ge=y.shift();ge!==void 0?ge.settle("Done"):ie=!1}},U=(ie,ge,Pe)=>{u.push({turnKey:Pe,sourceSeq:ge}),p.set(ie,Pe);let Ge=e.onInputDelivered;Ge!==void 0&&Ge();let ae=e.onSourceSeqDelivered;ge!==void 0&&ae!==void 0&&!b.has(ge)&&(b.add(ge),ae(ge));let Be=y.shift();if(Be!==void 0)return C(ie),Be.settle({TAG:"Next",_0:ie});if(d.push(ie),t){g.contents={followUpMessage:ie,followUpSourceSeq:ge,followUpTurnKey:Pe};return}else return},F=(ie,ge,Pe)=>{let Ge=u.length!==0;return!t&&!Ge?(U(ie,ge,Pe),"Delivered"):(c.push({followUpMessage:ie,followUpSourceSeq:ge,followUpTurnKey:Pe}),{TAG:"Parked",queuePosition:c.length})},M=(ie,ge,Pe)=>{let Ge=v.contents,ae=f.has(ie);return Ge?{TAG:"Error",_0:"QueueClosed"}:ae?{TAG:"Error",_0:{TAG:"DuplicateTurnKey",_0:ie}}:(f.add(ie),{TAG:"Ok",_0:F(pk(ge),Pe,ie)})},D=(ie,ge)=>{let Pe=m(),Ge=M(Pe,ie,ge);if(Ge.TAG==="Ok")return{TAG:"Ok",_0:Ge._0};let ae=Ge._0;return typeof ae!="object"&&ae==="QueueClosed"?{TAG:"Error",_0:mZ}:{TAG:"Error",_0:"Dispatch input queue rejected an internally generated turn key"}},V=ie=>{if(v.contents)return{TAG:"Error",_0:mZ};let ge=pk(ie),Pe=O(ge),Ge=Je(e.isLiveSteerAllowed,!1,xe=>xe()===!1);if(u.length===0){let xe=m();return f.add(xe),F(ge,void 0,xe),{TAG:"Ok",_0:{steered:"steered_queued",pulledImmediately:!1,applied:Pe}}}if(Ge){let xe=m();return f.add(xe),F(ge,void 0,xe),{TAG:"Ok",_0:{steered:"steered_queued",pulledImmediately:!1,applied:Pe}}}let Be=y.shift();return{TAG:"Ok",_0:{steered:"steered_live",pulledImmediately:Be!==void 0?(A(ge,!0),Be.settle({TAG:"Next",_0:ge}),!0):(d.push(ge),!1),applied:Pe}}},te=(ie,ge,Pe)=>{let Ge=pk(Pe),ae=T.find(vt=>vt.ticketId===ge);if(ae!==void 0){let vt=Q(ae.turnKey,ie),tr=Q(ae.message,Ge);return vt&&tr?{TAG:"Ok",_0:ae.outcome}:{TAG:"Error",_0:{TAG:"DuplicateSteerTicket",_0:ge}}}let Be=v.contents,Le=u[0];if(Be)return{TAG:"Error",_0:"QueueClosed"};if(Le===void 0)return{TAG:"Error",_0:"NoCurrentTurn"};if(!Q(Le.turnKey,ie))return{TAG:"Error",_0:{TAG:"SteerTargetMismatch",_0:Le.turnKey,_1:ie}};if(Je(e.isLiveSteerAllowed,!1,vt=>vt()===!1))return{TAG:"Error",_0:{TAG:"SteerTargetClosed",_0:ie}};let Ye=O(Ge),ft=y.shift(),_t={steered:"steered_live",pulledImmediately:ft!==void 0?(A(Ge,!0),ft.settle({TAG:"Next",_0:Ge}),!0):(d.push(Ge),!1),applied:Ye};return T.push({turnKey:ie,ticketId:ge,message:Ge,outcome:_t}),{TAG:"Ok",_0:_t}},ee=ie=>{let ge=d.shift();if(ge!==void 0){let Ge=g.contents;return Ge!==void 0&&Q(Ge.followUpMessage,ge)&&(g.contents=void 0),C(ge),Promise.resolve({TAG:"Next",_0:ge})}if(v.contents)return Promise.resolve("Done");let Pe=e.onInputWait;return Pe!==void 0&&Pe(G(u[0],Ge=>Ge.sourceSeq)),new Promise((Ge,ae)=>{y.push({reader:ie,settle:Ge})})},X=()=>ee(void 0),K=ie=>ee(ie),E=ie=>{let ge=je(y,Pe=>{let Ge=Pe.reader;if(Ge!==void 0&&Q(Ge,ie)){Pe.settle("Done");return}else return Pe});return y.splice(0,y.length,...ge),Promise.resolve()},R=()=>{let ie=g.contents;t&&ie!==void 0&&(p.delete(ie.followUpMessage),d.shift(),u.shift(),c.splice(0,0,ie),g.contents=void 0),t&&(d.splice(0,d.length),u.splice(0,u.length));let ge=u.length===0;if(!t&&ge){let Pe=!0;for(;Pe;){let Ge=c.shift();Ge!==void 0?U(Ge.followUpMessage,Ge.followUpSourceSeq,Ge.followUpTurnKey):Pe=!1}}v.contents=!0,I(),S.forEach((Pe,Ge)=>A(Ge,!1))},W=()=>{let ie=c.slice();return c.splice(0,c.length),ie},H=ie=>{let ge=v.contents,Pe=_.contents,Ge=u[0];if(ge)return{TAG:"Error",_0:"QueueClosed"};if(Pe!==void 0)return{TAG:"Error",_0:"ReleaseAlreadyPending"};if(Ge===void 0)return{TAG:"Error",_0:"NoCurrentTurn"};if(!Q(Ge.turnKey,ie))return{TAG:"Error",_0:{TAG:"PredecessorMismatch",_0:Ge.turnKey,_1:ie}};h.contents=h.contents+1|0;let ae=h.contents,Be=q(c[0],xe=>xe.followUpTurnKey),Le={TAG:"SuccessorReleaseLease",_0:ae,_1:ie,_2:Be};return _.contents=Le,{TAG:"Ok",_0:Le}},de=()=>{let ie=v.contents,ge=_.contents,Pe=u[0],Ge=c[0];if(ie)return{TAG:"Error",_0:"QueueClosed"};if(ge!==void 0)return{TAG:"Error",_0:"ReleaseAlreadyPending"};if(Pe!==void 0)return{TAG:"Error",_0:"ReleaseAlreadyPending"};if(Ge===void 0)return{TAG:"Error",_0:"NoCurrentTurn"};h.contents=h.contents+1|0;let ae=h.contents,Be=Ge.followUpTurnKey,Le={TAG:"InitialReleaseLease",_0:ae,_1:Be};return _.contents=Le,{TAG:"Ok",_0:Le}},ne=ie=>{let ge=v.contents,Pe=_.contents;if(ge)return{TAG:"Error",_0:"QueueClosed"};if(Pe===void 0)return{TAG:"Error",_0:"StaleReleaseLease"};if(!D0(Pe,ie))return{TAG:"Error",_0:"StaleReleaseLease"};let Ge=u[0];if(ie.TAG==="InitialReleaseLease"){if(Ge!==void 0)return{TAG:"Error",_0:"ReleaseSuccessorChanged"};let Ye=c[0];return Ye!==void 0&&Q(Ye.followUpTurnKey,ie._1)?(_.contents=void 0,c.shift(),U(Ye.followUpMessage,Ye.followUpSourceSeq,Ye.followUpTurnKey),{TAG:"Ok",_0:void 0}):{TAG:"Error",_0:"ReleaseSuccessorChanged"}}if(Ge===void 0)return{TAG:"Error",_0:"NoCurrentTurn"};let ae=ie._1;if(!Q(Ge.turnKey,ae))return{TAG:"Error",_0:{TAG:"PredecessorMismatch",_0:Ge.turnKey,_1:ae}};let Be=q(c[0],Ye=>Ye.followUpTurnKey);if(!Q(Be,ie._2))return{TAG:"Error",_0:"ReleaseSuccessorChanged"};k(ae);let Le=g.contents;if(t&&Le!==void 0&&Q(Le.followUpTurnKey,ae)){let Ye=d.findIndex(ft=>Q(ft,Le.followUpMessage));Ye>=0&&d.splice(Ye,1),p.delete(Le.followUpMessage),g.contents=void 0}u.shift(),_.contents=void 0;let xe=c.shift();return xe!==void 0&&U(xe.followUpMessage,xe.followUpSourceSeq,xe.followUpTurnKey),{TAG:"Ok",_0:Ge.sourceSeq}};return{next:X,openReader:n,nextFor:K,cancelReader:E,close:R,enqueue:D,enqueueTurn:M,enqueueSteer:V,enqueueSteerFor:te,drainUndeliveredFollowUps:W,beginRelease:H,beginInitialRelease:de,commitRelease:ne,cancelRelease:ie=>{let ge=v.contents,Pe=_.contents;return ge?{TAG:"Error",_0:"QueueClosed"}:Pe!==void 0&&D0(Pe,ie)?(_.contents=void 0,{TAG:"Ok",_0:void 0}):{TAG:"Error",_0:"StaleReleaseLease"}},retract:ie=>{let ge=c.findIndex(ae=>Q(ae.followUpTurnKey,ie)),Pe=v.contents,Ge=ge>=0;return Pe?{TAG:"Error",_0:"QueueClosed"}:Ge?(c.splice(ge,1),{TAG:"Ok",_0:void 0}):{TAG:"Error",_0:{TAG:"TurnNotDeferred",_0:ie}}},completeTurn:()=>{let ie=v.contents,ge=u[0];if(ge===void 0)return;if(ie)return G(u.shift(),ae=>ae.sourceSeq);let Pe=H(ge.turnKey);if(Pe.TAG!=="Ok")return;let Ge=ne(Pe._0);if(Ge.TAG==="Ok")return Ge._0},currentSourceSeq:()=>G(u[0],ie=>ie.sourceSeq),currentTurnKey:()=>q(u[0],ie=>ie.turnKey)}}function hZ(e){let t=iPe({content:null,sourceSeq:void 0,initialTurnKey:{TAG:"TurnKey",_0:"empty-staged-queue-placeholder"},onInputDelivered:e.onInputDelivered,onTurnPulled:e.onTurnPulled,isLiveSteerAllowed:e.isLiveSteerAllowed,onInputWait:e.onInputWait,onSourceSeqDelivered:e.onSourceSeqDelivered},!0);return{openReader:t.openReader,nextFor:t.nextFor,cancelReader:t.cancelReader,close:t.close,enqueueTurn:t.enqueueTurn,enqueueSteerFor:t.enqueueSteerFor,drainUndeliveredFollowUps:t.drainUndeliveredFollowUps,beginRelease:t.beginRelease,beginInitialRelease:t.beginInitialRelease,commitRelease:t.commitRelease,cancelRelease:t.cancelRelease,retract:t.retract,currentSourceSeq:t.currentSourceSeq,currentTurnKey:t.currentTurnKey}}function t$(e,t){let r=async()=>{let o=await e.nextFor(t);return typeof o!="object"?{done:!0}:{done:!1,value:pZ(o._0)}},n=()=>e.cancelReader(t).then(()=>({done:!0})),i={};return i[Symbol.asyncIterator]=()=>({next:r,return:n}),i}function r$(e){return import(e)}var gZ="@anthropic-ai/claude-agent-sdk";function oPe(e){return{next:()=>e.next(),close:()=>{e.close()},interrupt:()=>e.interrupt(),setModel:t=>e.setModel(t),setPermissionMode:t=>e.setPermissionMode(t),applyFlagSettings:t=>e.applyFlagSettings(t),supportedCommands:()=>e.supportedCommands()}}async function bZ(){let e=await r$(gZ);return{query:t=>oPe(e.query(t)),getSessionInfo:(t,r)=>e.getSessionInfo(t,r),listSessions:t=>e.listSessions(t),getSessionMessages:(t,r)=>e.getSessionMessages(t,r)}}async function aPe(e,t){try{let r=await e();return t(r),{TAG:"Ok",_0:void 0}}catch(r){let n=N(r);return{TAG:"Error",_0:w(G(wt(n),Ct),"unknown Claude authentication probe failure")}}}function sPe(e,t){return{options:{cwd:e,pathToClaudeCodeExecutable:t,persistSession:!1,settingSources:["user","project","local"],tools:[]},initializeTimeoutMs:15e3}}async function n$(e,t){return await aPe(async()=>await(await r$(gZ)).startup(sPe(e,t)),r=>{r.close()})}var i$=["codex","claude-code","pi","opencode"];function Up(e){return e}function _k(e){switch(e.TAG){case"SessionStarted":return"session_started";case"TurnStarted":return"turn_started";case"ItemStarted":return"item_started";case"ItemDelta":return"item_delta";case"ItemCompleted":return"item_completed";case"ApprovalRequested":return"approval_requested";case"UsageUpdated":return"usage_updated";case"RateLimitUpdated":return"rate_limit_updated";case"ActivityPulse":return"activity_pulse";case"TurnCompleted":return"turn_completed";case"TurnFailed":return"turn_failed";case"TurnInterrupted":return"turn_interrupted";case"HarnessDied":return"harness_died"}}import*as xZ from"node:child_process";var dPe=/^(\d+)\s+(\d+)\s+(.*)$/;function a$(e,t){return w(w(e.slice(1)[t],void 0),"")}function uPe(e){return je(e.split(`
|
|
656
|
+
`).map(t=>t.trim()).find(t=>t.startsWith(nk))}var hJe=new RegExp("worker exited before ready|worker did not report ready within","i");function Xn(e,t){let r=e.trim(),n=r.length,i=" ... ",o=i.length,a=n<=t,s=t<(o+2|0);if(a)return r;if(s)return r.slice(n-Math.max(1,t)|0,n);let l=Math.max(1,Math.floor((t-o|0)/3)|0),d=Math.max(1,(t-o|0)-l|0);return r.slice(0,l)+i+r.slice(n-d|0,n)}function zOe(e){return new Promise((t,r)=>{setTimeout(()=>t(),e)})}async function nJ(e,t,r,n,i,o){let a=o!==void 0?o:MOe,s=Math.max(1,w(t,2)),l=w(r,250),d=w(n,zOe),u,c,f=1;for(;Ln(u)&&f<=s;){let m=f,h=await e(m);if(h.TAG==="Ready")u={TAG:"Ok",_0:h._0};else{let _=h._0;c=_;let g=qOe(_.capturedOutput),b=m<s&&Ln(g),y={};y.purpose=ND,y.attempt=m,y.maxAttempts=s,y.code=Je(_.code,null,S=>S),y.signal=Je(_.signal,null,S=>S),y.capturedOutput=_.capturedOutput,y.willRespawn=b,g!==void 0&&(y.deterministicPreflightFailure=g),a("runner.thread_runner_exited_before_ready",y),g!==void 0?u={TAG:"Error",_0:g}:(b&&(i!==void 0&&i({attemptNumber:m+1|0,previous:_}),l>0&&await d(l)),f=m+1|0)}}let p=u;return p!==void 0?p:{TAG:"Error",_0:rk(w(c,{code:void 0,signal:void 0,capturedOutput:""}))}}function iJ(e){return typeof e!="object"?e==="WorkerManagedRunner":!1}var oJ=3e4;import*as G0 from"node:fs";import*as bJ from"node:os";import*as Yi from"node:path";var cx="KANDAN_EDITOR_COLLABORATION_",aJ=cx+"DEPLOYMENT_SHAPE",sJ=cx+"ENTRY_MODE",lJ=cx+"ROOM_ID",dJ=cx+"SERVER_URL",uJ=cx+"AUTO_HOST_CLAIM_PATH",ok="Kandan",cJ="kandan-local-editor-",fJ="oct.kandanEditorSessionId",mJ="oct.kandanCollaborationStateUrl",pJ="kandan_auto_host_or_join",hJ="kandan-oct-auto-host.lock",_J="/_linzumi/collaboration/",gJ="/api/v2/local-codex-runner/editor-runtime/",Hf="kandan",P0="kandan.document-state-telemetry";function sk(e){return e.message}function yJ(){return{tmpdir:()=>bJ.tmpdir(),mkdtemp:e=>Ve(Zd(e),sk),mkdirRecursive:e=>Ve(Nt(e),sk),writeFileUtf8:(e,t)=>Ve(jn(e,t),sk),existsSync:e=>G0.existsSync(e),copyFile:(e,t)=>{try{return{TAG:"Ok",_0:(G0.copyFileSync(e,t),void 0)}}catch(r){let n=N(r);return{TAG:"Error",_0:Oe(n).message}}},copyTree:(e,t)=>{try{return{TAG:"Ok",_0:(G0.cpSync(e,t,{recursive:!0}),void 0)}}catch(r){let n=N(r);return{TAG:"Error",_0:Oe(n).message}}},readFileUtf8:e=>Ve(Rt(e),sk)}}function LD(e,t,r,n){return["--bind-addr","127.0.0.1:"+e.toString(),"--auth","none","--disable-telemetry","--disable-update-check","--disable-workspace-trust","--disable-getting-started-override","--app-name",ok,"--user-data-dir",r].concat((n!==void 0?["--extensions-dir",n]:[]).concat([t]))}function LOe(e){let t={};return t["extensions.autoCheckUpdates"]=!1,t["extensions.autoUpdate"]=!1,t["extensions.ignoreRecommendations"]=!0,t["extensions.showRecommendationsOnlyOnDemand"]=!0,t["oct.alwaysAskToOverrideServerUrl"]=!1,t["oct.joinAcceptMode"]="auto",e!==void 0&&(t[fJ]=e.control.editorSessionId,t[mJ]=e.collaborationStateUrl,t["oct.serverUrl"]=e.bootstrapServerUrl),t["security.workspace.trust.enabled"]=!1,t["telemetry.telemetryLevel"]="off",t["workbench.secondarySideBar.defaultVisibility"]="hidden",t["workbench.startupEditor"]="none",t["workbench.welcomePage.walkthroughs.openOnInstall"]=!1,t}var UOe=new RegExp(`exec\\s+(?:"([^"]+)"|'([^']+)'|([^\\s]+))\\s+"\\$@"`,"u");function BOe(e,t){let r=t.readFileUtf8(e);if(r.TAG!=="Ok")return[];let n=UOe.exec(r._0);if(n==null)return[];let i=n.slice(1),o=l=>G(i[l],d=>d),a=gn(gn(o(0),o(1)),o(2));return a===void 0?[]:a.trim()===""?[]:[a]}function UD(e){let t={},r=[];return e.forEach(n=>{let i=n.length>0,o=t[n];if(i&&o===void 0){t[n]=!0,r.push(n);return}}),r}function WOe(e){return[Yi.join(e,"extensions","git-base","dist","extension.js"),Yi.join(e,"extensions","merge-conflict","dist","mergeConflictMain.js")]}var HOe="code-server runtime did not include a VS Code root candidate";function VOe(e,t){let r=a=>Yi.join(Yi.dirname(Yi.dirname(a)),"lib","vscode"),n=UD([Yi.join(e.root,"lib","vscode"),r(e.codeServerBin)].concat(BOe(e.codeServerBin,t).map(r))),i=n.find(a=>WOe(a).every(s=>t.existsSync(s))),o=n[0];return i!==void 0?{TAG:"Ok",_0:i}:o!==void 0?{TAG:"Ok",_0:o}:{TAG:"Error",_0:HOe}}function KOe(e){let t=(n,i)=>Yi.join(e,"extensions",n,"dist",i),r=(n,i)=>Yi.join(e,"extensions",n,"dist","browser",i);return[{source:t("git-base","extension.js"),target:r("git-base","extension.js"),required:!0},{source:t("git-base","extension.js.map"),target:r("git-base","extension.js.map"),required:!1},{source:t("merge-conflict","mergeConflictMain.js"),target:r("merge-conflict","mergeConflictMain.js"),required:!0},{source:t("merge-conflict","mergeConflictMain.js.map"),target:r("merge-conflict","mergeConflictMain.js.map"),required:!1}]}function JOe(e,t){return Ee(VOe(e,t),r=>Xe(KOe(r),{TAG:"Ok",_0:void 0},(n,i)=>Ee(n,()=>{let o=t.existsSync(i.target),a=!i.required&&!t.existsSync(i.source);return o||a?{TAG:"Ok",_0:void 0}:Ee(t.mkdirRecursive(Yi.dirname(i.target)),()=>t.copyFile(i.source,i.target))})))}function xJ(e,t,r){return Ee(r.mkdtemp(Yi.join(r.tmpdir(),cJ)),n=>{let i=Yi.join(n,"extensions"),o=Yi.join(n,"collaboration-server"),a=Yi.join(n,"tmp"),s=Yi.join(n,"User");return Qe(Ee(Ee(Ee(Ee(Ee(r.mkdirRecursive(s),()=>r.mkdirRecursive(i)),()=>r.mkdirRecursive(o)),()=>r.mkdirRecursive(a)),()=>t!==void 0?Ee(JOe(t,r),()=>{let l=Yi.join(i,P0);return Ee(r.mkdirRecursive(Yi.dirname(l)),()=>r.copyTree(t.assets.documentStateExtensionDir,l))}):{TAG:"Ok",_0:void 0}),()=>r.writeFileUtf8(Yi.join(s,"settings.json"),JSON.stringify(LOe(e),void 0,2))),()=>({userDataDir:n,extensionsDir:i,collaborationServerDir:o}))})}function SJ(e,t,r,n){let i={};return Object.entries(e).forEach(o=>{let a=o[0];a!=="PORT"&&(i[a]=o[1])}),i.PWD=t,n!==void 0&&(i[aJ]="local_runner_sidecar",i[sJ]=pJ,i[lJ]=n.control.roomId,i[dJ]=n.bootstrapServerUrl,i[uJ]=Yi.join(r,hJ)),i}function TJ(e,t){let r=q(e.LINZUMI_NODE_BIN,n=>n.trim());return r!==void 0&&r!==""?r:Yi.basename(t).toLowerCase().includes("bun")?"node":t}import*as R0 from"node:fs";import*as OJ from"node:os";import*as Oi from"node:path";import*as EJ from"node:crypto";import*as PJ from"node:child_process";function ZOe(e){switch(e){case"UnsupportedPlatform":return"unsupported_platform";case"AuthExpired":return"auth_expired";case"AuthUnauthorized":return"auth_unauthorized";case"ManifestUnavailable":return"manifest_unavailable";case"DownloadFailed":return"download_failed";case"ChecksumMismatch":return"checksum_mismatch";case"ArchiveExtractFailed":return"archive_extract_failed";case"InvalidArchive":return"invalid_archive";case"InstallFailed":return"install_failed"}}var wJ="server_managed",QOe="custom";function GJ(e){let t={};switch(e.TAG){case"RuntimeReady":t.status="ready",t.mode=wJ,t.version=e.version,t.platform=e.platform,t.archiveSha256=e.archiveSha256,t.codeServerVersion=e.codeServerVersion,t.updated=e.updated;break;case"RuntimeCustom":t.status="custom",t.mode=QOe,t.codeServerBin=e.codeServerBin;break;case"RuntimeUnavailable":t.status="unavailable",t.mode=wJ,t.reason=ZOe(e.reason);break}return t}function YOe(e,t){switch(e+"-"+t){case"darwin-arm64":return"darwin-arm64";case"darwin-x64":return"darwin-x64";case"linux-x64":return"linux-x64";default:return}}function Tu(e){if(e===void 0||typeof e!="string")return;let t=e.trim();if(t!=="")return t}var XOe=new RegExp("^[a-f0-9]{64}$","i");function IJ(e){return G(Tu(e),t=>{if(XOe.test(t))return t.toLowerCase()})}var WD="bin/code-server",eEe="linzumi-editor-runtime.json";function tEe(e){if(Array.isArray(e))return Xe(e,[],(t,r)=>G(t,n=>{if(typeof r!="object"||r===null||Array.isArray(r))return;let i=Tu(r.path),o=IJ(r.sha256),a=Tu(r.url),s=Tu(r.contentBase64);if(i!==void 0&&o!==void 0)return n.push({path:i,sha256:o,url:a,contentBase64:s}),n}))}function rEe(e){let t=Tu(e.version),r=Tu(e.platform),n=Tu(e.archiveUrl),i=IJ(e.archiveSha256),o=Tu(e.codeServerVersion),a=w(Tu(e.codeServerBinPath),WD),s=w(Tu(e.manifestPath),eEe),l=tEe(e.assets);return t!==void 0&&r!==void 0&&n!==void 0&&i!==void 0&&o!==void 0&&l!==void 0?{TAG:"Ok",_0:{version:t,platform:r,archiveUrl:n,archiveSha256:i,codeServerVersion:o,codeServerBinPath:a,manifestPath:s,assets:l}}:{TAG:"Error",_0:"ManifestUnavailable"}}function RJ(e,t){return Oi.resolve(e,t.platform,t.archiveSha256)}var AJ="/"+WD;function lk(e){let t=e.replaceAll("\\","/");if(t===WD)return".";if(!t.endsWith(AJ))return Oi.dirname(t);let r=t.slice(0,t.length-AJ.length|0);return r===""?".":r}function nEe(e){let t={};return e.forEach(r=>{t[r.path]=r.sha256}),t}function iEe(e,t){return e.protocol===t.protocol?e.host===t.host:!1}function oEe(e){return Oi.join(e,".linzumi","editor-runtimes")}var aEe=".install-",sEe="runtime.tar.gz",lEe="runtime";function MJ(e){return{collaborationExtensionTarball:Oi.join(...[e].concat([Hf,"editor_extensions","typefox.open-collaboration-tools.tar.gz"])),collaborationServerTarball:Oi.join(...[e].concat([Hf,"editor_servers","open-collaboration-server.tar.gz"])),documentStateExtensionDir:Oi.join(...[e].concat([Hf,"editor_extensions",P0]))}}function dEe(e){try{return{TAG:"Ok",_0:EJ.createHash("sha256").update(R0.readFileSync(e)).digest("hex")}}catch(t){let r=N(t);return{TAG:"Error",_0:Oe(r).message}}}function uEe(e,t){try{return{TAG:"Ok",_0:(R0.writeFileSync(e,t),void 0)}}catch(r){let n=N(r);return{TAG:"Error",_0:Oe(n).message}}}function cEe(e){return gJ+encodeURIComponent(e)+"/manifest"}async function fEe(e){let t=await e.bodyJson();if(t.TAG!=="Ok")return"AuthUnauthorized";let r=t._0;return typeof r!="object"||r===null||Array.isArray(r)?"AuthUnauthorized":r.error==="token_expired"?"AuthExpired":"AuthUnauthorized"}async function mEe(e,t,r,n){let i=ai(e);if(i.TAG!=="Ok")return{TAG:"Error",_0:"ManifestUnavailable"};let o=ko(cEe(r),i._0);if(o.TAG!=="Ok")return{TAG:"Error",_0:"ManifestUnavailable"};let a=await n.fetchUrl(o._0.toString(),t);if(a.TAG!=="Ok")return{TAG:"Error",_0:"ManifestUnavailable"};let s=a._0,l=s.status;if(l!==200)return l!==401?{TAG:"Error",_0:"ManifestUnavailable"}:{TAG:"Error",_0:await fEe(s)};let d=await s.bodyJson();if(d.TAG!=="Ok")return{TAG:"Error",_0:"ManifestUnavailable"};let u=d._0;if(typeof u!="object"||u===null||Array.isArray(u))return{TAG:"Error",_0:"ManifestUnavailable"};let c=u.ok,f=u.runtime;return c===!0&&typeof f=="object"&&f!==null&&!Array.isArray(f)?rEe(f):{TAG:"Error",_0:"ManifestUnavailable"}}function pEe(e){let t=lk(e.codeServerBinPath),r=["lib","vscode","node_modules","vsda","rust","web"];return[e.codeServerBinPath,Oi.join(...[t].concat(r.concat(["vsda.js"]))),Oi.join(...[t].concat(r.concat(["vsda_bg.wasm"]))),[Hf,"editor_extensions","typefox.open-collaboration-tools.tar.gz"].join("/"),[Hf,"editor_servers","open-collaboration-server.tar.gz"].join("/"),[Hf,"editor_extensions",P0].join("/")+"/package.json",[Hf,"editor_extensions",P0].join("/")+"/out/extension.js"]}function DJ(e,t,r){let n=nEe(t.assets),i=pEe(t).every(s=>{let l=n[s],d=s===t.codeServerBinPath;if(l===void 0)return d?r.existsSync(Oi.join(e,s)):!1;let u=Oi.join(e,s);if(!r.existsSync(u))return!1;let c=r.fileSha256(u);return c.TAG==="Ok"?c._0===l:!1}),o=MJ(e),a=r.existsSync(o.collaborationExtensionTarball)&&r.existsSync(o.collaborationServerTarball);if(i&&a)return o}function hEe(e,t,r){let n=RJ(e,t),i=Oi.join(n,t.manifestPath),o=Oi.join(n,t.codeServerBinPath),a=r.existsSync(i)&&r.existsSync(o),s=DJ(n,t,r);if(!a||s===void 0)return;let l=r.readFileUtf8(i);if(l.TAG!=="Ok")return;let d;try{d=JSON.parse(l._0)}catch{d=void 0}if(d===void 0||typeof d!="object"||d===null||Array.isArray(d))return;let u=Q(d.version,t.version),c=Q(d.platform,t.platform),f=d.archiveSha256,p=f!==void 0?typeof f=="string"?f===t.archiveSha256:!1:!0;if(u&&c&&p)return{root:n,codeServerBin:o,assets:s}}async function _Ee(e,t,r,n,i){let o=ai(e);if(o.TAG!=="Ok")return{TAG:"Error",_0:"DownloadFailed"};let a=o._0,s=ko(r.archiveUrl,a),l=Ao(a);if(s.TAG!=="Ok")return{TAG:"Error",_0:"DownloadFailed"};if(l===void 0)return{TAG:"Error",_0:"DownloadFailed"};let d=s._0,u=iEe(d,pe(l))?t:void 0,c=await i.fetchUrl(d.toString(),u);if(c.TAG!=="Ok")return{TAG:"Error",_0:"DownloadFailed"};let f=c._0;if(f.status!==200)return{TAG:"Error",_0:"DownloadFailed"};let m=await f.bodyBytes();if(m.TAG!=="Ok")return{TAG:"Error",_0:"DownloadFailed"};if(i.writeBytes(n,m._0).TAG!=="Ok")return{TAG:"Error",_0:"DownloadFailed"};let _=i.fileSha256(n);return _.TAG==="Ok"?_._0===r.archiveSha256?{TAG:"Ok",_0:void 0}:{TAG:"Error",_0:"ChecksumMismatch"}:{TAG:"Error",_0:"DownloadFailed"}}async function gEe(e,t,r){let n=t.contentBase64,i=t.url;if(n!==void 0)try{return{TAG:"Ok",_0:be(Buffer.from(n,"base64"))}}catch(o){let a=N(o);return{TAG:"Error",_0:Oe(a).message}}else{if(i===void 0)return{TAG:"Ok",_0:void 0};let o=ai(e);if(o.TAG!=="Ok")return{TAG:"Error",_0:o._0};let a=ko(i,o._0);if(a.TAG!=="Ok")return{TAG:"Error",_0:a._0};let s=await r.fetchUrl(a._0.toString(),void 0);if(s.TAG!=="Ok")return{TAG:"Error",_0:s._0};let l=s._0;if(l.status!==200)return{TAG:"Ok",_0:void 0};let u=await l.bodyBytes();return u.TAG==="Ok"?{TAG:"Ok",_0:be(u._0)}:{TAG:"Error",_0:u._0}}}async function bEe(e,t,r,n){let i=0,o=!1;for(;!o&&i<t.assets.length;){let a=t.assets[i];if(a!==void 0){let s=Oi.join(r,a.path),l=await gEe(e,a,n);if(l.TAG==="Ok"){let d=l._0;if(d!==void 0){let u=pe(d);Ee(n.mkdirRecursive(Oi.dirname(s)),()=>n.writeBytes(s,u)).TAG==="Ok"?i=i+1|0:o=!0}else i=i+1|0}else o=!0}else i=i+1|0}return!o}function yEe(e){let t={};return t.version=e.version,t.platform=e.platform,t.archiveSha256=e.archiveSha256,t.codeServerVersion=e.codeServerVersion,t.codeServerBinPath=e.codeServerBinPath,t.manifestPath=e.manifestPath,t.assets=e.assets.map(r=>{let n={};n.path=r.path,n.sha256=r.sha256;let i=r.url;i!==void 0&&(n.url=i);let o=r.contentBase64;return o!==void 0&&(n.contentBase64=o),n}),JSON.stringify(t,void 0,2)}async function xEe(e,t,r,n,i,o){let a=Oi.join(i,sEe),s=Oi.join(i,lEe),l=await _Ee(e,t,r,a,o);if(l.TAG!=="Ok")return{TAG:"Error",_0:l._0};if(o.mkdirRecursive(s).TAG!=="Ok")return{TAG:"Error",_0:"InstallFailed"};if(!await o.extractArchive(a,s))return{TAG:"Error",_0:"ArchiveExtractFailed"};if(!await bEe(e,r,s,o))return{TAG:"Error",_0:"InstallFailed"};let u=Oi.join(s,r.manifestPath),c=Oi.join(s,r.codeServerBinPath),f=o.existsSync(c),p=DJ(s,r,o);if(!f)return{TAG:"Error",_0:"InvalidArchive"};if(p===void 0)return{TAG:"Error",_0:"InvalidArchive"};let m=RJ(n,r);return Ee(Ee(Ee(Ee(o.mkdirRecursive(Oi.dirname(u)),()=>o.writeFileUtf8(u,yEe(r))),()=>o.rmRecursiveForce(m)),()=>o.mkdirRecursive(Oi.dirname(m))),()=>o.rename(s,m)).TAG==="Ok"?{TAG:"Ok",_0:{root:m,codeServerBin:Oi.join(m,r.codeServerBinPath),assets:MJ(m)}}:{TAG:"Error",_0:"InstallFailed"}}async function SEe(e,t,r,n,i){if(i.mkdirRecursive(n).TAG!=="Ok")return{TAG:"Error",_0:"InstallFailed"};let a=i.mkdtemp(Oi.join(n,aEe));if(a.TAG!=="Ok")return{TAG:"Error",_0:"InstallFailed"};let s=a._0,l=await xEe(e,t,r,n,s,i);return i.rmRecursiveForce(s),l}function kJ(e){return{status:{TAG:"RuntimeUnavailable",reason:e},codeServerBin:void 0,runtime:void 0}}function CJ(e,t,r){return{status:{TAG:"RuntimeReady",version:e.version,platform:e.platform,archiveSha256:e.archiveSha256,codeServerVersion:e.codeServerVersion,updated:r},codeServerBin:t.codeServerBin,runtime:t}}async function HD(e,t){let r=e.customCodeServerBin;if(r!==void 0)return{status:{TAG:"RuntimeCustom",codeServerBin:r},codeServerBin:r,runtime:void 0};let n=YOe(t.platform,t.arch);if(n===void 0)return{status:{TAG:"RuntimeUnavailable",reason:"UnsupportedPlatform"},codeServerBin:void 0,runtime:void 0};let i=await mEe(e.serviceUrl,e.token,n,t);if(i.TAG!=="Ok")return kJ(i._0);let o=i._0,a=w(e.cacheRoot,oEe(t.homeDir())),s=hEe(a,o,t);if(s!==void 0)return CJ(o,s,!1);let l=await SEe(e.serviceUrl,e.token,o,a,t);return l.TAG==="Ok"?CJ(o,l._0,!0):kJ(l._0)}var BD="editor_runtime.extract";function TEe(e,t,r){return new Promise((n,i)=>{let o="tar",a=["-xzf",e,"-C",t],s=a.map(f=>f);r("process.spawn",Object.fromEntries([["command",o],["args",s],["purpose",BD]]));let l=PJ.spawn(o,a,{stdio:["ignore","ignore","ignore"]}),d=l.pid,u=d??null;r("process.spawned",Object.fromEntries([["command",o],["args",s],["pid",u],["purpose",BD]]));let c={contents:!1};l.on("error",f=>{if(!c.contents)return c.contents=!0,n(!1)}),l.once("exit",(f,p)=>{if(r("process.exit",Object.fromEntries([["command",o],["args",s],["pid",u],["code",f??null],["signal",p??null],["purpose",BD]])),!c.contents)return c.contents=!0,n(Q(f==null?void 0:be(f),0))})})}function I0(e){return e.message}function VD(e){return{fetchUrl:async(t,r)=>{let n=r!==void 0?{headers:Object.fromEntries([["authorization","Bearer "+r]])}:{},i=await Ua(t,n);if(i.TAG!=="Ok")return{TAG:"Error",_0:i._0.message};let o=i._0;return{TAG:"Ok",_0:{status:o.status,bodyJson:async()=>{let a=await Cl(o);return a.TAG==="Ok"?{TAG:"Ok",_0:a._0}:{TAG:"Error",_0:a._0.message}},bodyBytes:async()=>{try{return{TAG:"Ok",_0:Buffer.from(await o.arrayBuffer())}}catch(a){let s=N(a);return{TAG:"Error",_0:Oe(s).message}}}}}},extractArchive:(t,r)=>TEe(t,r,e),platform:process.platform,arch:process.arch,homeDir:()=>OJ.homedir(),existsSync:t=>R0.existsSync(t),readFileUtf8:t=>Ve(Rt(t),I0),writeFileUtf8:(t,r)=>Ve(jn(t,r),I0),writeBytes:uEe,mkdirRecursive:t=>Ve(Nt(t),I0),mkdtemp:t=>Ve(Zd(t),I0),rmRecursiveForce:t=>Ve(pa(t),I0),rename:(t,r)=>Ve(Yn(t,r),I0),fileSha256:dEe}}import*as $J from"node:fs";import*as vu from"node:path";function jJ(){return{existsSync:e=>$J.existsSync(e),realpath:e=>Ve(Zi(e),t=>t.message)}}function vEe(e){return e.includes("/")?!0:e.includes("\\")}function wEe(e,t){let r=t.realpath(e);if(r.TAG==="Ok"){let i=vu.dirname(r._0);return i==="/"?void 0:i}let n=vu.dirname(e);switch(n){case".":case"/":return;default:return n}}function uk(e,t,r){return vEe(e)?q(wEe(e,r),n=>({command:e,directory:n})):Xe(t.split(vu.delimiter),void 0,(n,i)=>{let o=i.trim();if(n!==void 0)return n;if(o==="")return;let a=vu.join(i,e);if(!r.existsSync(a))return;let s=r.realpath(a);if(s.TAG!=="Ok")return;let l=s._0;return{command:l,directory:vu.dirname(l)}})}function FJ(e,t,r){return q(uk(e,t,r),n=>lk(n.command))}function AEe(e,t){let r=t.realpath(e);return r.TAG==="Ok"?[e,r._0]:[e]}var kEe=["/usr","/bin","/sbin","/lib","/lib64","/etc","/nix","/opt"];function CEe(e,t){let r=uk(w(e.bubblewrapBin,"bwrap"),e.envPath,t),n=uk(e.codeServerBin,e.envPath,t);if(r===void 0||n===void 0)return"SandboxUnavailable";let i=e.codeServerRuntimeRoot,o=UD(kEe.concat((i!==void 0?AEe(i,t):[]).concat([n.directory]))),a=e.extensionsDir,s=["--die-with-parent","--proc","/proc","--dev-bind","/dev","/dev","--tmpfs","/tmp","--setenv","HOME",e.cwd,"--setenv","PWD",e.cwd,"--setenv","XDG_DATA_HOME",vu.join(e.userDataDir,"data"),"--setenv","XDG_CONFIG_HOME",vu.join(e.userDataDir,"config")].concat(o.flatMap(l=>["--ro-bind-try",l,l]).concat(["--bind",e.cwd,e.cwd,"--bind",e.userDataDir,e.userDataDir].concat(a!==void 0?["--bind",a,a]:[]).concat(["--chdir",e.cwd,"--",n.command].concat(LD(e.port,e.cwd,e.userDataDir,e.extensionsDir)))));return{TAG:"LaunchReady",command:r.command,args:s}}function NJ(e,t){switch(e.platform){case"darwin":let n=uk(e.codeServerBin,e.envPath,t);return n!==void 0?{TAG:"LaunchReady",command:n.command,args:LD(e.port,e.cwd,e.userDataDir,e.extensionsDir)}:"SandboxUnavailable";case"linux":return CEe(e,t);default:return"SandboxUnavailable"}}var EEe=new RegExp("/+$");function qJ(e){if(e===void 0)return;let t=e.trim();if(t!=="")return t.replace(EEe,"")}function PEe(e){return _J+e.toString()}function GEe(e){return"/api/v2/editor/sessions/"+e.toString()+"/collaboration-state"}function zJ(e,t,r,n){if(e===void 0)return{TAG:"Ok",_0:void 0};if(r===void 0)return{TAG:"Ok",_0:void 0};let i=PEe(r),o=GEe(e.editorSessionId);return{TAG:"Ok",_0:{control:e,serverPort:r,serverUrl:i,bootstrapServerUrl:i,collaborationStateUrl:i+o}}}function ck(e){return{provider:e.control.provider,editorSessionId:e.control.editorSessionId,runtimeSessionId:e.control.runtimeSessionId,roomId:e.control.roomId,serverPort:e.serverPort,serverUrl:e.serverUrl}}function LJ(e,t){return e!==void 0?t!==void 0&&e.control.editorSessionId===t.editorSessionId&&e.control.runtimeSessionId===t.runtimeSessionId?e.control.roomId===t.roomId:!1:t===void 0}function UJ(e){let t={};return t.provider=e.provider,t.editorSessionId=e.editorSessionId,t.runtimeSessionId=e.runtimeSessionId,t.roomId=e.roomId,t.serverPort=e.serverPort,t.serverUrl=e.serverUrl,t}var REe="local_editor_disabled",MEe="missing_browser_base_url",Vf="code_server_spawn_failed",DEe="local_editor_filesystem_sandbox_unavailable";function JJ(e,t){if(t!==void 0)return{TAG:"CustomRuntime",_0:{codeServerBin:e,editorRuntime:t}}}function $Ee(e){return typeof e!="object"?"disabled":"running"}function ZJ(e,t,r){let n={};if(n.localEditor=jt(e)&&t.length!==0,n.localEditorStatus=$Ee(r),typeof r=="object"){let i=r.collaboration;n.localEditorPort=r.port,n.localEditorCwd=r.cwd,i!==void 0&&(n.localEditorCollaboration=UJ(ck(i.prepared)))}return n}function jEe(e){return e.map(t=>t)}function BJ(e,t){if(t!==void 0){e.pid=t;return}}function FEe(e){return e!==void 0?e:null}function NEe(e){return e!==void 0?e:null}var qEe="local_editor.code_server",zEe="local_editor.collaboration_sidecar",LEe="local_editor.install_process";function QJ(e){return new Promise((t,r)=>{let n={contents:!1},i=()=>{if(!n.contents)return n.contents=!0,t()};if(e.onExitOnce((o,a)=>i()),e.onCloseOnce(i),e.hasExited())return i()})}function YJ(e,t){return new Promise((r,n)=>{let i={contents:!1},o=a=>{if(!i.contents)return i.contents=!0,r(a)};e.onSpawnOnce(()=>o("ProcessSpawned")),e.onErrorOnce(a=>o("ProcessSpawnFailed")),t.scheduleImmediate(()=>{let a=i.contents,s=e.pid();if(!(a||s===void 0))return o("ProcessSpawned")})})}function XJ(e,t,r,n){let i=n.nowMs()+1e4;return new Promise((o,a)=>{let s={contents:!1},l={contents:void 0},d=f=>{if(s.contents)return;s.contents=!0;let p=l.contents;p!==void 0&&p(),o(f)},u=()=>{l.contents=n.scheduleTimeout(()=>{c()},50)},c=async()=>{if(n.nowMs()>i)return d("ProbeFailed");let f=await n.probeUrlStatus(e,t);return f.TAG==="Ok"&&f._0<500?d("ProbeReady"):u()};r.then(()=>(d("ProbeFailed"),Promise.resolve())),c()})}function KD(e,t,r,n,i,o){let a=()=>{let u={};return u.command=e.command,u.args=jEe(e.args),r.forEach(c=>{u[c[0]]=c[1]}),u},s=a();s.purpose=t,n.forEach(u=>{s[u[0]]=u[1]}),o.audit("process.spawn",s,i);let l=o.spawnProcess(e),d=a();return BJ(d,l.pid()),d.purpose=t,n.forEach(u=>{d[u[0]]=u[1]}),o.audit("process.spawned",d,i),l.onExitOnce((u,c)=>{let f=a();BJ(f,l.pid()),f.code=FEe(u),f.signal=NEe(c),f.purpose=t,n.forEach(p=>{f[p[0]]=p[1]}),o.audit("process.exit",f,i)}),l}function UEe(e,t,r){return new Promise((n,i)=>{let o=KD({command:e,args:t,cwd:void 0,env:void 0,stdio:"StderrOnly"},LEe,[],[],void 0,r),a={contents:!1},s=l=>{if(!a.contents)return a.contents=!0,n(l)};o.onErrorOnce(l=>s({TAG:"Error",_0:l})),o.onExitOnce((l,d)=>s(l!==void 0?l!==0?{TAG:"Error",_0:e+" exited with "+l.toString()}:{TAG:"Ok",_0:void 0}:{TAG:"Error",_0:e+" exited with unknown"}))})}async function WJ(e,t,r){let n=r.profile.mkdirRecursive(t);return n.TAG==="Ok"?await UEe("tar",["-xzf",e,"-C",t],r):{TAG:"Error",_0:n._0}}async function BEe(e,t,r,n,i){if(e===void 0)return{TAG:"SidecarStarted",collaboration:void 0,ready:Promise.resolve("ProbeReady")};if(!(await Promise.all([WJ(r.assets.collaborationExtensionTarball,t.extensionsDir,i),WJ(r.assets.collaborationServerTarball,t.collaborationServerDir,i)])).every(cz))return"SidecarFailed";let a=TJ(i.env,i.execPath),s=[VJ.join(t.collaborationServerDir,"open-collaboration-server","bundle","app.js"),"--hostname","127.0.0.1","--port",e.serverPort.toString()],l={};Object.entries(i.env).forEach(m=>{l[m[0]]=m[1]}),l.OCT_ACTIVATE_SIMPLE_LOGIN="true",l.OCT_SERVER_OWNER=ok;let d=[["editorSessionId",e.control.editorSessionId],["runtimeSessionId",e.control.runtimeSessionId]],u=KD({command:a,args:s,cwd:void 0,env:l,stdio:"InheritOutput"},zEe,[],d,n,i),c=QJ(u);if(await YJ(u,i)!=="ProcessSpawned")return"SidecarFailed";let p=XJ("http://127.0.0.1:"+e.serverPort.toString()+"/api/login/initial",!0,c,i);return{TAG:"SidecarStarted",collaboration:{prepared:e,process:u,exited:c},ready:p}}function HJ(e){if(typeof e!="object")return;let t=e.collaboration;if(t!==void 0)return t.prepared}function fx(e){if(typeof e!="object")return;let t=e.collaboration;if(e.process.kill("SIGINT"),t!==void 0)return t.process.kill("SIGINT")}async function eZ(e,t,r){let n=t.editorRuntime;if(n===void 0)return{TAG:"StartRefused",state:t.currentState,reason:REe};let i=w(Gi(r.env,"PATH"),""),o;if(n.TAG==="CustomRuntime"){let h=n._0,_=h.codeServerBin;o=[_,h.editorRuntime,FJ(_,i,r.sandboxFs)]}else{let h=n._0;o=[h.codeServerBin,h,h.root]}let a=o[1],s=ik(e.cwd,t.allowedCwds,r.isDangerousCwd);if(s.TAG!=="CwdAllowed")return{TAG:"StartRefused",state:t.currentState,reason:s.reason};let l=s.cwd,d=t.currentState,u;if(u=typeof d!="object"||d.cwd!==l?!1:LJ(HJ(t.currentState),e.collaboration),u){let h=t.currentState;return typeof h!="object"?{TAG:"StartRefused",state:t.currentState,reason:Vf}:{TAG:"Started",state:t.currentState,event:{cwd:h.cwd,port:h.port,startedAt:r.nowIso(),collaboration:q(HJ(t.currentState),ck)}}}let c=e.browserBaseUrl,f=qJ(c!==void 0?c:t.browserBaseUrl),p=e.collaboration,m=0;if(p!==void 0){if(f===void 0)return{TAG:"StartRefused",state:t.currentState,reason:MEe};m=1}else m=1;if(m===1){let h=await r.choosePort(),_=e.collaboration,g;if(_!==void 0){let D=await r.choosePort();g=D.TAG==="Ok"?{TAG:"Ok",_0:D._0}:{TAG:"Error",_0:D._0}}else g={TAG:"Ok",_0:void 0};if(h.TAG!=="Ok")return{TAG:"StartRefused",state:t.currentState,reason:Vf};let b=h._0;if(g.TAG!=="Ok")return{TAG:"StartRefused",state:t.currentState,reason:Vf};let y=f!==void 0?zJ(e.collaboration,w(t.runnerId,"local-runner"),g._0,f):{TAG:"Ok",_0:void 0};if(y.TAG!=="Ok")return{TAG:"StartRefused",state:t.currentState,reason:Vf};let S=y._0,T=xJ(S,a,r.profile);if(T.TAG!=="Ok")return{TAG:"StartRefused",state:t.currentState,reason:Vf};let v=T._0,O=NJ({codeServerBin:o[0],codeServerRuntimeRoot:o[2],port:b,cwd:l,userDataDir:v.userDataDir,extensionsDir:v.extensionsDir,platform:r.platform,bubblewrapBin:void 0,envPath:i},r.sandboxFs);if(typeof O!="object")return{TAG:"StartRefused",state:t.currentState,reason:DEe};let A,C=0;S!==void 0?a!==void 0?C=2:A=Promise.resolve("SidecarFailed"):a!==void 0?C=2:A=Promise.resolve({TAG:"SidecarStarted",collaboration:void 0,ready:Promise.resolve("ProbeReady")}),C===2&&(A=BEe(S,v,a,t.runnerId,r));let k=await A;if(typeof k!="object")return{TAG:"StartRefused",state:t.currentState,reason:Vf};let I=k.collaboration,U=KD({command:O.command,args:O.args,cwd:l,env:SJ(r.env,l,v.userDataDir,q(I,D=>D.prepared)),stdio:"InheritOutput"},qEe,[["cwd",l]],[],t.runnerId,r),F=QJ(U);return await YJ(U,r)==="ProcessSpawned"?(await Promise.all([XJ("http://127.0.0.1:"+b.toString()+"/",!1,F,r),k.ready])).every(V=>V==="ProbeReady")?(fx(t.currentState),{TAG:"Started",state:{TAG:"Running",cwd:l,port:b,process:U,collaboration:I,exited:F},event:{cwd:l,port:b,startedAt:r.nowIso(),collaboration:q(I,V=>ck(V.prepared))}}):(U.kill("SIGINT"),I!==void 0&&I.process.kill("SIGINT"),{TAG:"StartRefused",state:t.currentState,reason:Vf}):(I!==void 0&&I.process.kill("SIGINT"),{TAG:"StartRefused",state:t.currentState,reason:Vf})}}function fk(e){return e==="InheritOutput"?["ignore","inherit","inherit"]:["ignore","ignore","inherit"]}function WEe(e){let t=e.cwd,r=e.env,n=KJ.spawn(e.command,e.args,t!==void 0?r!==void 0?{cwd:t,env:r,stdio:fk(e.stdio)}:{cwd:t,stdio:fk(e.stdio)}:r!==void 0?{env:r,stdio:fk(e.stdio)}:{stdio:fk(e.stdio)});return{pid:()=>q(lt(n.pid),i=>i),kill:i=>{ga(n,i)},onExitOnce:i=>{n.once("exit",(o,a)=>i(q(o==null?void 0:be(o),s=>s),a==null?void 0:be(a)))},onCloseOnce:i=>{n.once("close",i)},onSpawnOnce:i=>{n.once("spawn",i)},onErrorOnce:i=>{n.once("error",o=>i(o.message))},hasExited:()=>jt(lt(n.exitCode))?!0:jt(lt(n.signalCode))}}async function HEe(e,t){let n=await Ua(e,t?{method:"POST"}:{});return n.TAG==="Ok"?{TAG:"Ok",_0:n._0.status}:{TAG:"Error",_0:n._0.message}}function tZ(e,t){return{spawnProcess:WEe,choosePort:XT,probeUrlStatus:HEe,nowIso:()=>new Date().toISOString(),nowMs:()=>Date.now(),scheduleTimeout:(r,n)=>{let i=setTimeout(r,n);return()=>{clearTimeout(i)}},scheduleImmediate:r=>{setImmediate(r)},env:process.env,execPath:process.execPath,platform:process.platform,audit:e,isDangerousCwd:t,profile:yJ(),sandboxFs:jJ()}}function wu(){return w("1.0.234","0.0.0-unbundled")}function JD(){return"linzumi "+w("1.0.234","0.0.0-unbundled")}import*as Io from"node:os";import*as es from"node:path";import*as PS from"node:crypto";var VEe=No(e=>({startupFailedControlSeqs:e.m(Oo(gr))}));function nZ(e){return vf(e,VEe)}var KEe=bt(e=>({instanceId:e.f("instanceId",L),seq:e.f("seq",gr),method:e.f("method",L),params:e.f("params",xf(si)),receivedAt:e.f("receivedAt",L)}));function M0(e){return e.f("payload",xf(si))}var _Je=Sf([bt(e=>(e.tag("kind","instance_started"),{TAG:"InstanceStarted",payload:M0(e)})),bt(e=>(e.tag("kind","instance_stopped"),{TAG:"InstanceStopped",payload:M0(e)})),bt(e=>(e.tag("kind","codex_notification"),{TAG:"HarnessNotification",payload:e.f("payload",KEe)})),bt(e=>(e.tag("kind","codex_request"),{TAG:"HarnessRequest",payload:M0(e)})),bt(e=>(e.tag("kind","codex_response"),{TAG:"HarnessResponse",payload:M0(e)})),bt(e=>(e.tag("kind","codex_error"),{TAG:"HarnessError",payload:M0(e)})),bt(e=>(e.tag("kind","heartbeat"),{TAG:"Heartbeat",payload:M0(e)}))]);function iZ(e){return"local_runner:"+e}var ZEe="kandan-local-codex-runner",QEe="rescript";function oZ(e){let t={};t.clientName=ZEe,t.clientId=e.clientId;let r=e.machineFingerprint;t.machineFingerprint=r!==void 0?r:null,Object.entries(m9(e.machineFingerprintV2)).forEach(a=>{t[a[0]]=a[1]}),t.runnerPid=e.runnerPid,t.runnerBootId=e.runnerBootId,t.version=e.version,t.hostname=e.hostname,t.cwd=e.cwd;let n=e.workspace;t.workspace=n!==void 0?n:null;let i=e.channel;t.channel=i!==void 0?i:null,t.capabilities=e.capabilities;let o=e.generationOverlapEpoch;if(o!==void 0){let a={};a.epoch=o,a.overlap=!0,t.generation=a}return t.commander_impl=QEe,t}function aZ(e,t,r){let n={};return n.last_seq=r,t!==void 0&&(n.runner_id=e,n.thread_id=t),n}function $r(e,t){return e.catch(r=>t(N(r)))}var ZD=No(e=>({baseUrl:e.m(J(L)),token:e.m(J(L))})),lZ=No(e=>({mcpToken:e.m(J(L))})),dZ=No(e=>({mcpToken:e.m(J(L))})),uZ=No(e=>({accountId:e.m(L),grantId:e.m(L),generation:e.m(gr),credential:e.m(J(L))})),YEe=No(e=>({offerId:e.m(L),contextStrategy:e.m(L)})),mx=Bb(L),XEe=Bb(gr),e1e=No(e=>({instanceId:e.m(J(L)),requestId:e.m(J(L)),workspace:e.m(J(L)),channel:e.m(J(L)),threadId:e.m(J(L)),rootSeq:e.m(J(gr)),sourceSeq:e.m(J(gr)),cwd:e.m(J(L)),workDescription:e.m(J(L)),attachments:e.m(J(Oo(si))),developerPrompt:e.m(J(L)),agentNickname:e.m(J(L)),agentProvider:e.m(J(L)),modelProvider:e.m(Eo(L)),modelTransportCatalogStatus:e.m(J(L)),llmProxy:e.m(J(ZD)),resumeSessionId:e.m(Eo(L)),linzumiContext:e.m(J(xf(si))),launchTui:e.m(J(Fo)),model:e.m(Eo(L)),reasoningEffort:e.m(Eo(L)),approvalPolicy:e.m(Eo(L)),sandbox:e.m(Eo(L)),codingJobToolScope:e.m(J(L)),sandboxedApprovalNeverDefault:e.m(J(Fo)),fast:e.m(Eo(Fo)),allowPortForwardingByDefault:e.m(Eo(Fo)),executionMode:e.m(J(L)),egressMode:e.m(J(L)),projectId:e.m(J(gr)),projectPublicId:e.m(J(L)),goldenImagePublicId:e.m(J(L)),projectSharedInstructions:e.m(J(L)),projectPersonalInstructions:e.m(J(L)),projectMemory:e.m(J(L)),linzumiAgent:e.m(J(lZ)),codingJob:e.m(J(dZ)),codingAccount:e.m(J(uZ)),adtStream:e.m(J(si))})),t1e=No(e=>({instanceId:e.m(J(L)),requestId:e.m(J(L)),workspace:e.m(J(L)),channel:e.m(J(L)),threadId:e.m(J(L)),rootSeq:e.m(J(gr)),sourceSeq:e.m(J(gr)),transportCeilingRecoveryRequestId:e.m(J(L)),cwd:e.m(J(L)),workDescription:e.m(J(L)),attachments:e.m(J(Oo(si))),traceparent:e.m(J(L)),developerPrompt:e.m(J(L)),agentNickname:e.m(J(L)),codexThreadId:e.m(J(L)),sessionRehydrate:e.m(J(Fo)),codingAccountHandoff:e.m(J(YEe)),agentProvider:e.m(J(L)),modelProvider:e.m(Eo(L)),modelTransportCatalogStatus:e.m(J(L)),llmProxy:e.m(J(ZD)),linzumiContext:e.m(J(xf(si))),model:e.m(Eo(L)),reasoningEffort:e.m(Eo(L)),approvalPolicy:e.m(Eo(L)),sandbox:e.m(Eo(L)),codingJobToolScope:e.m(J(L)),sandboxedApprovalNeverDefault:e.m(J(Fo)),fast:e.m(Eo(Fo)),allowPortForwardingByDefault:e.m(Eo(Fo)),projectSharedInstructions:e.m(J(L)),projectPersonalInstructions:e.m(J(L)),projectMemory:e.m(J(L)),linzumiAgent:e.m(J(lZ)),codingJob:e.m(J(dZ)),codingAccount:e.m(J(uZ)),adtStream:e.m(J(si))})),cZ=bt(e=>({questionId:e.f("questionId",L),selectedLabels:e.f("selectedLabels",J(Oo(L))),freeText:e.f("freeText",J(L))})),r1e=No(e=>({instanceId:e.m(J(L)),kandanThreadId:e.m(L),threadId:e.m(L),model:e.m(J(mx)),modelProvider:e.m(J(mx)),modelTransportCatalogStatus:e.m(J(L)),reasoningEffort:e.m(J(mx)),approvalPolicy:e.m(J(mx)),sandbox:e.m(J(mx)),fast:e.m(Eo(Fo)),allowPortForwardingByDefault:e.m(Eo(Fo)),actorUserId:e.m(J(gr)),actorSlug:e.m(J(L))})),gJe=No(e=>({defaultMs:e.m(XEe),version:e.m(gr)})),n1e=No(e=>({defaultMs:e.m(J(si)),version:e.m(J(si))})),i1e=bt(e=>({provider:e.f("provider",L),editorSessionId:e.f("editorSessionId",gr),runtimeSessionId:e.f("runtimeSessionId",L),roomId:e.f("roomId",L),extensionAssetPath:e.f("extensionAssetPath",L),serverAssetPath:e.f("serverAssetPath",L),bootstrapToken:e.f("bootstrapToken",J(L))})),o1e=bt(e=>(e.tag("type","start_instance"),{TAG:"StartInstance",_0:e.flatten(e1e)})),a1e=bt(e=>(e.tag("type","authorize_coding_account"),{TAG:"AuthorizeCodingAccount",_0:{attemptId:e.f("attemptId",L),accountId:e.f("accountId",L),harness:e.f("harness",L)}})),s1e=bt(e=>(e.tag("type","coding_account_credential"),{TAG:"CodingAccountCredential",_0:{accountId:e.f("accountId",L),grantId:e.f("grantId",L),generation:e.f("generation",gr),credential:e.f("credential",L)}})),l1e=bt(e=>(e.tag("type","reconnect_thread"),{TAG:"ReconnectThread",_0:e.flatten(t1e)})),d1e=bt(e=>(e.tag("type","list_claude_code_sessions"),{TAG:"ListClaudeCodeSessions",_0:{instanceId:e.f("instanceId",J(L)),requestId:e.f("requestId",J(L)),cwd:e.f("cwd",J(L)),limit:e.f("limit",J(gr)),messagesPerSession:e.f("messagesPerSession",J(gr))}})),u1e=bt(e=>(e.tag("type","list_agent_slash_commands"),{TAG:"ListAgentSlashCommands",_0:{instanceId:e.f("instanceId",J(L)),requestId:e.f("requestId",J(L)),threadId:e.f("threadId",J(L)),cwd:e.f("cwd",J(L)),harness:e.f("agentProvider",J(L)),harnessSessionKey:e.f("providerSessionKey",J(L))}})),c1e=bt(e=>(e.tag("type","browse_directory"),{TAG:"BrowseDirectory",_0:{instanceId:e.f("instanceId",J(L)),requestId:e.f("requestId",J(L)),path:e.f("path",J(L))}})),f1e=bt(e=>(e.tag("type","create_project"),{TAG:"CreateProject",_0:{instanceId:e.f("instanceId",J(L)),requestId:e.f("requestId",J(L)),name:e.f("name",J(L)),description:e.f("description",J(L)),template:e.f("template",J(L))}})),m1e=bt(e=>(e.tag("type","clone_repository"),{TAG:"CloneRepository",_0:{instanceId:e.f("instanceId",J(L)),requestId:e.f("requestId",J(L)),url:e.f("url",J(L)),destinationPath:e.f("destinationPath",J(L)),directoryName:e.f("directoryName",J(L)),branch:e.f("branch",J(L))}})),p1e=bt(e=>(e.tag("type","suggest_tasks"),{TAG:"SuggestTasks",_0:{instanceId:e.f("instanceId",J(L)),requestId:e.f("requestId",J(L)),workspace:e.f("workspace",J(L)),cwd:e.f("cwd",J(L)),modelProvider:e.f("modelProvider",J(L)),model:e.f("model",J(L)),llmProxy:e.f("llmProxy",J(ZD))}})),h1e=bt(e=>(e.tag("type","set_workspace_viewport"),{TAG:"SetWorkspaceViewport",_0:{instanceId:e.f("instanceId",J(L)),url:e.f("url",L),workspace:e.f("workspace",J(L)),layout:e.f("layout",J(L)),targetCount:e.f("targetCount",J(gr)),reason:e.f("reason",J(L))}})),_1e=bt(e=>(e.tag("type","import_onboarding_conversations"),{TAG:"ImportOnboardingConversations",_0:{instanceId:e.f("instanceId",J(L)),workspace:e.f("workspace",J(L)),sources:e.f("sources",J(Oo(si)))}})),g1e=bt(e=>(e.tag("type","scan_onboarding_projects"),{TAG:"ScanOnboardingProjects",_0:{instanceId:e.f("instanceId",J(L)),workspace:e.f("workspace",J(L)),paths:e.f("paths",J(Oo(si)))}})),b1e=bt(e=>(e.tag("type","remote_codex_exec"),{TAG:"RemoteCodexExec",_0:{instanceId:e.f("instanceId",J(L)),requestId:e.f("requestId",J(L)),threadId:e.f("threadId",J(L)),cwd:e.f("cwd",J(L)),command:e.f("command",J(L)),args:e.f("args",J(Oo(si))),env:e.f("env",J(xf(si))),stdin:e.f("stdin",J(L)),timeoutMs:e.f("timeoutMs",J(gr))}})),y1e=bt(e=>(e.tag("type","remote_codex_exec_cancel"),{TAG:"RemoteCodexExecCancel",_0:{instanceId:e.f("instanceId",J(L)),requestId:e.f("requestId",J(L)),threadId:e.f("threadId",J(L))}})),x1e=bt(e=>(e.tag("type","stop_instance"),{TAG:"StopInstance",_0:{instanceId:e.f("instanceId",L)}})),S1e=bt(e=>(e.tag("type","kill_instance"),{TAG:"KillInstance",_0:{instanceId:e.f("instanceId",L)}})),T1e=bt(e=>(e.tag("type","replace_runner"),{TAG:"ReplaceCommander",_0:{reason:e.f("reason",J(L)),replacementRunnerId:e.f("replacementRunnerId",J(L)),replacementVersion:e.f("replacementVersion",J(L))}})),v1e=bt(e=>(e.tag("type","update_available"),{TAG:"UpdateAvailable",_0:{latestVersion:e.f("latestVersion",J(L)),currentVersion:e.f("currentVersion",J(L)),reason:e.f("reason",J(L))}})),w1e=bt(e=>(e.tag("type","start_turn"),{TAG:"StartTurn",_0:{instanceId:e.f("instanceId",L),threadId:e.f("threadId",L),input:e.f("input",Oo(si))}})),A1e=bt(e=>(e.tag("type","steer_turn"),{TAG:"SteerTurn",_0:{instanceId:e.f("instanceId",L),threadId:e.f("threadId",L),turnId:e.f("turnId",J(L)),harnessSessionKey:e.f("providerSessionKey",J(L)),harness:e.f("agentProvider",J(L)),input:e.f("input",si),sourceSeq:e.f("sourceSeq",J(gr)),rootSeq:e.f("rootSeq",J(gr)),workspace:e.f("workspace",J(L)),channel:e.f("channel",J(L)),cwd:e.f("cwd",J(L)),workDescription:e.f("workDescription",J(L)),attachments:e.f("attachments",J(Oo(si))),linzumiContext:e.f("linzumiContext",J(si)),traceparent:e.f("traceparent",J(L))}})),k1e=bt(e=>(e.tag("type","steer_child_thread"),{TAG:"SteerChildThread",_0:{instanceId:e.f("instanceId",L),threadId:e.f("threadId",L),harnessSessionKey:e.f("providerSessionKey",L),harness:e.f("agentProvider",J(L)),providerChildThreadId:e.f("providerChildThreadId",L),input:e.f("input",si)}})),C1e=bt(e=>(e.tag("type","interrupt_turn"),{TAG:"InterruptTurn",_0:{instanceId:e.f("instanceId",L),threadId:e.f("threadId",L),turnId:e.f("turnId",J(L))}})),O1e=bt(e=>(e.tag("type","stop_turn"),{TAG:"StopTurn",_0:{instanceId:e.f("instanceId",J(L)),threadId:e.f("threadId",L),turnId:e.f("turnId",J(L)),harnessSessionKey:e.f("providerSessionKey",J(L)),harness:e.f("agentProvider",J(L)),targetSourceSeq:e.f("targetSourceSeq",J(gr))}})),E1e=bt(e=>(e.tag("type","compact_thread"),{TAG:"CompactThread",_0:{instanceId:e.f("instanceId",J(L)),requestId:e.f("requestId",L),workspace:e.f("workspace",L),channel:e.f("channel",L),threadId:e.f("threadId",L),harnessSessionKey:e.f("providerSessionKey",L),harness:e.f("agentProvider",L),sourceSeq:e.f("sourceSeq",gr),suppressMessageState:e.f("suppressMessageState",J(Fo))}})),P1e=bt(e=>(e.tag("type","rewind_thread"),{TAG:"RewindThread",_0:{instanceId:e.f("instanceId",J(L)),threadId:e.f("threadId",L),requestId:e.f("requestId",J(L)),harness:e.f("agentProvider",J(L)),checkpointId:e.f("checkpointId",J(L))}})),G1e=bt(e=>(e.tag("type","interrupt_queued_messages"),{TAG:"InterruptQueuedMessages",_0:{instanceId:e.f("instanceId",J(L)),threadId:e.f("threadId",L),harness:e.f("agentProvider",J(L)),throughSeq:e.f("throughSeq",J(gr))}})),I1e=bt(e=>(e.tag("type","resolve_codex_approval_request"),{TAG:"ResolveApprovalRequest",_0:{instanceId:e.f("instanceId",J(L)),threadId:e.f("threadId",L),sourceSeq:e.f("sourceSeq",gr),requestId:e.f("requestId",L),decision:e.f("decision",L),harness:e.f("agentProvider",J(L))}})),R1e=bt(e=>(e.tag("type","resolve_claude_user_input_request"),{TAG:"ResolveClaudeUserInputRequest",_0:{instanceId:e.f("instanceId",J(L)),threadId:e.f("threadId",L),sessionId:e.f("sessionId",J(L)),requestId:e.f("requestId",L),answers:e.f("answers",Oo(cZ)),actorUserId:e.f("actorUserId",J(gr)),actorSlug:e.f("actorSlug",J(L)),harness:e.f("agentProvider",J(L))}})),M1e=bt(e=>(e.tag("type","deny_claude_user_input_request"),{TAG:"DenyClaudeUserInputRequest",_0:{instanceId:e.f("instanceId",J(L)),threadId:e.f("threadId",L),sessionId:e.f("sessionId",J(L)),requestId:e.f("requestId",L),reason:e.f("reason",J(L)),actorUserId:e.f("actorUserId",J(gr)),actorSlug:e.f("actorSlug",J(L)),harness:e.f("agentProvider",J(L))}})),D1e=bt(e=>(e.tag("type","resolve_codex_user_input_request"),{TAG:"ResolveCodexUserInputRequest",_0:{instanceId:e.f("instanceId",J(L)),threadId:e.f("threadId",L),sessionId:e.f("sessionId",J(L)),requestId:e.f("requestId",L),answers:e.f("answers",Oo(cZ)),actorUserId:e.f("actorUserId",J(gr)),actorSlug:e.f("actorSlug",J(L)),harness:e.f("agentProvider",J(L))}})),$1e=bt(e=>(e.tag("type","deny_codex_user_input_request"),{TAG:"DenyCodexUserInputRequest",_0:{instanceId:e.f("instanceId",J(L)),threadId:e.f("threadId",L),sessionId:e.f("sessionId",J(L)),requestId:e.f("requestId",L),reason:e.f("reason",J(L)),actorUserId:e.f("actorUserId",J(gr)),actorSlug:e.f("actorSlug",J(L)),harness:e.f("agentProvider",J(L))}})),j1e=bt(e=>(e.tag("type","update_session_settings"),{TAG:"UpdateSessionSettings",_0:e.flatten(r1e)})),F1e=bt(e=>(e.tag("type","stream_idle_timeout_default"),{TAG:"StreamIdleTimeoutDefault",_0:e.flatten(n1e)})),N1e=bt(e=>(e.tag("type","resolve_port_forward_request"),{TAG:"ResolvePortForwardRequest",_0:{instanceId:e.f("instanceId",L),threadId:e.f("threadId",J(L)),requestId:e.f("requestId",L),decision:e.f("decision",L),actorUserId:e.f("actorUserId",J(gr)),actorSlug:e.f("actorSlug",J(L))}})),q1e=bt(e=>(e.tag("type","update_thread_interaction_access"),{TAG:"UpdateThreadInteractionAccess",_0:{instanceId:e.f("instanceId",J(L)),threadId:e.f("threadId",L),requesterUserId:e.f("requesterUserId",J(gr)),requesterSlug:e.f("requesterSlug",J(L)),grant:e.f("grant",Fo)}})),z1e=bt(e=>(e.tag("type","set_port_forward_enabled"),{TAG:"SetPortForwardEnabled",_0:{instanceId:e.f("instanceId",J(L)),port:e.f("port",gr),enabled:e.f("enabled",Fo)}})),L1e=bt(e=>(e.tag("type","read_thread"),{TAG:"ReadThread",_0:{instanceId:e.f("instanceId",L),threadId:e.f("threadId",L),includeTurns:e.f("includeTurns",J(Fo))}})),U1e=bt(e=>(e.tag("type","forward_http_request"),{TAG:"ForwardHttpRequest",_0:{instanceId:e.f("instanceId",J(L)),threadId:e.f("threadId",J(L)),requestId:e.f("requestId",L),port:e.f("port",gr),method:e.f("method",L),path:e.f("path",L),queryString:e.f("queryString",J(L)),headers:e.f("headers",J(si)),bodyBase64:e.f("bodyBase64",J(L))}})),B1e=bt(e=>(e.tag("type","forward_websocket_open"),{TAG:"ForwardWebSocketOpen",_0:{instanceId:e.f("instanceId",J(L)),threadId:e.f("threadId",J(L)),socketId:e.f("socketId",L),port:e.f("port",gr),path:e.f("path",L),queryString:e.f("queryString",J(L)),headers:e.f("headers",J(si))}})),W1e=bt(e=>(e.tag("type","forward_websocket_send"),{TAG:"ForwardWebSocketSend",_0:{instanceId:e.f("instanceId",J(L)),threadId:e.f("threadId",J(L)),socketId:e.f("socketId",L),opcode:e.f("opcode",L),bodyBase64:e.f("bodyBase64",L)}})),H1e=bt(e=>(e.tag("type","forward_websocket_close"),{TAG:"ForwardWebSocketClose",_0:{instanceId:e.f("instanceId",J(L)),threadId:e.f("threadId",J(L)),socketId:e.f("socketId",L)}})),V1e=bt(e=>(e.tag("type","forward_tcp_open"),{TAG:"ForwardTcpOpen",_0:{instanceId:e.f("instanceId",J(L)),threadId:e.f("threadId",J(L)),socketId:e.f("socketId",L),port:e.f("port",gr)}})),K1e=bt(e=>(e.tag("type","forward_tcp_send"),{TAG:"ForwardTcpSend",_0:{instanceId:e.f("instanceId",J(L)),threadId:e.f("threadId",J(L)),socketId:e.f("socketId",L),bodyBase64:e.f("bodyBase64",L)}})),J1e=bt(e=>(e.tag("type","forward_tcp_close"),{TAG:"ForwardTcpClose",_0:{instanceId:e.f("instanceId",J(L)),threadId:e.f("threadId",J(L)),socketId:e.f("socketId",L)}})),Z1e=bt(e=>(e.tag("type","update_runner_config"),{TAG:"UpdateCommanderConfig",_0:{instanceId:e.f("instanceId",J(L)),allowedCwds:e.f("allowedCwds",Oo(L)),configVersion:e.f("configVersion",J(gr))}})),Q1e=bt(e=>(e.tag("type","multi_agent_jobs_state"),{TAG:"MultiAgentJobsState",_0:{workspace:e.f("workspace",J(L)),enabled:e.f("enabled",J(Fo))}})),Y1e=bt(e=>(e.tag("type","fleet_breaker_state"),{TAG:"FleetBreakerState",_0:{state:e.f("state",J(L)),fate:e.f("fate",J(L)),openedAt:e.f("openedAt",J(Bb(L))),probeIntervalSeconds:e.f("probeIntervalSeconds",J(gr)),detectionRule:e.f("detectionRule",J(Bb(L))),monitorOnly:e.f("monitorOnly",J(Fo)),version:e.f("version",J(gr))}})),X1e=bt(e=>(e.tag("type","start_local_editor"),{TAG:"StartLocalEditor",_0:{instanceId:e.f("instanceId",J(L)),requestId:e.f("requestId",J(L)),cwd:e.f("cwd",L),browserBaseUrl:e.f("browserBaseUrl",J(L)),collaboration:e.f("collaboration",J(i1e))}})),ePe=bt(e=>(e.tag("type","set_commander_impl"),{TAG:"SetCommanderImpl",_0:{impl:e.f("impl",J(L))}})),tPe=bt(e=>(e.tag("type","invoke_cross_harness_switch"),{TAG:"InvokeCrossHarnessSwitch",_0:{instanceId:e.f("instanceId",J(L)),requestId:e.f("requestId",J(L)),threadId:e.f("threadId",J(L)),harnessSessionId:e.f("harnessSessionId",J(L)),sourceSeq:e.f("sourceSeq",J(gr)),targetHarness:e.f("targetHarness",J(L)),model:e.f("model",J(L)),targetSessionId:e.f("targetSessionId",J(L))}})),rPe=Sf([a1e,s1e,o1e,l1e,d1e,u1e,c1e,f1e,m1e,p1e,h1e,_1e,g1e,b1e,y1e,x1e,S1e,T1e,v1e,w1e,A1e,k1e,C1e,O1e,E1e,P1e,G1e,I1e,R1e,M1e,D1e,$1e,j1e,F1e,N1e,q1e,z1e,L1e,U1e,B1e,W1e,H1e,V1e,K1e,J1e,Z1e,Q1e,Y1e,X1e,ePe,tPe]),nPe=["authorize_coding_account","coding_account_credential","start_instance","reconnect_thread","list_claude_code_sessions","list_agent_slash_commands","browse_directory","create_project","clone_repository","suggest_tasks","set_workspace_viewport","import_onboarding_conversations","scan_onboarding_projects","remote_codex_exec","remote_codex_exec_cancel","stop_instance","kill_instance","replace_runner","update_available","start_turn","steer_turn","steer_child_thread","interrupt_turn","stop_turn","compact_thread","rewind_thread","interrupt_queued_messages","resolve_codex_approval_request","resolve_claude_user_input_request","deny_claude_user_input_request","resolve_codex_user_input_request","deny_codex_user_input_request","update_session_settings","stream_idle_timeout_default","resolve_port_forward_request","update_thread_interaction_access","set_port_forward_enabled","read_thread","forward_http_request","forward_websocket_open","forward_websocket_send","forward_websocket_close","forward_tcp_open","forward_tcp_send","forward_tcp_close","update_runner_config","multi_agent_jobs_state","fleet_breaker_state","start_local_editor","set_commander_impl","invoke_cross_harness_switch"];function px(e){let t=rt(e);if(t===void 0)return{TAG:"Error",_0:ot("expected a control object")};let r=t.control_seq,n=typeof r=="number"?r:void 0,i=t.type,o=typeof i=="string"?i:void 0;return o!==void 0?nPe.includes(o)?Qe(kl(e,rPe),a=>({controlSeq:n,control:a})):{TAG:"Ok",_0:{controlSeq:n,control:{TAG:"Unknown",_0:{controlType:o,raw:t}}}}:{TAG:"Error",_0:ot("control is missing a string `type`")}}var bJe=bt(e=>({controlSeq:e.f("control_seq",J(gr)),event:e.f("event",L),payload:e.f("payload",xf(si))}));function pZ(e){return JSON.parse(JSON.stringify(e))}function pk(e){return{type:"user",message:{role:"user",content:e},parent_tool_use_id:null}}function QD(e){return{TAG:"TurnKey",_0:e}}var hk=Q;function YD(e){if(e.TAG!=="InitialReleaseLease")return e._1}function XD(e){return e.TAG==="InitialReleaseLease"?e._1:e._2}function D0(e,t){return e.TAG==="InitialReleaseLease"?t.TAG==="InitialReleaseLease"&&e._0===t._0?Q(e._1,t._1):!1:t.TAG==="InitialReleaseLease"||!(e._0===t._0&&Q(e._1,t._1))?!1:Q(e._2,t._2)}var mZ="Claude Code streaming input is closed";function iPe(e,t){let r={contents:0},n=()=>(r.contents=r.contents+1|0,{TAG:"Reader",_0:r.contents}),i={contents:0},o=()=>(i.contents=i.contents+1|0,{TAG:"TurnKey",_0:"legacy-turn-"+i.contents.toString()}),a=e.initialTurnKey,s=a!==void 0?a:o(),l=pk(e.content),d=t?[]:[l],u=t?[]:[{turnKey:s,sourceSeq:e.sourceSeq}],c=[],f=new Set,p=new Map;t||(f.add(s),p.set(l,s));let m=()=>{for(;;){let ie=o();if(!f.has(ie))return ie}},h={contents:0},_={contents:void 0},g={contents:void 0},b=new Set,y=[],S=new Map,T=[],v={contents:!1},O=ie=>new Promise((ge,Pe)=>{S.set(ie,ge)}),A=(ie,ge)=>{let Pe=S.get(ie);if(Pe!==void 0)return S.delete(ie),Pe(ge)},C=ie=>{A(ie,!0);let ge=p.get(ie);if(ge===void 0)return;p.delete(ie);let Pe=e.onTurnPulled;if(Pe!==void 0){Promise.resolve().then(()=>(Pe(ge),Promise.resolve()));return}},k=ie=>{T.forEach(ge=>{if(!Q(ge.turnKey,ie))return;let Pe=d.findIndex(Ge=>Q(Ge,ge.message));if(Pe>=0)return d.splice(Pe,1),A(ge.message,!1)})},I=()=>{let ie=v.contents;for(;ie;){let ge=y.shift();ge!==void 0?ge.settle("Done"):ie=!1}},U=(ie,ge,Pe)=>{u.push({turnKey:Pe,sourceSeq:ge}),p.set(ie,Pe);let Ge=e.onInputDelivered;Ge!==void 0&&Ge();let ae=e.onSourceSeqDelivered;ge!==void 0&&ae!==void 0&&!b.has(ge)&&(b.add(ge),ae(ge));let Be=y.shift();if(Be!==void 0)return C(ie),Be.settle({TAG:"Next",_0:ie});if(d.push(ie),t){g.contents={followUpMessage:ie,followUpSourceSeq:ge,followUpTurnKey:Pe};return}else return},F=(ie,ge,Pe)=>{let Ge=u.length!==0;return!t&&!Ge?(U(ie,ge,Pe),"Delivered"):(c.push({followUpMessage:ie,followUpSourceSeq:ge,followUpTurnKey:Pe}),{TAG:"Parked",queuePosition:c.length})},M=(ie,ge,Pe)=>{let Ge=v.contents,ae=f.has(ie);return Ge?{TAG:"Error",_0:"QueueClosed"}:ae?{TAG:"Error",_0:{TAG:"DuplicateTurnKey",_0:ie}}:(f.add(ie),{TAG:"Ok",_0:F(pk(ge),Pe,ie)})},D=(ie,ge)=>{let Pe=m(),Ge=M(Pe,ie,ge);if(Ge.TAG==="Ok")return{TAG:"Ok",_0:Ge._0};let ae=Ge._0;return typeof ae!="object"&&ae==="QueueClosed"?{TAG:"Error",_0:mZ}:{TAG:"Error",_0:"Dispatch input queue rejected an internally generated turn key"}},V=ie=>{if(v.contents)return{TAG:"Error",_0:mZ};let ge=pk(ie),Pe=O(ge),Ge=Je(e.isLiveSteerAllowed,!1,xe=>xe()===!1);if(u.length===0){let xe=m();return f.add(xe),F(ge,void 0,xe),{TAG:"Ok",_0:{steered:"steered_queued",pulledImmediately:!1,applied:Pe}}}if(Ge){let xe=m();return f.add(xe),F(ge,void 0,xe),{TAG:"Ok",_0:{steered:"steered_queued",pulledImmediately:!1,applied:Pe}}}let Be=y.shift();return{TAG:"Ok",_0:{steered:"steered_live",pulledImmediately:Be!==void 0?(A(ge,!0),Be.settle({TAG:"Next",_0:ge}),!0):(d.push(ge),!1),applied:Pe}}},te=(ie,ge,Pe)=>{let Ge=pk(Pe),ae=T.find(vt=>vt.ticketId===ge);if(ae!==void 0){let vt=Q(ae.turnKey,ie),tr=Q(ae.message,Ge);return vt&&tr?{TAG:"Ok",_0:ae.outcome}:{TAG:"Error",_0:{TAG:"DuplicateSteerTicket",_0:ge}}}let Be=v.contents,Le=u[0];if(Be)return{TAG:"Error",_0:"QueueClosed"};if(Le===void 0)return{TAG:"Error",_0:"NoCurrentTurn"};if(!Q(Le.turnKey,ie))return{TAG:"Error",_0:{TAG:"SteerTargetMismatch",_0:Le.turnKey,_1:ie}};if(Je(e.isLiveSteerAllowed,!1,vt=>vt()===!1))return{TAG:"Error",_0:{TAG:"SteerTargetClosed",_0:ie}};let Ye=O(Ge),ft=y.shift(),_t={steered:"steered_live",pulledImmediately:ft!==void 0?(A(Ge,!0),ft.settle({TAG:"Next",_0:Ge}),!0):(d.push(Ge),!1),applied:Ye};return T.push({turnKey:ie,ticketId:ge,message:Ge,outcome:_t}),{TAG:"Ok",_0:_t}},ee=ie=>{let ge=d.shift();if(ge!==void 0){let Ge=g.contents;return Ge!==void 0&&Q(Ge.followUpMessage,ge)&&(g.contents=void 0),C(ge),Promise.resolve({TAG:"Next",_0:ge})}if(v.contents)return Promise.resolve("Done");let Pe=e.onInputWait;return Pe!==void 0&&Pe(G(u[0],Ge=>Ge.sourceSeq)),new Promise((Ge,ae)=>{y.push({reader:ie,settle:Ge})})},X=()=>ee(void 0),K=ie=>ee(ie),E=ie=>{let ge=je(y,Pe=>{let Ge=Pe.reader;if(Ge!==void 0&&Q(Ge,ie)){Pe.settle("Done");return}else return Pe});return y.splice(0,y.length,...ge),Promise.resolve()},R=()=>{let ie=g.contents;t&&ie!==void 0&&(p.delete(ie.followUpMessage),d.shift(),u.shift(),c.splice(0,0,ie),g.contents=void 0),t&&(d.splice(0,d.length),u.splice(0,u.length));let ge=u.length===0;if(!t&&ge){let Pe=!0;for(;Pe;){let Ge=c.shift();Ge!==void 0?U(Ge.followUpMessage,Ge.followUpSourceSeq,Ge.followUpTurnKey):Pe=!1}}v.contents=!0,I(),S.forEach((Pe,Ge)=>A(Ge,!1))},W=()=>{let ie=c.slice();return c.splice(0,c.length),ie},H=ie=>{let ge=v.contents,Pe=_.contents,Ge=u[0];if(ge)return{TAG:"Error",_0:"QueueClosed"};if(Pe!==void 0)return{TAG:"Error",_0:"ReleaseAlreadyPending"};if(Ge===void 0)return{TAG:"Error",_0:"NoCurrentTurn"};if(!Q(Ge.turnKey,ie))return{TAG:"Error",_0:{TAG:"PredecessorMismatch",_0:Ge.turnKey,_1:ie}};h.contents=h.contents+1|0;let ae=h.contents,Be=q(c[0],xe=>xe.followUpTurnKey),Le={TAG:"SuccessorReleaseLease",_0:ae,_1:ie,_2:Be};return _.contents=Le,{TAG:"Ok",_0:Le}},de=()=>{let ie=v.contents,ge=_.contents,Pe=u[0],Ge=c[0];if(ie)return{TAG:"Error",_0:"QueueClosed"};if(ge!==void 0)return{TAG:"Error",_0:"ReleaseAlreadyPending"};if(Pe!==void 0)return{TAG:"Error",_0:"ReleaseAlreadyPending"};if(Ge===void 0)return{TAG:"Error",_0:"NoCurrentTurn"};h.contents=h.contents+1|0;let ae=h.contents,Be=Ge.followUpTurnKey,Le={TAG:"InitialReleaseLease",_0:ae,_1:Be};return _.contents=Le,{TAG:"Ok",_0:Le}},ne=ie=>{let ge=v.contents,Pe=_.contents;if(ge)return{TAG:"Error",_0:"QueueClosed"};if(Pe===void 0)return{TAG:"Error",_0:"StaleReleaseLease"};if(!D0(Pe,ie))return{TAG:"Error",_0:"StaleReleaseLease"};let Ge=u[0];if(ie.TAG==="InitialReleaseLease"){if(Ge!==void 0)return{TAG:"Error",_0:"ReleaseSuccessorChanged"};let Ye=c[0];return Ye!==void 0&&Q(Ye.followUpTurnKey,ie._1)?(_.contents=void 0,c.shift(),U(Ye.followUpMessage,Ye.followUpSourceSeq,Ye.followUpTurnKey),{TAG:"Ok",_0:void 0}):{TAG:"Error",_0:"ReleaseSuccessorChanged"}}if(Ge===void 0)return{TAG:"Error",_0:"NoCurrentTurn"};let ae=ie._1;if(!Q(Ge.turnKey,ae))return{TAG:"Error",_0:{TAG:"PredecessorMismatch",_0:Ge.turnKey,_1:ae}};let Be=q(c[0],Ye=>Ye.followUpTurnKey);if(!Q(Be,ie._2))return{TAG:"Error",_0:"ReleaseSuccessorChanged"};k(ae);let Le=g.contents;if(t&&Le!==void 0&&Q(Le.followUpTurnKey,ae)){let Ye=d.findIndex(ft=>Q(ft,Le.followUpMessage));Ye>=0&&d.splice(Ye,1),p.delete(Le.followUpMessage),g.contents=void 0}u.shift(),_.contents=void 0;let xe=c.shift();return xe!==void 0&&U(xe.followUpMessage,xe.followUpSourceSeq,xe.followUpTurnKey),{TAG:"Ok",_0:Ge.sourceSeq}};return{next:X,openReader:n,nextFor:K,cancelReader:E,close:R,enqueue:D,enqueueTurn:M,enqueueSteer:V,enqueueSteerFor:te,drainUndeliveredFollowUps:W,beginRelease:H,beginInitialRelease:de,commitRelease:ne,cancelRelease:ie=>{let ge=v.contents,Pe=_.contents;return ge?{TAG:"Error",_0:"QueueClosed"}:Pe!==void 0&&D0(Pe,ie)?(_.contents=void 0,{TAG:"Ok",_0:void 0}):{TAG:"Error",_0:"StaleReleaseLease"}},retract:ie=>{let ge=c.findIndex(ae=>Q(ae.followUpTurnKey,ie)),Pe=v.contents,Ge=ge>=0;return Pe?{TAG:"Error",_0:"QueueClosed"}:Ge?(c.splice(ge,1),{TAG:"Ok",_0:void 0}):{TAG:"Error",_0:{TAG:"TurnNotDeferred",_0:ie}}},completeTurn:()=>{let ie=v.contents,ge=u[0];if(ge===void 0)return;if(ie)return G(u.shift(),ae=>ae.sourceSeq);let Pe=H(ge.turnKey);if(Pe.TAG!=="Ok")return;let Ge=ne(Pe._0);if(Ge.TAG==="Ok")return Ge._0},currentSourceSeq:()=>G(u[0],ie=>ie.sourceSeq),currentTurnKey:()=>q(u[0],ie=>ie.turnKey)}}function hZ(e){let t=iPe({content:null,sourceSeq:void 0,initialTurnKey:{TAG:"TurnKey",_0:"empty-staged-queue-placeholder"},onInputDelivered:e.onInputDelivered,onTurnPulled:e.onTurnPulled,isLiveSteerAllowed:e.isLiveSteerAllowed,onInputWait:e.onInputWait,onSourceSeqDelivered:e.onSourceSeqDelivered},!0);return{openReader:t.openReader,nextFor:t.nextFor,cancelReader:t.cancelReader,close:t.close,enqueueTurn:t.enqueueTurn,enqueueSteerFor:t.enqueueSteerFor,drainUndeliveredFollowUps:t.drainUndeliveredFollowUps,beginRelease:t.beginRelease,beginInitialRelease:t.beginInitialRelease,commitRelease:t.commitRelease,cancelRelease:t.cancelRelease,retract:t.retract,currentSourceSeq:t.currentSourceSeq,currentTurnKey:t.currentTurnKey}}function t$(e,t){let r=async()=>{let o=await e.nextFor(t);return typeof o!="object"?{done:!0}:{done:!1,value:pZ(o._0)}},n=()=>e.cancelReader(t).then(()=>({done:!0})),i={};return i[Symbol.asyncIterator]=()=>({next:r,return:n}),i}function r$(e){return import(e)}var gZ="@anthropic-ai/claude-agent-sdk";function oPe(e){return{next:()=>e.next(),close:()=>{e.close()},interrupt:()=>e.interrupt(),setModel:t=>e.setModel(t),setPermissionMode:t=>e.setPermissionMode(t),applyFlagSettings:t=>e.applyFlagSettings(t),supportedCommands:()=>e.supportedCommands()}}async function bZ(){let e=await r$(gZ);return{query:t=>oPe(e.query(t)),getSessionInfo:(t,r)=>e.getSessionInfo(t,r),listSessions:t=>e.listSessions(t),getSessionMessages:(t,r)=>e.getSessionMessages(t,r)}}async function aPe(e,t){try{let r=await e();return t(r),{TAG:"Ok",_0:void 0}}catch(r){let n=N(r);return{TAG:"Error",_0:w(G(wt(n),Ct),"unknown Claude authentication probe failure")}}}function sPe(e,t){return{options:{cwd:e,pathToClaudeCodeExecutable:t,persistSession:!1,settingSources:["user","project","local"],tools:[]},initializeTimeoutMs:15e3}}async function n$(e,t){return await aPe(async()=>await(await r$(gZ)).startup(sPe(e,t)),r=>{r.close()})}var i$=["codex","claude-code","pi","opencode"];function Up(e){return e}function _k(e){switch(e.TAG){case"SessionStarted":return"session_started";case"TurnStarted":return"turn_started";case"ItemStarted":return"item_started";case"ItemDelta":return"item_delta";case"ItemCompleted":return"item_completed";case"ApprovalRequested":return"approval_requested";case"UsageUpdated":return"usage_updated";case"RateLimitUpdated":return"rate_limit_updated";case"ActivityPulse":return"activity_pulse";case"TurnCompleted":return"turn_completed";case"TurnFailed":return"turn_failed";case"TurnInterrupted":return"turn_interrupted";case"HarnessDied":return"harness_died"}}import*as xZ from"node:child_process";var dPe=/^(\d+)\s+(\d+)\s+(.*)$/;function a$(e,t){return w(w(e.slice(1)[t],void 0),"")}function uPe(e){return je(e.split(`
|
|
657
657
|
`).map(t=>t.trim()).filter(t=>t!==""),t=>{let r=dPe.exec(t);if(r==null)return;let n=i=>{let o=ii(a$(r,i));return o!==void 0?o:0};return{pid:n(0),ppid:n(1),command:a$(r,2)}})}var cPe=/:(\d+)(?:\s|\(|$)/;function fPe(e){let t=cPe.exec(e);if(t!=null)return ii(a$(t,0))}function mPe(e){let t=[],r={currentPid:void 0,currentCommand:void 0};return e.split(`
|
|
658
658
|
`).forEach(n=>{let i=n.trim();if(i.startsWith("p")){r.currentPid=Number(i.slice(1)),r.currentCommand=void 0;return}if(i.startsWith("c")){r.currentCommand=i.slice(1);return}let o=i.startsWith("n"),a=r.currentPid;if(!o||a===void 0)return;let s=fPe(i.slice(1));if(s!==void 0){t.push({pid:a,port:s,command:w(r.currentCommand,"unknown")});return}}),t}function pPe(e){let t={},r={contents:void 0};return e.split(`
|
|
659
659
|
`).forEach(n=>{let i=n.trim();if(i.startsWith("p")){r.contents=Number(i.slice(1));return}let o=i.startsWith("n"),a=r.contents;if(!o||a===void 0)return;let s=i.slice(1).trim();if(s!==""){t[a.toString()]=s;return}}),t}function s$(e){let t=wt(e);if(t===void 0)return"unknown scan failure";let r=pe(t),n=Ct(r);return n!==void 0?n:String(r)}var hPe=[5e3,3e4];async function _Pe(e,t){let r={contents:void 0},i=$r((async()=>(await e(),"BudgetOk"))(),l=>Promise.resolve({TAG:"BudgetError",_0:s$(l)})),o=new Promise((l,d)=>{r.contents=be(setTimeout(()=>l({TAG:"BudgetError",_0:"port scan exceeded its "+t.toString()+"ms budget (probe never settled)"}),t))}),a=await Promise.race([i,o]),s=r.contents;return s!==void 0&&clearTimeout(pe(s)),a}function gPe(e,t,r,n,i){let o=[e].concat(t),a=w(r,2e4),s=[],l={timer:void 0,running:!1,scanning:!1,promptScanRequested:!1,tickEpoch:0,consecutiveFailures:0,notifiedIntervalMs:e,cwdCache:void 0},d=()=>w(o[Math.min(l.consecutiveFailures,o.length-1|0)],e),u=()=>s.filter(_=>!_.closed),c=_=>{let g=d();if(g===l.notifiedIntervalMs)return;l.notifiedIntervalMs=g;let y={consecutiveFailures:l.consecutiveFailures,intervalMs:g,errorMessage:_};u().forEach(S=>{let T=S.subscriber.onBackoff;if(T!==void 0)try{return T(y)}catch{return}})},f=_=>{l.notifiedIntervalMs=e,u().forEach(g=>{let b=g.subscriber.onRecovered;if(b!==void 0)try{return b(_)}catch{return}})},p=async _=>{let g=await Promise.all([n.scanProcesses(),n.scanListenSockets()]);if(_!==l.tickEpoch||!l.running)return;let b=g[1],y=g[0],S=[];u().forEach(F=>{let M;try{M=F.subscriber.candidatePids(y,b)}catch{M=void 0}if(M!==void 0){M.forEach(D=>{if(Number.isInteger(D)&&D>0&&!S.includes(D)){S.push(D);return}});return}});let T=S.toSorted((F,M)=>F-M),v=T.map(F=>F.toString()).join(","),O=i(),A=l.cwdCache,C,k=0;if(A!==void 0&&A.cacheKey===v&&O-A.cachedAtMs<3e4?C=A.cacheValue:k=1,k===1){let F=await n.scanProcessCwds(T);l.cwdCache={cacheKey:v,cacheValue:F,cachedAtMs:O},C=F}if(_!==l.tickEpoch||!l.running)return;let I=i(),U={processRows:y,listenSockets:b,processCwds:C,scannedAtMs:I};s.slice().forEach(F=>{if(F.closed||F.delivering)return;F.delivering=!0,$r((async()=>{if(!F.closed)return await F.subscriber.deliver(U)})(),D=>{let V=F.subscriber.onError;if(V!==void 0)try{V(s$(D))}catch{}return Promise.resolve()}).finally(()=>{F.delivering=!1})})},m=_=>{if(!l.running)return;let g=l.timer;g!==void 0&&clearTimeout(pe(g)),l.timer=be(setTimeout(h,_))},h=()=>{if(l.timer=void 0,!l.running||l.scanning)return;l.scanning=!0,l.tickEpoch=l.tickEpoch+1|0;let _=l.tickEpoch;(async()=>{let b=await _Pe(()=>p(_),a);if(typeof b!="object"){if(l.consecutiveFailures>0){let S=l.consecutiveFailures;l.consecutiveFailures=0,f(S)}}else l.consecutiveFailures=l.consecutiveFailures+1|0,l.cwdCache=void 0,c(b._0);l.scanning=!1;let y=l.promptScanRequested&&l.consecutiveFailures===0?0:d();return l.promptScanRequested=!1,m(y)})()};return{subscribe:_=>{let g={subscriber:_,delivering:!1,closed:!1};return s.push(g),l.running?l.consecutiveFailures===0&&(l.scanning?l.promptScanRequested=!0:m(0)):(l.running=!0,h()),{unsubscribe:()=>{if(g.closed)return;g.closed=!0;let b=Qd(s,g);if(b!==void 0&&s.splice(b,1),s.length!==0)return;l.running=!1,l.tickEpoch=l.tickEpoch+1|0,l.consecutiveFailures=0,l.notifiedIntervalMs=e,l.promptScanRequested=!1,l.cwdCache=void 0;let y=l.timer;if(y!==void 0){clearTimeout(pe(y)),l.timer=void 0;return}}}},subscriberCount:()=>s.length,isRunning:()=>l.running}}function yZ(e,t,r,n){let i=t!==void 0?t:Mo;return new Promise((o,a)=>{try{let s=xZ.spawn(r,n,{stdio:["ignore","pipe","pipe"],detached:!0}),l={contents:""},d={contents:""},u={contents:!1},c={contents:void 0},f={contents:void 0},p=S=>{if(!u.contents)return u.contents=!0,yl(f.contents,T=>{clearTimeout(T)}),o(S)},m=S=>{if(c.contents!==void 0)return;c.contents=S;let v=s.pid;if(v==null)return;let O=i(-v|0,"SIGKILL");if(O.TAG==="Ok")return;let A=O._0;if(A.code==="ESRCH")return;let k=S+"; probe process-group kill failed: "+A.message;c.contents=k,p({error:k,exitCode:void 0,stdout:l.contents,stderr:d.contents})},h=S=>{try{return process.kill(-S,0),!0}catch{return!1}},_=(S,T,v)=>{if(!h(T)||Date.now()>=v)return p(S);setImmediate(()=>_(S,T,v))},g=(S,T)=>{let v=S.contents+T.toString("utf8");if(v.length>16e6)return m(e+" exceeded its 16000000 byte output budget; process group killed");S.contents=v},b=s.stdout;b?.on("data",S=>g(l,S));let y=s.stderr;y?.on("data",S=>g(d,S)),s.once("error",S=>p({error:w(Ct(S),e+" probe failed"),exitCode:void 0,stdout:l.contents,stderr:d.contents})),s.once("close",(S,T)=>{let v=q(S==null?void 0:be(S),M=>M),O=c.contents,A=O!==void 0?O:v!==void 0?v!==0?e+" failed with status "+v.toString():void 0:T==null?e+" exited without a status":e+" exited from signal "+T,C=l.contents,k=d.contents,I={error:A,exitCode:v,stdout:C,stderr:k},U=c.contents,F=s.pid;return U!==void 0&&F!=null?_(I,F,Date.now()+5e3):p(I)}),f.contents=be(setTimeout(()=>s.pid==null?p({error:e+" timed out before spawn produced a process id",exitCode:void 0,stdout:l.contents,stderr:d.contents}):m(e+" timed out after 5000ms; process group killed"),5e3));return}catch(s){let l=N(s);return o({error:s$(l),exitCode:void 0,stdout:"",stderr:""})}})}function o$(e,t){let r=t.stderr.trim();return r===""?w(t.error,e+" probe failed"):e+" probe failed: "+r}function bPe(){let e=t=>yZ("lsof",void 0,"/bin/sh",["-c","ulimit -n 1024 2>/dev/null; exec lsof "+t]);return{scanProcesses:async()=>{let t=await yZ("ps",void 0,"ps",["-axo","pid=,ppid=,command="]);return t.error!==void 0?await Promise.reject(o$("ps",t)):uPe(t.stdout)},scanListenSockets:async()=>{let t=await e("-nP -iTCP -sTCP:LISTEN -FpPcn"),r=t.error,n=t.exitCode,i=t.stdout.trim(),o=t.stderr.trim();return r===void 0?mPe(t.stdout):n===1&&i===""&&o===""?[]:await Promise.reject(o$("lsof",t))},scanProcessCwds:async t=>{let r=[];if(t.forEach(d=>{if(Number.isInteger(d)&&d>0&&!r.includes(d)){r.push(d);return}}),r.length===0)return{};let n=r.map(d=>d.toString()).join(","),i=await e("-a -p "+n+" -d cwd -Fn"),o=i.error,a=i.exitCode,s=i.stdout.trim(),l=i.stderr.trim();return o===void 0?pPe(i.stdout):a===1&&s===""&&l===""?{}:await Promise.reject(o$("lsof cwd",i))}}}function SZ(){return gPe(1e3,hPe,void 0,bPe(),e=>Date.now())}function c$(e){switch(e){case"BindingNotObject":return"binding_not_object";case"SessionIdInvalid":return"session_id_invalid";case"LeaseEpochInvalid":return"lease_epoch_invalid";case"NextFrameIndexInvalid":return"next_frame_index_invalid";case"CheckpointConfigMissing":return"checkpoint_config_missing";case"CheckpointConfigInvalid":return"checkpoint_config_invalid";case"SourceSeqInvalid":return"source_seq_invalid"}}function l$(e){return"adt_stream_v1 dispatch refused: "+c$(e)+"; the commander refuses to stream unconfigured (no baked fallback thresholds exist by law - plan doc 2.4/MF9)"}function vZ(e){switch(e){case"Checkpoint":return"checkpoint";case"Delta":return"delta";case"Terminal":return"terminal"}}function bk(e){if(typeof e=="object"&&e!==null&&!Array.isArray(e))return e}function Bp(e){if(e!==void 0&&typeof e=="number"&&e>=1&&Math.trunc(e)===e)return e}function xPe(e){let t=bk(e);if(t===void 0)return;let r=Bp(t.version),n=G(t.thresholds,bk);if(r===void 0||n===void 0)return;let i=Bp(n.max_bytes),o=Bp(n.max_deltas),a=Bp(n.max_interval_ms);if(i!==void 0&&o!==void 0&&a!==void 0)return{version:r,thresholds:{maxBytes:i,maxDeltas:o,maxIntervalMs:a}}}function SPe(e){let t=bk(e);if(t===void 0)return{TAG:"ParseRefused",_0:"BindingNotObject"};let r=Bp(t.session_id);if(r===void 0)return{TAG:"ParseRefused",_0:"SessionIdInvalid"};let n=Bp(t.lease_epoch);if(n===void 0)return{TAG:"ParseRefused",_0:"LeaseEpochInvalid"};let i=Bp(t.next_frame_index);if(i===void 0)return{TAG:"ParseRefused",_0:"NextFrameIndexInvalid"};let o=t.checkpoint_config;if(o===void 0)return{TAG:"ParseRefused",_0:"CheckpointConfigMissing"};let a=xPe(o);return a!==void 0?{TAG:"Parsed",_0:{sessionId:r,leaseEpoch:n,nextFrameIndex:i,checkpointConfig:a}}:{TAG:"ParseRefused",_0:"CheckpointConfigInvalid"}}function TPe(e){return Qi(vZ(e.frameKind)+`
|
package/dist/impl-ts/index.js
CHANGED
|
@@ -1560,7 +1560,7 @@ To kick the agent off:
|
|
|
1560
1560
|
`,D=Buffer.byteLength(w,"utf8");if(D>s)return l("runner_diagnostics.spool_entry_dropped",{reason:"entry_too_large",entry_bytes:D,max_entry_bytes:s}),!1;wOe(n,{recursive:!0}),f(u)+D>i&&h(),_(D);let R=b()?`
|
|
1561
1561
|
`:"";return xOe(u,`${R}${w}`,"utf8"),!0}catch(P){return l("runner_diagnostics.spool_failed",{error:P instanceof Error?P.message:String(P)}),!1}},v=T=>{let P=[],w=kOe(T,"utf8");for(let D of w.split(`
|
|
1562
1562
|
`))if(D.trim()!=="")try{let R=JSON.parse(D);R!==null&&typeof R=="object"&&P.push({parsed:R,raw:D})}catch{}return P};return{append:k,drain:async T=>{if(c)return{uploadedBatches:0,uploadedEntries:0,remainingBatches:p().length,skipped:!0};c=!0;let P=0,w=0;try{h(),_(0);let D=a()-o;for(let R of p()){let O;try{O=v(R)}catch(H){l("runner_diagnostics.spool_batch_unreadable",{file:R,error:H instanceof Error?H.message:String(H)}),m(R,"unreadable");continue}let z=O.filter(H=>{let ee=zOe(H.parsed);return ee===void 0||ee>=D});if(z.length===0){m(R,"empty_or_expired");continue}let Z=IM(R,".jsonl"),K=z.map(H=>H.raw).join(`
|
|
1563
|
-
`),re=z.map(H=>H.parsed.spooled_at).filter(H=>typeof H=="string"),j={bundle_name:"runner-diagnostics-spool",exported_at:new Date(a()).toISOString(),idempotency_key:Z,diagnostics:{kind:"runner_diagnostic_log",spool_batch:!0,idempotency_key:Z,entry_count:z.length,...re.length===0?{}:{first_spooled_at:re[0],last_spooled_at:re[re.length-1]}},telemetry_ndjson:K};try{await T(j)}catch(H){l("runner_diagnostics.spool_upload_failed",{file:R,remaining_batches:p().length,error:H instanceof Error?H.message:String(H)});break}P+=1,w+=z.length;try{QG(R)}catch(H){l("runner_diagnostics.spool_delete_failed",{file:R,error:H instanceof Error?H.message:String(H)})}}}catch(D){l("runner_diagnostics.spool_drain_failed",{error:D instanceof Error?D.message:String(D)})}finally{c=!1}return{uploadedBatches:P,uploadedEntries:w,remainingBatches:p().length,skipped:!1}},pendingBatchFiles:p}}var EOe,AOe,MOe,DOe,OOe,XG,qOe,FOe,eH=B(()=>{"use strict";$v();EOe=32*1024*1024,AOe=10080*60*1e3,MOe=4*1024*1024,DOe=1024*1024,OOe="spool.jsonl",XG=/^batch-(\d{1,16})-[0-9a-f-]+\.jsonl$/;qOe=/\b([A-Z][A-Z0-9_]{1,})=("[^"\n]*"|'[^'\n]*'|[^\s"'`;,)\]}]+)/g,FOe=/(?:\/(?:[A-Za-z0-9._@~+-]|%[0-9A-Fa-f]{2})+){2,}/g});var jt,EM,yd=B(()=>{"use strict";jt="1.0.
|
|
1563
|
+
`),re=z.map(H=>H.parsed.spooled_at).filter(H=>typeof H=="string"),j={bundle_name:"runner-diagnostics-spool",exported_at:new Date(a()).toISOString(),idempotency_key:Z,diagnostics:{kind:"runner_diagnostic_log",spool_batch:!0,idempotency_key:Z,entry_count:z.length,...re.length===0?{}:{first_spooled_at:re[0],last_spooled_at:re[re.length-1]}},telemetry_ndjson:K};try{await T(j)}catch(H){l("runner_diagnostics.spool_upload_failed",{file:R,remaining_batches:p().length,error:H instanceof Error?H.message:String(H)});break}P+=1,w+=z.length;try{QG(R)}catch(H){l("runner_diagnostics.spool_delete_failed",{file:R,error:H instanceof Error?H.message:String(H)})}}}catch(D){l("runner_diagnostics.spool_drain_failed",{error:D instanceof Error?D.message:String(D)})}finally{c=!1}return{uploadedBatches:P,uploadedEntries:w,remainingBatches:p().length,skipped:!1}},pendingBatchFiles:p}}var EOe,AOe,MOe,DOe,OOe,XG,qOe,FOe,eH=B(()=>{"use strict";$v();EOe=32*1024*1024,AOe=10080*60*1e3,MOe=4*1024*1024,DOe=1024*1024,OOe="spool.jsonl",XG=/^batch-(\d{1,16})-[0-9a-f-]+\.jsonl$/;qOe=/\b([A-Z][A-Z0-9_]{1,})=("[^"\n]*"|'[^'\n]*'|[^\s"'`;,)\]}]+)/g,FOe=/(?:\/(?:[A-Za-z0-9._@~+-]|%[0-9A-Fa-f]{2})+){2,}/g});var jt,EM,yd=B(()=>{"use strict";jt="1.0.234",EM=`linzumi ${jt}`});import{closeSync as tH,existsSync as MM,mkdirSync as UOe,openSync as rH,readFileSync as oH,renameSync as BOe,unlinkSync as rc,writeFileSync as JOe,writeSync as iH}from"node:fs";import{dirname as sH,join as KOe}from"node:path";function DM(e){return e instanceof _a||e instanceof Error&&e.name===dH&&"lockPath"in e&&"heldBy"in e}function OM(e,n=pt(),t){let r=t===void 0?encodeURIComponent(e):Vu(t);return KOe(sH(n),"runners",`${r}.lock`)}function t0(e){let n=OM(e.machineId,e.configPath,e.linzumiUrl),t=e.isPidAlive??hH,r=e.now??(()=>new Date),o=e.killPid??o$e,i=r().toISOString(),s={version:1,machineId:e.machineId,runnerId:e.runnerId,pid:e.pid??process.pid,cwd:e.cwd,workspace:e.workspace,...e.linzumiUrl===void 0?{}:{linzumiUrl:rt(e.linzumiUrl)},...e.launchSource===void 0?{}:{launchSource:e.launchSource},startedAt:i,heartbeatAt:i,cliVersion:e.cliVersion??jt,...e.gracefulUpdateDrain===!0?{gracefulUpdateDrain:!0}:{}};HOe(e.machineId,e.configPath,e.linzumiUrl,t,r,o,e.onTakeover),ZOe(n,s,t,r,o,e.onTakeover,e.beforeReadExistingLock,e.beforeReplaceStaleLock);let a=()=>uH(n,s,r),d=setInterval(a,aH);return d.unref(),{path:n,record:s,heartbeat:a,release:()=>{clearInterval(d),fH(n,s)}}}function uH(e,n,t){try{let r=o0(e);if(r===void 0||r.machineId!==n.machineId||r.runnerId!==n.runnerId||r.pid!==n.pid||r.startedAt!==n.startedAt)return;let o={...r,heartbeatAt:t().toISOString()},i=`${e}.tmp`;JOe(i,`${JSON.stringify(o,null,2)}
|
|
1564
1564
|
`,"utf8"),BOe(i,e)}catch{}}function oc(e,n,t){if(!n(e.pid))return{state:"dead"};let r=e.heartbeatAt??e.startedAt,o=Date.parse(r);return Number.isNaN(o)||t().getTime()-o>VOe?{state:"wedged",reason:e.heartbeatAt===void 0?"missing_heartbeat":"stale_heartbeat"}:{state:"live"}}function cH(e,n,t,r){return t!==r0||e.launchSource!==r0?!1:r.state!=="live"?!0:WOe(n,e.cliVersion)>0}function WOe(e,n){let t=nH(e),r=nH(n);for(let o=0;o<3;o++){let i=t.core[o],s=r.core[o];if(i===void 0||s===void 0)throw new Error(`compareCliVersions: unexpected undefined at core index ${o}`);if(i!==s)return i>s?1:-1}return t.prerelease.length===0&&r.prerelease.length===0?0:t.prerelease.length===0?1:r.prerelease.length===0?-1:GOe(t.prerelease,r.prerelease)}function nH(e){let n=e.trim().replace(/^v/i,"").split("+",1)[0]??"",t=n.indexOf("-"),r=t===-1?n:n.slice(0,t),o=t===-1?"":n.slice(t+1),i=r.split("."),s=[AM(i[0]),AM(i[1]),AM(i[2])],a=o===""?[]:o.split(".").filter(d=>d!=="");return{core:s,prerelease:a}}function AM(e){let n=Number.parseInt(e??"",10);return Number.isInteger(n)&&n>=0?n:0}function GOe(e,n){let t=Math.max(e.length,n.length);for(let r=0;r<t;r++){let o=e[r],i=n[r];if(o===void 0)return-1;if(i===void 0)return 1;let s=Number.parseInt(o,10),a=Number.parseInt(i,10),d=s.toString()===o,u=a.toString()===i;if(d&&u){if(s!==a)return s>a?1:-1}else{if(d!==u)return d?-1:1;if(o!==i)return o>i?1:-1}}return 0}function lH(e,n,t,r,o){try{r(n.pid)}catch(i){let s=i!==null&&typeof i=="object"&&"code"in i?i.code:void 0;if(s!=="ESRCH")throw s==="EPERM"||s==="EACCES"?new Error(`Cannot take over the runner lock at ${e}: its holder process (pid ${n.pid}) is owned by another user and cannot be stopped. Stop that process, or remove the lock file, then retry.`):i}o?.({lockPath:e,holderPid:n.pid,holderRunnerId:n.runnerId,reason:t})}function HOe(e,n,t,r,o,i,s){if(t===void 0||Nr(t)!==Nr(mr))return;let a=OM(e,n),d=o0(a);if(d!==void 0){if(oc(d,r,o).state==="live")throw new _a(a,d);pH(a,r,()=>{let u=MM(a)?$M(a):void 0;if(u===void 0)return;let c=oc(u,r,o);if(c.state==="live")throw new _a(a,u);c.state==="wedged"&&lH(a,u,c.reason,i,s),rc(a)})}}function ZOe(e,n,t,r,o,i,s,a){if(n0(e,n))return;s?.();let d=o0(e);if(d===void 0){if(n0(e,n))return;throw new Error(`another Linzumi runner lock appeared while starting: ${e}`)}if(oc(d,t,r).state==="live")throw new _a(e,d);a?.(),pH(e,t,()=>{let u=MM(e)?$M(e):void 0;if(u!==void 0){let c=oc(u,t,r);if(c.state==="live")throw new _a(e,u);c.state==="wedged"&&lH(e,u,c.reason,o,i),rc(e)}if(!n0(e,n))throw new Error(`another Linzumi runner lock appeared while starting: ${e}`)})}function n0(e,n){UOe(sH(e),{recursive:!0});try{let t=rH(e,"wx");try{iH(t,`${JSON.stringify(n,null,2)}
|
|
1565
1565
|
`)}finally{tH(t)}return!0}catch(t){if(Gp(t,"EEXIST"))return!1;throw t}}function pH(e,n,t){let r=`${e}.replace`;for(;;)try{let o=rH(r,"wx");try{iH(o,`${process.pid}
|
|
1566
1566
|
`),t()}finally{tH(o),rc(r)}return}catch(o){if(Gp(o,"EEXIST")){let i=QOe(r);if(i===void 0)continue;if(n(i))throw new Error(["another Linzumi runner is already replacing a stale runner lock",`lock: ${e}`,"Wait for that startup to finish, then retry."].join(`
|
|
@@ -1667,7 +1667,7 @@ itself for the kernel OOM killer at runtime (no unit needed for that part).
|
|
|
1667
1667
|
`)}});switch(t.type){case"ok":return n("agent_replay.runtime_started",{fixture_path:t.runtime.fixture.path,provider:t.runtime.provider,record_count:t.runtime.fixture.records.length}),t.runtime;case"error":throw new Error(t.message)}}function TLe(e){return{...e,CLAUDE_CODE_ENABLE_TASKS:"0"}}async function U0(e){let n=S1(e),t=U6e(e),r=await CLe(e,n),o=r===void 0?e:{...e,agentReplay:{...e.agentReplay,fixturePath:e.agentReplay?.fixturePath??r.fixture.path,provider:r.provider,clockMode:e.agentReplay?.clockMode??{type:"immediate"}},claudeCodeAvailable:r.provider==="claude-code",claudeCodeRunner:r.claudeCodeRunner},i={actions:[()=>n.close(),...t===void 0?[]:[()=>t.close()]],closePromise:void 0,removeHandlers:void 0},s=()=>O6e(i),a={stopAccepting:()=>{},flushInboundQueues:()=>{},interruptInFlightTurns:()=>Promise.resolve()},d={beginDraining:()=>{},isQuiescent:()=>!0,isWaitEligible:()=>!0,inFlightTurns:()=>[],lastActivityAtMs:()=>{},publishForcedKillTerminalStates:()=>Promise.resolve(),onTurnCompleted:()=>{}},u=o.threadProcess?.role==="thread"?void 0:bH({log:(h,m)=>n(h,m)});if(u!==void 0){let h=m=>u.handleIpcMessage(m);process.on("message",h),i.actions.push(()=>{process.off("message",h)}),n("runner.generation_overlap_enabled",{epoch:u.epoch,handoffFromPid:u.handoffFromPid??null})}let c=M7({flagRaw:o.streamIdleTimeoutMsFlag}),l=zQ({supervised:ey(process.env),platform:process.platform}),p=jD({optedIn:o.stopSupervisorOnSigint===!0,threadRole:o.threadProcess?.role,supervised:ey(process.env),launchSource:o.launchSource,platform:process.platform})?LD({serverUrl:o.kandanUrl,log:(h,m)=>n(h,m??{})}):void 0;p!==void 0&&i.actions.push(ND(p));let f=V6e(s,a,n,{signals:l?["SIGINT","SIGHUP"]:["SIGTERM","SIGINT","SIGHUP"],supervisorStop:p});if(i.removeHandlers=f.uninstall,process.platform!=="win32"){let h=JQ({hooks:{beginDraining:()=>d.beginDraining(),isQuiescent:()=>d.isQuiescent(),isWaitEligible:()=>d.isWaitEligible(),inFlightTurns:()=>d.inFlightTurns(),lastActivityAtMs:()=>d.lastActivityAtMs(),publishForcedKillTerminalStates:m=>d.publishForcedKillTerminalStates(m),onTurnCompleted:m=>d.onTurnCompleted(m),exitViaDrain:()=>{f.triggerFastExitDrain("SIGTERM")}},maxWaitMs:v0(process.env),hardCapMs:AQ(process.env,v0(process.env),u!==void 0),activityIdleMs:MQ(process.env),signals:l?["SIGUSR2","SIGTERM"]:["SIGUSR2"],log:n});i.actions.push(h.uninstall),u!==void 0&&(u.requestUpdateDrain=m=>h.requestDrain(m),u.cancelUpdateDrain=m=>h.cancelDrain(m))}n("runner.starting",{runnerId:o.runnerId,cwd:o.cwd,kandanUrl:o.kandanUrl,debugTraceDir:t?.runDir??null,codex_bin_path:o.codexBin,codex_bin_source:o.dependencyStatus?.codex.source??null,codex_version:o.dependencyStatus?.codex.version??null}),bze(),YU({snapshotsRoot:rh()}).then(h=>{h.removedSnapshotDirs.length>0&&n("runner.git_safety_snapshots_pruned",{removed_snapshots:h.removedSnapshotDirs.length,removed_refs:h.removedRefs.length})}).catch(h=>{n("runner.git_safety_snapshots_prune_failed",{message:h instanceof Error?h.message:String(h)})});try{if(o.machineId!==void 0){let b=o.machineId,k=()=>t0({machineId:b,runnerId:o.runnerId,cwd:o.cwd,workspace:Kn(o)??null,linzumiUrl:o.kandanUrl,launchSource:o.launchSource,configPath:o.runnerLockConfigPath,gracefulUpdateDrain:process.platform!=="win32",onTakeover:S=>{n("runner.lock_takeover",{runnerId:o.runnerId,holderRunnerId:S.holderRunnerId,holderPid:S.holderPid,reason:S.reason,lockPath:S.lockPath})}}),v=u?.handoffFromPid;if(u!==void 0&&v!==void 0){let S=mH({machineId:b,runnerId:o.runnerId,cwd:o.cwd,workspace:Kn(o)??null,linzumiUrl:o.kandanUrl,launchSource:o.launchSource,configPath:o.runnerLockConfigPath,gracefulUpdateDrain:process.platform!=="win32",handoffHolderPid:v,onTakeover:w=>{n("runner.lock_takeover",{runnerId:o.runnerId,holderRunnerId:w.holderRunnerId,holderPid:w.holderPid,reason:w.reason,lockPath:w.lockPath})}});i.actions.push(()=>S.release()),u.promoteRunnerLock=()=>S.promote(),n("runner.generation_incoming_lock_acquired",{path:S.path,machineId:o.machineId,runnerId:o.runnerId,handoffHolderPid:v,alreadyPromoted:S.promoted()});let T=w=>{try{return process.kill(w,0),!0}catch(D){return D.code==="EPERM"}},P=setInterval(()=>{if(u.currentRole()!=="incoming"){clearInterval(P);return}T(v)||(n("runner.generation_self_promote_on_peer_death",{handoffHolderPid:v}),u.handleIpcMessage({type:"generation_promote"}),clearInterval(P))},3e4);P.unref(),i.actions.push(()=>clearInterval(P))}else{let S=await W6e(k,o,n);i.actions.push(()=>S.release()),n("runner.lock_acquired",{path:S.path,machineId:o.machineId,runnerId:o.runnerId})}}let h,m=new Promise((b,k)=>{h=k}),_=DLe(o,n,i,s,a,d,r,t,u,c,b=>h?.(b));return await Promise.race([_,m])}catch(h){try{await s()}catch(m){let _=h instanceof Error?h.message:String(h),b=m instanceof Error?m.message:String(m);throw we("runner.startup_cleanup_failed",{startup_message:_,cleanup_message:b}),process.stderr.write(`Runner startup failed and teardown also failed: ${b}
|
|
1668
1668
|
`),new AggregateError([h,m],`runner startup failed (${_}) and teardown failed (${b})`)}throw h}}async function MY(e){if(e.threadProcess?.role!=="thread")throw new Error("thread Codex worker requires thread process options");if(process.send===void 0)throw new Error("thread Codex worker requires an IPC channel");let n=S1(e),t=fze(e);if(t!==void 0){n("runner.thread_worker_preflight_failed",{kandanThreadId:e.threadProcess.kandanThreadId,cwd:e.cwd,reason:t.reason,message:t.message}),process.stderr.write(`${t.message}
|
|
1669
1669
|
`),n.close(),process.exitCode=1;return}let r,o,i=e,s=e.codexModelProvider;if(s!==void 0&&!wa(e)&&process.send!==void 0){let l=e.threadProcess.kandanThreadId;try{let p=WZ(),f=await MR({upstreamBaseUrl:s.llmProxyBaseUrl,initialToken:s.llmProxyToken,log:(h,m)=>n(h,{kandanThreadId:l,...m}),dispatcher:si()?.dispatcher,onUpstreamUnauthorized:()=>{o?.refreshNow()}});r=f,o=DR({relay:f,mint:()=>p(f.currentToken()),log:(h,m)=>n(h,{kandanThreadId:l,...m})}),i={...e,codexModelProvider:{...s,llmProxyBaseUrl:f.baseUrl}}}catch(p){n("llm_proxy_relay.worker_start_failed_fallback_to_env_token",{kandanThreadId:l,message:p instanceof Error?p.message:String(p)}),o?.stop(),o=void 0,r?.close(),r=void 0,i=e}}let a=await lee(i),d=await Cp(a.url),u=e.threadProcess.kandanThreadId,c=K0(()=>{o?.stop(),r?.close(),d.close(),a.stop(),n.close()});HZ(d),d.onClose?.(l=>{if(n("runner.thread_codex_worker_session_closed",{kandanThreadId:u,reason:l.message}),process.send!==void 0&&process.connected!==!1)try{process.send({type:"linzumi_thread_codex_worker_session_closed",kandanThreadId:u,reason:l.message})}catch{}c()}),process.send({type:"linzumi_thread_codex_worker_ready",kandanThreadId:u,commanderManagedPorts:h4e(a)}),await Ize(a.process,{log:(l,p)=>n(l,{kandanThreadId:u,...p})}),c()}function PLe(e,n,t){let r=`${n}
|
|
1670
|
-
${t}`.toLowerCase();return r.includes("not logged in")||r.includes("not authenticated")||r.includes("login required")||r.includes("please log in")?"not_logged_in":e===0?"logged_in":"probe_failed"}function VD(e,n){let t=e==="logged_in"&&n.status==="probe_failed"&&n.transient;return{status:t?e:n.status,downgradeSkipped:t}}function ILe(e,n){return e===void 0?{posture:void 0,cleared:!1}:n.type==="readable"&&!AE(n,e.realAuthFingerprintAtBurn)?{posture:void 0,cleared:!0}:{posture:e,cleared:!1}}function RLe(e,n){return n===void 0?e:"not_logged_in"}function JX(e,n,t){switch(n.authMode){case"api_key":return e;case"oauth":return t==="logged_in"?e:"Not signed in";case"none":return"Not signed in"}}function ELe(e,n){return e==="ENOENT"?n?{status:"binary_missing",transient:!1}:{status:"probe_failed",transient:!0}:{status:"probe_failed",transient:vM(e)}}function ALe(e,n){return new Promise(t=>{let r=[],o=[],i=!1,s,a=u=>{i||(i=!0,s!==void 0&&clearTimeout(s),t(u))},d=fy(e,["login","status"],{cwd:n,env:process.env,stdio:["ignore","pipe","pipe"]});s=setTimeout(()=>{d.kill("SIGTERM"),a({status:"probe_failed",transient:!0})},vLe),d.stdout?.on("data",u=>{r.push(u)}),d.stderr?.on("data",u=>{o.push(u)}),d.once("error",u=>{a(ELe(u.code,Rd(n)))}),d.once("exit",u=>{a({status:PLe(u,Buffer.concat(r).toString("utf8"),Buffer.concat(o).toString("utf8")),transient:u===null})})})}async function MLe(e){switch((await e.retryPendingSettlement()).type){case"settled":return{type:"duplicate",reason:"settled"};case"still_pending":return{type:"duplicate",reason:"still_pending"};case"not_pending":break}return e.sourceSeqAlreadyApplied()?{type:"duplicate",reason:"already_applied"}:{type:"route"}}async function DLe(e,n,t,r,o,i,s,a,d,u,c){let l=wNe(e),p=Sd(e),f=uNe(),h=(g,x)=>{let C=f.snapshot(),A=C.status==="starting"?void 0:C.status==="failed"&&C.adapter===x?C.reason:C.failures?.find(me=>me.adapter===x)?.reason;if(A!==void 0)return A;let I=g instanceof Error?g.message:String(g),F=cf(I.trim()===""?"execution leg failed without a reason":I,480);return f.markFailed(F,x),n("runner.execution_health_failed",{runnerId:e.runnerId,adapter:x,reason:F}),pr({severity:"error",key:`runner.execution_health_failed:${x}`,message:`This runner is connected but cannot run ${x} jobs: ${F}. It will refuse new work instead of pretending to accept it.`}),F},m={value:e.dependencyStatus},_=()=>(e.codexAuthStatusProbe??ALe)(e.codexBin,e.cwd),b=pg(),k=await _(),v={value:k.status},S={value:void 0},T=(g,x)=>{if(S.value!==void 0)return;let C=l7(g,x);if(C===void 0)return;let A={kind:C,realAuthFingerprintAtBurn:pg(),detectedAt:new Date().toISOString()};S.value=A,n("runner.codex_auth_refresh_burned",{runnerId:e.runnerId,burn_kind:C,consequence:"native OpenAI codex sessions cannot refresh; broadcasting codex_auth_status=not_logged_in until re-login",action:"run `codex login` on this machine",runner_console:{session_account_summary:JX(EE(),Ju(),"not_logged_in")}}),pr({severity:"error",key:"runner.codex_auth_refresh_burned",message:`Your codex ChatGPT login can no longer refresh (${C.replace(/_/g," ")}). Native OpenAI coding jobs on this machine will fail until you run \`codex login\` again; Linzumi will detect the new login automatically.`})},P=()=>{if(S.value===void 0)return;let g=ILe(S.value,pg());g.cleared&&(n("runner.codex_auth_reauth_detected",{runnerId:e.runnerId,healed_burn_kind:S.value?.kind??null,burned_at:S.value?.detectedAt??null}),pr({severity:"info",key:"runner.codex_auth_refresh_burned",message:"Codex login restored - native OpenAI coding jobs are available again."})),S.value=g.posture},w=()=>(P(),RLe(v.value,S.value)),D={value:e.claudeCodeAuthStatus??(sY(e).includes("claude-code")?"logged_in":"not_logged_in")};(D.value==="probe_failed"||D.value==="binary_missing")&&n("runner.claude_code_auth_startup_probe_failure",{runnerId:e.runnerId,claude_code_auth_status:D.value,probe_detail:e.claudeCodeAuthProbeDetail??null});let R=()=>sY(e,D.value).filter(g=>f.canClaimWork(g)),O={value:Ju()},z=new Set,Z=g=>{let x=`${g.type}:${g.authPath}`;if(!z.has(x))switch(z.add(x),g.type){case"malformed_id_token":n("runner.openai_id_token_malformed",{path:g.authPath});break;case"malformed_auth_file":n("runner.openai_auth_file_malformed",{path:g.authPath});break;case"unreadable_auth_file":n("runner.openai_auth_file_unreadable",{path:g.authPath});break}},K=()=>{let g=!1,x=Ju();O.value=x;let C=EE(process.env,A=>{g=!0,Z(A)});return g||z.clear(),JX(C,x,w())},re=()=>{let g=Ju();return O.value=g,g.hasValidOpenAiAuth?g.authMode==="api_key"?!0:g.authMode==="oauth"&&S.value===void 0&&v.value==="logged_in":!1};n("runner.codex_auth_status_probed",{runnerId:e.runnerId,codex_auth_status:v.value,has_valid_openai_auth:O.value.hasValidOpenAiAuth,openai_auth_mode:O.value.authMode,runner_console:{session_account_summary:K()}});let j=async()=>{let g=m.value;if(g!==void 0)try{let x=await hd({cwd:e.cwd,codexBin:e.codexBin,codeServerBin:e.codeServerBin,editorRuntime:g.editorRuntime}),C=DG(g,x);m.value=C.status,C.codexDowngradeSkipped&&n("runner.dependency_status_reprobe_downgrade_skipped",{runnerId:e.runnerId,codex_probe_failure:x.codex.failure??null,probe_detail:x.codex.failureDetail??null}),n("runner.dependency_status_reprobed",{runnerId:e.runnerId,codex_available:C.status.codex.available,codex_available_changed:g.codex.available!==C.status.codex.available,probe_detail:x.codex.failureDetail??null})}catch(x){n("runner.dependency_status_reprobe_failed",{runnerId:e.runnerId,message:x instanceof Error?x.message:String(x)})}},H=async()=>{try{let g=await _(),x=v.value,C=VD(x,g);v.value=C.status;let A=O.value.hasValidOpenAiAuth;return O.value=Ju(),C.downgradeSkipped&&n("runner.codex_auth_status_reprobe_downgrade_skipped",{runnerId:e.runnerId,reprobed_status:g.status,has_valid_openai_auth:O.value.hasValidOpenAiAuth}),n("runner.codex_auth_status_reprobed",{runnerId:e.runnerId,codex_auth_status:C.status,codex_auth_status_changed:x!==C.status,has_valid_openai_auth:O.value.hasValidOpenAiAuth,has_valid_openai_auth_changed:A!==O.value.hasValidOpenAiAuth,runner_console:{session_account_summary:K()}}),g.status==="probe_failed"&&g.transient?{type:"retry"}:{type:"settled"}}catch(g){let x=v.value,C=VD(x,{status:"probe_failed",transient:!0});return v.value=C.status,O.value=Ju(),C.downgradeSkipped&&n("runner.codex_auth_status_reprobe_downgrade_skipped",{runnerId:e.runnerId,reprobed_status:"probe_failed",message:g instanceof Error?g.message:String(g),has_valid_openai_auth:O.value.hasValidOpenAiAuth}),n("runner.codex_auth_status_reprobe_failed",{runnerId:e.runnerId,message:g instanceof Error?g.message:String(g),has_valid_openai_auth:O.value.hasValidOpenAiAuth,runner_console:{session_account_summary:K()}}),{type:"retry"}}},ee=p7({initialFingerprint:b,initialRefreshOutcome:k.transient?{type:"retry"}:{type:"settled"},computeFingerprint:pg,refresh:H,reportRejectedRefresh:g=>{n("runner.codex_auth_hint_refresh_rejected",{runnerId:e.runnerId,stage:g.stage,previous_fingerprint_type:g.previousFingerprintType,attempted_fingerprint_type:g.attemptedFingerprintType})}}),te=async(g="background")=>{if(!(e.claudeCodeAuthStatusProbe===void 0&&(e.claudeCodeRunner!==void 0||e.agentReplay!==void 0)))try{let x=await(e.claudeCodeAuthStatusProbe??wp)({cwd:e.cwd,claudeBin:e.claudeCodeBin}),C=D.value,A=g==="dispatch"?{status:x.status,downgradeSkipped:!1}:VD(C,x);switch(D.value=A.status,A.status){case"logged_in":f.markReadyAfterRecovery("claude-code"),C!=="logged_in"&&(n("runner.execution_health_recovered",{runnerId:e.runnerId,adapter:"claude-code",previous_status:C}),aNe());break;case"not_logged_in":case"binary_missing":case"probe_failed":f.markNotReady(r1("reprobe",A.status,x.detail),"claude-code");break}A.downgradeSkipped&&n("runner.claude_code_auth_status_reprobe_downgrade_skipped",{runnerId:e.runnerId,reprobed_status:x.status,probe_detail:x.detail??null}),n("runner.claude_code_auth_status_reprobed",{runnerId:e.runnerId,purpose:g,claude_code_auth_status:A.status,claude_code_auth_status_changed:C!==A.status,probe_detail:x.detail??null,claude_code_executable_fallback:x.fallbackExecutable??null})}catch(x){g==="dispatch"&&(D.value="probe_failed",f.markNotReady(r1("reprobe","probe_failed",x instanceof Error?x.message:String(x)),"claude-code")),n("runner.claude_code_auth_status_reprobe_failed",{runnerId:e.runnerId,purpose:g,message:x instanceof Error?x.message:String(x)})}},pe=async g=>{switch(g){case"claude-code":await te("dispatch");break;case"codex":break}return{agentProviders:R(),hasNativeCodexAuth:re()}},fe=b3({computeFingerprint:()=>x3(process.env,{cwd:e.cwd}),refresh:te,onReprobeStarted:()=>{n("runner.claude_code_auth_hint_changed",{runnerId:e.runnerId,claude_code_auth_status:D.value})}}),Je=e.allowedForwardPorts??[],ge=new Set(Je),ie=new Set,le=h1(e.kandanUrl),Oe=()=>eNe(le,ie),sn=xY(e)?await nze(n):void 0;sn!==void 0&&t.actions.push(()=>sn.close());let He=new Map,an=(g,x)=>{He.set(g,{kandanThreadId:x.kandanThreadId??null,codexThreadId:x.codexThreadId??null,channelSlug:x.channelSlug??null,processName:x.processName??null,processIconKey:x.processIconKey??null,localEditor:x.localEditor===!0,agentProvider:x.agentProvider??null,linzumiCliManaged:x.linzumiCliManaged===!0})},$=g=>{He.delete(g)},V=(g,x={})=>{ge.add(g),ie.add(g),an(g,{processName:x.processName??null,processIconKey:x.processIconKey??null,agentProvider:x.agentProvider??null,linzumiCliManaged:!0})},U=g=>{ie.delete(g),$(g),Je.includes(g)||ge.delete(g)},J=()=>Array.from(ge).sort((g,x)=>g-x).map(g=>{let x=He.get(g);return{port:g,kandanThreadId:x?.kandanThreadId??null,codexThreadId:x?.codexThreadId??null,channelSlug:x?.channelSlug??null,processName:x?.processName??null,processIconKey:x?.processIconKey??null,localEditor:x?.localEditor===!0,agentProvider:x?.agentProvider??null,linzumiCliManaged:x?.linzumiCliManaged===!0||ie.has(g)}}),ye=g=>{let{advertisable:x,rejected:C}=tE(g);for(let A of C)n("runner.non_advertisable_cwd_root_dropped",{root:A.root,reason:A.reason}),pr({severity:"warning",key:`runner.non_advertisable_cwd_root:${A.root}`,message:`not advertising ${JSON.stringify(A.root)} as an allowed working-directory root (${A.reason==="home_root"?"it is your home directory":"it is a filesystem root"}). A catch-all root would let the server route any coding job to this machine. Register explicit project folders instead (connect from a project directory or pass --allowed-cwd).`});return x},ae=ye(gr(e.allowedCwds)),he={value:[...ae]},Ze=e.remoteCodexSandboxRunner??lQ({env:process.env,platform:process.platform}),xe=new Map,Pe={value:gr(e.missingAllowedCwds??[])},dn={value:!1},ne={value:null},ue=(g,x)=>{let C=ne.value;if(g.configVersion!==null&&C!==null&&g.configVersion<C){n("runner.config_sync_stale_skipped",{source:x.source,configVersion:g.configVersion,appliedConfigVersion:C});return}let A=oV(g.allowedCwds,e.kandanUrl),I=A1(A,{createMissing:!0});dn.value=dn.value||n4e(I.allowedCwds,[e.cwd,...ae]),he.value=ye(gr([...x.includeStartupAllowedCwds?ae:[],...I.allowedCwds])),Pe.value=I.missingAllowedCwds,g.configVersion!==null&&(ne.value=g.configVersion),n("runner.config_updated",{source:x.source,configVersion:g.configVersion,allowedCwdCount:he.value.length,missingAllowedCwdCount:Pe.value.length})},$e=(g,x={})=>{let C=k4e(he.value,Pe.value);if(!C.changed)return!1;if(he.value=C.advertised,Pe.value=C.missing,C.dropped.length>0){n("runner.stale_allowed_cwd_roots_deadvertised",{trigger:g,pruned_roots:C.dropped,advertised_root_count:C.advertised.length,...x});for(let A of C.dropped)pr({severity:"warning",key:`runner.allowed_cwd_root_missing:${A}`,message:`allowed working-directory root ${JSON.stringify(A)} no longer exists (deleted, or its disk/volume is unmounted). Not offering it for coding jobs until it is back; remount the volume or restore the folder to resume.`})}if(C.restored.length>0){n("runner.allowed_cwd_roots_readvertised",{trigger:g,restored_roots:C.restored,advertised_root_count:C.advertised.length,...x});for(let A of C.restored)pr({severity:"info",key:`runner.allowed_cwd_root_restored:${A}`,message:`allowed working-directory root ${JSON.stringify(A)} is back; offering it for coding jobs again.`})}return!0},Ue={value:{status:"disabled"}},Qe={value:0},Se={watcher:void 0,approvedPorts:new Set,approvedTargets:new Map,dismissedTargets:new Map,pendingRequests:new Map,queuedCandidates:new Map};t.actions.push(()=>{for(let g of xe.values())g.abort(new Error("local runner stopped"));xe.clear(),Ue.value.status==="running"&&(Ue.value.process.kill("SIGINT"),Ue.value.collaboration?.process.kill("SIGINT")),Se.watcher?.close()});let Cn=()=>Array.from(Se.pendingRequests.values()).sort((g,x)=>g.port-x.port).map(g=>{let x=qi(g.command),C=x?.appName??Mh(Or(g));return{requestId:g.requestId,port:g.port,pid:g.pid,command:g.command,...g.cwd===void 0?{}:{cwd:g.cwd},summary:`Make ${C} on port ${g.port} accessible on Linzumi?`,reason:Ub(Or(g)),...x?.appName===void 0?{}:{processName:x.appName},...x?.iconKey===void 0?{}:{processIconKey:x.iconKey}}}),Xn,$n,Dt=()=>($n===void 0&&($n=(e.localVmReadinessProbe??(()=>FW({workspaceLocalVmExecutionFlag:e.vmExecution===!0})))().then(x=>(Xn=x,x)).catch(x=>{n("vm.local_vm_readiness_probe_failed",{error:x instanceof Error?x.message:String(x)})})),$n),so=()=>(Dt(),Xn),W=()=>({...d===void 0?{}:{generationOverlap:!0},codexAppServer:l,codexRemoteTui:l,codexCollaborationMode:!0,client_message_ids:!0,commander_pipeline:"pipeline",terminal_attempt_v1:!0,agentProviders:R(),modelProviders:[...dd],modelAccountPreflight:F9,codexAuthStatus:w(),...S.value===void 0?{}:{codexAuthReauthRequired:!0,codexAuthReauthReason:S.value.kind},claudeCodeAuthStatus:D.value,hasValidOpenaiAuth:O.value.hasValidOpenAiAuth,openaiAuthMode:O.value.authMode,waferAvailable:!0,defaultAgentProvider:"codex",startInstance:he.value.length>0&&f.canClaimWork(),...f.capabilityFields(),durableClaudeSessionStore:!0,agentSlashCommandCatalog:!0,agentSystemCommands:!0,agentCompact:!0,agentReview:!0,cloneRepository:!0,managedDevServices:!0,claudeCodeCheckpointRewind:!1,steerTurn:!0,[I4]:!0,appliedConfigVersion:ne.value,allowedCwds:he.value,missingAllowedCwds:Pe.value,allowedCwdSuggestions:C4e(e.cwd,he.value),allowedCwdProjects:T4e(he.value),onboardingSelectedFolderScan:!0,portForwarding:ge.size>0,tcpForwarding:!0,linzumiMcp:!0,streamIdleTimeoutMs:u.effectiveMs(),streamIdleTimeoutSource:u.effectiveSource(),localVmExecution:e.vmExecution===!0,...(()=>{let g=so();return g===void 0?{}:{localVmReadiness:g}})(),remoteCodexExecution:Ze!==void 0&&he.value.length>0,remoteCodexExecutionStatus:Ze===void 0?"sandbox_unavailable":he.value.length>0?"ready":"cwd_unavailable",allowedPorts:Array.from(ge).sort((g,x)=>g-x),forwardedPortAttributions:J(),pendingEditorForwardPortRequests:Cn(),toolStatus:m.value===void 0?null:wM(m.value),editorRuntime:m.value?.editorRuntime===void 0?null:wM(m.value).editorRuntime,...cG(e.editorRuntime,he.value,Ue.value)}),q=()=>($e("capabilities_payload"),W()),L=HD(KLe(e.runnerId),n),Q=d===void 0?L:wH(L,()=>d.outgoingDrainActive());t.actions.push(()=>Q.flush());let de=z9(e.runnerId),be=U9(de,g=>n("runner.cwd_stillbirth_state_write_failed",{message:g,statePath:de}),g=>n("runner.cwd_stillbirth_state_read_failed",{message:g,statePath:de}));if(e.threadProcess?.role!=="thread"){let g=G9(be);g.length>0&&n("runner.cwd_stillbirth_counters_reset_on_restart",{cwds:g})}let nn=HD(VLe(e.runnerId),n,{discardSeqsOnFirstEpochAdoption:!0});t.actions.push(()=>nn.flush());let Be=UJ(zJ(e.runnerId),n);if(e.threadProcess?.role!=="thread"){let g=Ru(e.runnerId);x8(g,n),y8({scopeDir:g,ownerPid:process.pid,log:n}).then(C=>{for(let A of C.failed)pr({severity:"error",key:`dev-service-convergence:${A.name}:${A.error}`,message:A.error})}).catch(C=>{let A=C instanceof Error?C.message:String(C);n("dev_services.reconcile_failed",{message:A}),pr({severity:"error",key:`dev-services-reconcile:${A}`,message:A})});let x=_8({scopeDir:g,ownerPid:process.pid,log:n,onConvergenceFailure:C=>{pr({severity:"error",key:`dev-service-convergence:${C.name}:${C.error}`,message:C.error})}});t.actions.push(()=>x.stop())}let Fe=HD(HLe(e.runnerId),n,{fsyncOnWrite:!0});t.actions.push(()=>Fe.flush());let qn={initial:g=>Fe.initial(g),onAdvance:(g,x)=>Fe.onAdvance(g,x),flush:()=>Fe.flush()},Vt=vQ(),br=(g,x)=>`${g}:transport-ceiling-recovery:${encodeURIComponent(x)}`,Hr={current:{type:"unadvertised"}},La=new Set,ml=g=>{let x="session:user_input_transport_ceiling_applied";Jh({kandan:Ce,topic:G,event:x,payload:{workspace:Zr(),channel:g.channel,thread_id:g.threadId,request_id:g.requestId},support:Hr.current}).then(C=>{if(C.type==="unsupported"){let A={runner_id:e.runnerId,thread_id:g.threadId,request_id:g.requestId,source_seq:g.sourceSeq},I=JSON.stringify([x,C.evidence,A]);La.has(I)||(La.add(I),n("linzumi.runner_event_compatibility_noop",{event:x,evidence:C.evidence,...A}))}}).catch(C=>{n("runner.user_input_transport_ceiling_applied_push_failed",{channel:g.channel,thread_id:g.threadId,request_id:g.requestId,message:C instanceof Error?C.message:String(C)})})},ou=g=>{if(g.sourceSeq===void 0)return;let x=Cs(Zr(),g.channel,g.threadId),C=g.transportCeilingRecoveryRequestId===void 0?x:br(x,g.transportCeilingRecoveryRequestId),A=g.transportCeilingRecoveryRequestId===void 0?g.sourceSeq:1;qX({store:qn,watermarkKey:C,sourceSeq:A,log:n})&&n("runner.live_worker_source_seq_committed",{kandanThreadId:g.threadId,channel:g.channel,sourceSeq:g.sourceSeq,transportCeilingRecoveryRequestId:g.transportCeilingRecoveryRequestId??null}),g.transportCeilingRecoveryRequestId!==void 0&&ml({channel:g.channel,threadId:g.threadId,requestId:g.transportCeilingRecoveryRequestId,sourceSeq:g.sourceSeq}),hm.delete(yl(g.channel,g.threadId,g.sourceSeq))},mm=g=>{let x=Cs(Zr(),g.channel,g.threadId);Vt.clearSeq(g.transportCeilingRecoveryRequestId===void 0?x:br(x,g.transportCeilingRecoveryRequestId),g.transportCeilingRecoveryRequestId===void 0?g.sourceSeq:1)},Gs=g=>{let x=Cs(Zr(),g.channel,g.threadId);Vt.mark(br(x,g.transportCeilingRecoveryRequestId),1)},ns=g=>{if(g.sourceSeq===void 0)return!1;let x=Cs(Zr(),g.channel,g.threadId),C=g.transportCeilingRecoveryRequestId===void 0?x:br(x,g.transportCeilingRecoveryRequestId),A=g.transportCeilingRecoveryRequestId===void 0?g.sourceSeq:1,I=qn.initial(C);return!dc(I,A)&&g.transportCeilingRecoveryRequestId!==void 0&&ml({channel:g.channel,threadId:g.threadId,requestId:g.transportCeilingRecoveryRequestId,sourceSeq:g.sourceSeq}),wQ(I,Vt,C,A)},Hs=RQ(),Zs=MX(),Zo=new Map,ts=new Map,hl=!0,gl=!1,J_=!1,Qs=()=>hl&&!gl,Zr=()=>Kn(e)??"default",rs=()=>e.channelSession?.channelSlug??Be.list()[0]?.channel,Oo=(g,x)=>{let C=Zr(),A=`${C}:${g}:${x}`,I=Zo.get(A);if(I!==void 0)return I;let F=wD(kD(C,g,x),n);return Zo.set(A,F),F},hm=new Map,yl=(g,x,C)=>`${Zr()}:${g}:${x}:${C}`,iu=(g,x,C)=>{hm.set(yl(g,x,C.seq),C)},Na=g=>{let x=Oo(g.channel,g.threadId);for(let C of g.sourceSeqs){let A=yl(g.channel,g.threadId,C),I=hm.get(A);if(I===void 0){n("runner.live_follow_up_recapture_missing",{kandanThreadId:g.threadId,channel:g.channel,sourceSeq:C});continue}let F=x.enqueue(C,"replay",Tl(I),Date.now());n("runner.live_follow_up_re_enqueued_on_close",{kandanThreadId:g.threadId,channel:g.channel,sourceSeq:C,enqueued:F.accepted}),hm.delete(A)}};o.stopAccepting=()=>{hl=!1},o.flushInboundQueues=()=>{for(let g of Zo.values())g.compact()};let gm=u6e(Q,nn,n,e),_l=BZ({initialToken:e.token,tokenExpiresAt:e.tokenExpiresAt,deps:{renew:async g=>{let x=await HK({kandanUrl:e.kandanUrl,accessToken:g});return x.kind==="renewed"?{kind:"renewed",accessToken:x.token.accessToken,expiresInSeconds:x.token.expiresInSeconds}:{kind:x.kind}},persist:e.tokenExpiresAt===void 0?void 0:({accessToken:g,expiresInSeconds:x})=>{Uo({kandanUrl:e.kandanUrl,accessToken:g,expiresInSeconds:x,authFilePath:e.authFilePath})},log:n}}),Ce=await Jx(e.kandanUrl,()=>_l.currentToken(),e.socketFactory,{controlCursorStore:Q,controlEpochStore:gm,onOperatorNotice:g=>pr({severity:"warning",audience:"operator",message:g})}),N,Re=new Promise(g=>{N=g});Ce.onFatal?.(g=>{let x=g instanceof Wa?new nc(g.refusal,r):g;N?.(x),c(x)}),_l.start(),t.actions.push(()=>_l.stop()),t.actions.push(()=>Ce.close());let Ie=a6e(n,Date.now,NY,{onReconnectNeeded:({staleForMs:g,attempt:x})=>{let C=Ce.forceReconnect?.("connection_stale_forced_reconnect");return n("kandan.connection_force_reconnect_dispatched",{staleForMs:g,attempt:x,initiated:C??!1}),C??!1},onHardResetNeeded:()=>Ce.hardReset?.("connection_stale_hard_reset")??!1,onUnrecoverable:({staleForMs:g})=>{console.error(`Connection to Linzumi was lost and did not recover for ${Math.round(g/6e4)} minutes; exiting so a fresh runner can reconnect. Run \`linzumi connect\` to reconnect.`),process.exit(75)}}),G=`local_runner:${e.runnerId}`,Ne=e.clientId??e.machineId??e.runnerId,vn=eLe(),Qr=Cd(),Wt=YG({log:n}),K_=()=>{Wt.drain(g=>Ce.pushIfConnected(G,"diagnostics:upload",g))},Ot=i3({upload:g=>Ce.pushIfConnected(G,"diagnostics:upload",g),runnerLogFile:e.logFile??Sx(),log:n,spool:Wt});Ot.recordLifecycle({event:"connect",atIso:new Date().toISOString()}),K_(),Ce.onDisconnect?.(g=>{Ot.recordLifecycle({event:"disconnect",atIso:new Date().toISOString(),closeCode:g.closeCode,closeReason:g.closeReason,previousSessionDurationMs:g.previousSessionDurationMs,reconnectCount:g.reconnectCount}),Ot.flushNow()}),Ce.onReconnect(()=>{Ot.recordLifecycle({event:"connect",atIso:new Date().toISOString()}),Ot.flushNow(),K_()}),t.actions.push(async()=>{Ot.stop(),Ot.flushNow()});let Xs=()=>({clientName:"kandan-local-codex-runner",clientId:Ne,machineFingerprint:e.machineFingerprint??null,...j6(e.machineFingerprintV2),runnerPid:process.pid,runnerBootId:Qr,version:jt,hostname:vn,cwd:e.cwd,workspace:Kn(e)??null,channel:e.channelSession?.channelSlug??null,capabilities:q(),...d===void 0?{}:{generation:{epoch:d.epoch,overlap:!0}},commander_impl:"ts"}),ym=[],VL=0,qC=new WeakMap,V_=0,WL={value:void 0};Ce.onControl((g,x)=>{Ie.recordServerAck();let C=WL.value;if(C===void 0){ym.push({control:g,ack:x});return}C(g,x)});let Qo=await Ce.join(G,Xs(),{rejoinPayload:Xs}).catch(g=>{throw g instanceof Wa?new nc(g.refusal,r):g});if(BG(process.env),Hr.current=Bh(Qo),Hr.current.type==="invalid")throw n("runner.supported_runner_events_invalid",{source:"join",runner_id:e.runnerId,reason:Hr.current.reason}),new Error(`invalid supported_runner_events in Kandan join response: ${Hr.current.reason}`);iee.value=g=>eee(Ce,G,g);let W_=YX(M(Qo)?.runner_config),Dr={value:e.threadProcess?.role==="thread"?e.multiAgentJobs===!0:ty(Qo)},_m={value:e.threadProcess?.role==="thread"?eY(e):YD(Qo)},xle=Dr.value,FC={value:void 0},GL={value:g=>{let x=ty(g);Dr.value=x,_m.value=YD(g),FC.value={enabled:x,changed:xle!==x}}},jC=Ce.onBeforeControlReplay;if(jC===void 0)throw new Error("Phoenix client is missing required pre-control-replay authority hook");switch(jC((g,x)=>{switch(g===G){case!0:return GL.value(x);case!1:return}}),jC(async g=>{switch(g===G){case!0:await $Y(e,n,"reconnect");return;case!1:return}}),W_.type){case"missing":break;case"invalid":throw n("runner.config_join_invalid",{runnerId:e.runnerId,kandanUrl:e.kandanUrl,reason:W_.reason}),new Error(`invalid runner_config in Kandan join response: ${W_.reason}`);case"ok":ue(W_.config,{includeStartupAllowedCwds:!1,source:"join"});break}JLe(n),VX(M(Qo)?.runner_config,n);let xm=M(M(Qo)?.compute_node);xm!==void 0&&n("runner.compute_node",{id:y(xm.id),name:y(xm.name),identityQuality:y(xm.identity_quality),resetGeneration:Y(xm.reset_generation)});let HL=(g,x)=>{let C=N6e(g);C!==void 0&&n("kandan.roster_seeded",{source:x,thread_count:C.threads.length,truncated:C.truncated,skipped_entries:C.skippedEntries,threads:C.threads.map(A=>({kandan_thread_id:A.kandanThreadId,provider_session_key:A.providerSessionKey,channel_id:A.channelId,title:A.title,channel_slug:A.channelSlug,cwd:A.cwd,last_activity_at_ms:A.lastActivityAtMs}))})};HL(Qo,"join");let ZL=(g,x)=>{let C=M(g)?.fleet_breaker;if(C===void 0)return;let A=lI(C);if(A===void 0){n("runner.fleet_breaker_seed_invalid",{source:x});return}n("runner.fleet_breaker_state",{source:x,outcome:pI(A),state:A.state,fate:A.fate,version:A.version})};ZL(Qo,"join");let QL=(g,x)=>{let C=M(g)?.route_outages;if(C===void 0)return;let A=mI(C);if(A===void 0){n("runner.route_outage_seed_invalid",{source:x});return}n("runner.route_outage_state",{source:x,outcome:hI(A),routes:A.routes.length,version:A.version})};QL(Qo,"join");let XL=(g,x)=>{let C=M(g)?.stream_idle_timeout_default;if(C===void 0)return!1;let A=u.applyServerDefault(C);return n("runner.stream_idle_timeout_default",{source:x,outcome:A.outcome,changed:A.changed,effectiveMs:u.effectiveMs(),effectiveSource:u.effectiveSource()}),A.changed};XL(Qo,"join"),Ce.onReconnect(g=>{let x=sv(Hr.current,g.get(G));switch(x.type){case"accepted":Hr.current=x.support;break;case"rejected_invalid":n("runner.supported_runner_events_invalid",{source:"rejoin",runner_id:e.runnerId,reason:x.reason});break}HL(g.get(G),"rejoin"),ZL(g.get(G),"rejoin"),QL(g.get(G),"rejoin"),XL(g.get(G),"rejoin");let C=YX(g.get(G)?.runner_config);switch(VX(g.get(G)?.runner_config,n),C.type){case"missing":return;case"invalid":n("runner.config_rejoin_invalid",{runnerId:e.runnerId,kandanUrl:e.kandanUrl,reason:C.reason});return;case"ok":ue(C.config,{includeStartupAllowedCwds:!1,source:"rejoin"});return}});let ble=L6e(M(Qo)?.replaced_runners),G_=await(async()=>{if(s!==void 0||e.codexUrl!==void 0||!l)return{type:"not_requested"};try{return{type:"started",started:await lee(e)}}catch(g){return p?n("runner.shared_codex_startup_failed_worker_launcher_retained",{runnerId:e.runnerId,reason:g instanceof Error?g.message:String(g)}):h(g,"codex"),{type:"failed",error:g}}})();if(G_.type==="failed"&&!p&&D.value!=="logged_in")throw G_.error;let ao=G_.type==="started"?G_.started:void 0;ao!==void 0&&t.actions.push(()=>{ao.stop()});let os=e.codexUrl??ao?.url;if(ao!==void 0){let g=h1(ao.url);g!==void 0&&V(g,{processName:"Codex app-server",processIconKey:"codex",agentProvider:"codex"})}let Xe=`codex-${Cd()}`,vle=g=>{Ce.push(G,"local_editor_status",g).catch(x=>{n("kandan.local_editor_status_push_failed",{message:x instanceof Error?x.message:String(x)})})},su=(g,x)=>{Ce.push(G,g,x).catch(C=>{n(`kandan.${g}_push_failed`,{message:C instanceof Error?C.message:String(C)})})},wle=xY(e)?ize({log:n,instanceId:Xe,markCommanderManagedForwardPort:V,clearCommanderManagedForwardPort:U,managedForwardPorts:ie,capabilitiesPayload:q,pushForwardPortEvent:su}):void 0;t.actions.push(()=>wle?.close());let LC=(g,x)=>{let C=Se.approvedTargets.get(g);Se.approvedPorts.delete(g),Se.approvedTargets.delete(g),ge.delete(g),$(g),su("forward_port_revoked",{instanceId:Xe,port:g,...C===void 0?{}:{pid:C.pid,command:C.command,...C.cwd===void 0?{}:{cwd:C.cwd}},reason:x,capabilities:nd(q(),g)})},YL=g=>{Se.watcher?.close(),Se.watcher=void 0,Se.pendingRequests.clear(),Se.queuedCandidates.clear();let x=Array.from(Se.approvedPorts);for(let C of x)LC(C,g);return Se.dismissedTargets.clear(),x},H_=()=>{if(Se.pendingRequests.size>0||Se.queuedCandidates.size===0)return;let g=Array.from(Se.queuedCandidates.values()).sort((x,C)=>x.port-C.port)[0];g!==void 0&&(Se.queuedCandidates.delete(g.port),e6(g),Se.pendingRequests.size===0&&H_())},NC=g=>{let x=np({requestId:`editor-port-forward-auto-${Cd()}`,sourceSeq:0,candidate:g});Se.approvedPorts.add(x.port),Se.approvedTargets.set(x.port,Or(x)),ge.add(x.port);let C=qi(x.command);an(x.port,{localEditor:!0,processName:C?.appName??null,processIconKey:C?.iconKey??null,linzumiCliManaged:x.portKind==="commander_bound"}),su("forward_port_resolved",{instanceId:Xe,requestId:x.requestId,source:"local_editor",port:x.port,pid:x.pid,command:x.command,...x.cwd===void 0?{}:{cwd:x.cwd},decision:"approve",capabilities:q()})},e6=g=>{let x=Ah({candidate:g,threadBound:!0,suppressedPorts:new Set(Oe()),approvedPorts:Se.approvedPorts,approvedTargets:Se.approvedTargets,dismissedTargets:Se.dismissedTargets,pendingRequests:Array.from(Se.pendingRequests.values())});switch(x.type){case"skip":return;case"remember_approved_target":Se.approvedTargets.set(x.target.port,x.target);return;case"revoke_and_prompt":LC(x.revoked.port,x.reason),NC(g);return;case"replace_pending":Se.pendingRequests.delete(x.expired.port),su("forward_port_resolved",{instanceId:Xe,requestId:x.expired.requestId,source:"local_editor",port:x.expired.port,pid:x.expired.pid,command:x.expired.command,...x.expired.cwd===void 0?{}:{cwd:x.expired.cwd},decision:"expired",reason:x.reason,capabilities:q()}),NC(x.candidate);return;case"prompt":NC(g);return}},Sle=g=>{let x=Se.queuedCandidates.get(g.port);if(x!==void 0&&mo(x,g)){Se.queuedCandidates.delete(g.port);return}let C=Se.pendingRequests.get(g.port);if(C!==void 0&&mo(Or(C),g)){Se.pendingRequests.delete(g.port),su("forward_port_revoked",{instanceId:Xe,port:g.port,pid:g.pid,command:g.command,...g.cwd===void 0?{}:{cwd:g.cwd},reason:"listener_exited",capabilities:nd(q(),g.port)}),H_();return}Se.approvedPorts.has(g.port)&&LC(g.port,"listener_exited")},kle=g=>{let x=Array.from(Se.pendingRequests.values()).find(A=>A.requestId===g.requestId);if(x===void 0)return;if(Se.pendingRequests.delete(x.port),g.decision==="deny")return Se.dismissedTargets.set(x.port,Or(x)),su("forward_port_resolved",{instanceId:Xe,requestId:x.requestId,source:"local_editor",port:x.port,pid:x.pid,command:x.command,...x.cwd===void 0?{}:{cwd:x.cwd},decision:"deny",capabilities:q()}),H_(),{instanceId:Xe,ok:!0};Se.approvedPorts.add(x.port),Se.approvedTargets.set(x.port,Or(x)),ge.add(x.port);let C=qi(x.command);return an(x.port,{localEditor:!0,processName:C?.appName??null,processIconKey:C?.iconKey??null,linzumiCliManaged:x.portKind==="commander_bound"}),su("forward_port_resolved",{instanceId:Xe,requestId:x.requestId,source:"local_editor",port:x.port,pid:x.pid,command:x.command,...x.cwd===void 0?{}:{cwd:x.cwd},decision:"approve",capabilities:q()}),H_(),{instanceId:Xe,ok:!0,port:x.port}},Cle=g=>{if(g.process.pid===void 0){n("port_forward.local_editor_watch_skipped",{reason:"editor_pid_missing"});return}Se.watcher?.close(),Se.watcher=ep({rootPid:g.process.pid,onCandidate:e6,onCandidateLost:Sle,onError:x=>{n("port_forward.local_editor_watch_failed",{message:x.message})}})},zC=g=>{if(g.pendingRequests.size>0||g.queuedCandidates.size===0)return;let x=Array.from(g.queuedCandidates.values()).sort((C,A)=>C.port-A.port)[0];x!==void 0&&(g.queuedCandidates.delete(x.port),n6(g,x).catch(C=>{n("port_forward.claude_code_prompt_failed",{message:C instanceof Error?C.message:String(C)})}))},Z_=async(g,x,C,A="wait_for_connection")=>{let I=g.approvedTargets.get(x);g.approvedPorts.delete(x),g.approvedTargets.delete(x),ge.delete(x),$(x),await(A==="connected_only"?Ce.pushIfConnected:Ce.push)(G,"forward_port_revoked",{instanceId:Xe,port:x,...I===void 0?{}:{pid:I.pid,command:I.command,...I.cwd===void 0?{}:{cwd:I.cwd}},reason:C,agentProvider:"claude-code",capabilities:nd(q(),x)})},UC=async(g,x)=>{let C=g.currentSourceSeq()??g.rootSeq;if(C===void 0){n("port_forward.claude_code_auto_approval_skipped",{reason:"source_seq_missing",port:x.port,pid:x.pid});return}let A=np({requestId:`claude-port-forward-auto-${Cd()}`,sourceSeq:C,candidate:x});g.approvedPorts.add(A.port),g.approvedTargets.set(A.port,Or(A)),ge.add(A.port);let I=qi(A.command);an(A.port,{kandanThreadId:g.threadId,codexThreadId:g.sessionId,channelSlug:g.channel,processName:I?.appName??null,processIconKey:I?.iconKey??null,agentProvider:"claude-code",linzumiCliManaged:A.portKind==="commander_bound"});try{let F=await Ce.push(G,"forward_port_resolved",{instanceId:Xe,requestId:A.requestId,port:A.port,pid:A.pid,command:A.command,...A.cwd===void 0?{}:{cwd:A.cwd},sourceSeq:A.sourceSeq,decision:"approve",agentProvider:"claude-code",codexThreadId:g.sessionId,kandanThreadId:g.threadId,workspaceSlug:g.workspace,channelSlug:g.channel,...I?.appName===void 0?{}:{processName:I.appName},...I?.iconKey===void 0?{}:{processIconKey:I.iconKey},capabilities:q()});if(!(X(F)&&F.status==="ok"))throw new Error(`forward_port_resolved refused: ${JSON.stringify(F)}`)}catch(F){n("port_forward.registration_failed",{request_id:A.requestId,port:A.port,pid:A.pid,agent_provider:"claude-code",kandan_thread_id:g.threadId,workspace_slug:g.workspace,message:F instanceof Error?F.message:String(F)})}},n6=async(g,x)=>{let C=Ah({candidate:x,threadBound:!0,suppressedPorts:new Set(Oe()),approvedPorts:g.approvedPorts,approvedTargets:g.approvedTargets,dismissedTargets:g.dismissedTargets,pendingRequests:Array.from(g.pendingRequests.values())});switch(C.type){case"skip":return;case"remember_approved_target":g.approvedTargets.set(C.target.port,C.target);return;case"revoke_and_prompt":await Z_(g,C.revoked.port,C.reason),await UC(g,x);return;case"replace_pending":g.pendingRequests.delete(C.expired.requestId),await Ce.push(G,"forward_port_resolved",{instanceId:Xe,requestId:C.expired.requestId,port:C.expired.port,pid:C.expired.pid,command:C.expired.command,...C.expired.cwd===void 0?{}:{cwd:C.expired.cwd},sourceSeq:C.expired.sourceSeq,decision:"expired",reason:C.reason,agentProvider:"claude-code",capabilities:q()}),await Bo(Ce,G,{workspace:g.workspace,channel:g.channel,threadId:g.threadId,sourceSeq:C.expired.sourceSeq,status:"failed",reason:"port_forward_listener_changed",sessionId:g.sessionId}),await UC(g,C.candidate);return;case"prompt":await UC(g,x);return}},Tle=(g,x)=>{let C=g.queuedCandidates.get(x.port);if(C!==void 0&&mo(C,x)){g.queuedCandidates.delete(x.port),g.approvedPorts.has(x.port)&&Z_(g,x.port,"listener_exited").catch(I=>{n("port_forward.claude_code_revoke_failed",{message:I instanceof Error?I.message:String(I)})});return}let A=Array.from(g.pendingRequests.values()).find(I=>mo(Or(I),x));if(A!==void 0){g.pendingRequests.delete(A.requestId),Ce.push(G,"forward_port_resolved",{instanceId:Xe,requestId:A.requestId,port:A.port,pid:A.pid,command:A.command,...A.cwd===void 0?{}:{cwd:A.cwd},sourceSeq:A.sourceSeq,decision:"expired",reason:"listener_exited",agentProvider:"claude-code",capabilities:q()}).then(()=>Bo(Ce,G,{workspace:g.workspace,channel:g.channel,threadId:g.threadId,sourceSeq:A.sourceSeq,status:"failed",reason:"port_forward_listener_exited",sessionId:g.sessionId})).then(()=>zC(g)).catch(I=>{n("port_forward.claude_code_expire_failed",{message:I instanceof Error?I.message:String(I)})});return}g.approvedPorts.has(x.port)&&Z_(g,x.port,"listener_exited").catch(I=>{n("port_forward.claude_code_revoke_failed",{message:I instanceof Error?I.message:String(I)})})},Ple=g=>{for(let x of wl.values()){let C=x.pendingRequests.get(g.requestId);if(C===void 0)continue;if(x.pendingRequests.delete(g.requestId),g.decision==="deny")return x.dismissedTargets.set(C.port,Or(C)),Promise.all([Ce.push(G,"forward_port_resolved",{instanceId:Xe,requestId:C.requestId,port:C.port,pid:C.pid,command:C.command,...C.cwd===void 0?{}:{cwd:C.cwd},sourceSeq:C.sourceSeq,decision:"deny",agentProvider:"claude-code",capabilities:q()}),Bo(Ce,G,{workspace:x.workspace,channel:x.channel,threadId:x.threadId,sourceSeq:C.sourceSeq,status:"failed",reason:"port_forward_denied",sessionId:x.sessionId})]).then(()=>zC(x)).catch(I=>{n("port_forward.claude_code_deny_failed",{message:I instanceof Error?I.message:String(I)})}),{instanceId:Xe,ok:!0,agentProvider:"claude-code"};x.approvedPorts.add(C.port),x.approvedTargets.set(C.port,Or(C)),ge.add(C.port);let A=qi(C.command);return an(C.port,{kandanThreadId:x.threadId,codexThreadId:x.sessionId,channelSlug:x.channel,processName:A?.appName??null,processIconKey:A?.iconKey??null,agentProvider:"claude-code",linzumiCliManaged:C.portKind==="commander_bound"}),Promise.all([Ce.push(G,"forward_port_resolved",{instanceId:Xe,requestId:C.requestId,port:C.port,pid:C.pid,command:C.command,...C.cwd===void 0?{}:{cwd:C.cwd},sourceSeq:C.sourceSeq,decision:"approve",agentProvider:"claude-code",capabilities:q()}),Bo(Ce,G,{workspace:x.workspace,channel:x.channel,threadId:x.threadId,sourceSeq:C.sourceSeq,status:"processed",reason:"Claude Code preview port approved",sessionId:x.sessionId})]).then(()=>zC(x)).catch(I=>{n("port_forward.claude_code_approve_failed",{message:I instanceof Error?I.message:String(I)})}),{instanceId:Xe,ok:!0,agentProvider:"claude-code",port:C.port}}},BC=g=>{if(wl.has(g.sessionId))return;let x=e.portForwardWatcher??(F=>ep({rootPid:process.pid,commanderBoundPids:[process.pid],commanderBoundPorts:Array.from(ie),watchPorts:Je,extraWatchServices:jb(Ru(e.runnerId)),onUndeclaredServicePorts:me=>{n("dev_services.undeclared_ports_detected",{service:me.service,undeclared_ports:[...me.undeclaredPorts],declared_ports:[...me.declaredPorts]})},...F})),C={value:void 0},A;try{A=x({onCandidate:F=>C.value===void 0?void 0:n6(C.value,F),onCandidateLost:F=>C.value===void 0?void 0:Tle(C.value,F),onListenersObserved:F=>Rb(`claude-session:${g.sessionId}`,F.filter(me=>me.portKind!=="commander_bound")),onError:F=>{n("port_forward.claude_code_watch_failed",{message:F.message,claude_session_id:g.sessionId})}})}catch(F){n("port_forward.claude_code_watch_skipped",{reason:"watch_start_failed",message:F instanceof Error?F.message:String(F),claude_session_id:g.sessionId});return}n("port_forward.claude_code_watch_started",{claude_session_id:g.sessionId,root_pid:e.portForwardWatcher===void 0?process.pid:null,injected:e.portForwardWatcher!==void 0});let I={...g,watcher:A,approvedPorts:new Set,approvedTargets:new Map,dismissedTargets:new Map,pendingRequests:new Map,queuedCandidates:new Map};C.value=I,wl.set(g.sessionId,I)},Q_=async(g,x="wait_for_connection")=>{let C=wl.get(g);if(C===void 0)return;let A=Array.from(C.pendingRequests.values()),I=Array.from(C.approvedPorts);C.watcher.close(),C.pendingRequests.clear(),C.queuedCandidates.clear(),C.dismissedTargets.clear(),wl.delete(g),await Promise.all([...A.map(async F=>{try{let me=x==="connected_only"?Ce.pushIfConnected:Ce.push;await Promise.all([me(G,"forward_port_resolved",{instanceId:Xe,requestId:F.requestId,port:F.port,pid:F.pid,command:F.command,...F.cwd===void 0?{}:{cwd:F.cwd},sourceSeq:F.sourceSeq,decision:"expired",reason:"session_ended",agentProvider:"claude-code",capabilities:q()}),Bo(Ce,G,{workspace:C.workspace,channel:C.channel,threadId:C.threadId,sourceSeq:F.sourceSeq,status:"failed",reason:"port_forward_session_ended",sessionId:C.sessionId,publishMode:x})])}catch(me){n("port_forward.claude_code_dispose_prompt_failed",{message:me instanceof Error?me.message:String(me)})}}),...I.map(async F=>{try{await Z_(C,F,"session_ended",x)}catch(me){n("port_forward.claude_code_dispose_revoke_failed",{message:me instanceof Error?me.message:String(me)})}})])},Ile=(g,x,C)=>{let A=()=>{if(Qe.value!==x||Ue.value.status!=="running"||Ue.value.process!==g.process)return;Ue.value={status:"disabled"};let F=YL("editor_exited");ge.delete(g.port),ie.delete(g.port),g.collaboration!==void 0&&(ge.delete(g.collaboration.serverPort),ie.delete(g.collaboration.serverPort)),vle({instanceId:Xe,ok:!0,cwd:g.cwd,capabilities:{...q(),revokedPorts:g.collaboration===void 0?[g.port,...F]:[g.port,g.collaboration.serverPort,...F]}})},I=()=>{C.then(A).catch(F=>{n("kandan.local_editor_initial_status_failed",{message:F instanceof Error?F.message:String(F)})})};g.exited.then(I)},t6={reason:void 0},xt=s?.codex??(os===void 0?void 0:await Cp(os).catch(g=>{p?n("runner.shared_codex_connect_failed_worker_launcher_retained",{runnerId:e.runnerId,reason:g instanceof Error?g.message:String(g)}):t6.reason=h(g,"codex")}));if(xt!==void 0&&t.actions.push(()=>xt.close()),e.channelSession!==void 0&&xt===void 0)throw new Error("channel session requires a Codex app-server connection");let r6=C6e({codexUrl:e.codexUrl,threadProcessRole:e.threadProcess?.role,ownsStartedAppServer:ao!==void 0}),JC={value:0},bm={value:[]};if(xt!==void 0&&e.channelSession===void 0&&e.threadProcess?.role!=="thread"&&Dr.value){let g=await ZX(xt);switch(!!Dr.value){case!0:bm.value=g;break;case!1:break}}let Ys={value:xt!==void 0&&e.channelSession===void 0&&e.threadProcess?.role!=="thread"&&Dr.value?{type:"complete"}:{type:"pending"}},xl=pf(e),Rle={instanceId:Xe,clientId:Ne,...os===void 0?{}:{codexUrl:os},tuiLaunched:e.launchTui,cwd:e.cwd,hostname:vn,codexThreads:bm.value,workspace:Kn(e)??null,channel:e.channelSession?.channelSlug??null,model:xl.model??null,reasoningEffort:xl.reasoningEffort??null,allowPortForwardingByDefault:xl.allowPortForwardingByDefault??null,fast:e.fast??!1};await Ce.push(G,"instance_started",Rle),n("runner.instance_started",{runnerId:e.runnerId,hostname:vn,workspace:Kn(e)??null,version:jt,instanceId:Xe,codexUrl:os??null,replacedRunners:ble});let o6=Kn(e),i6={...o6===void 0?{}:{workspace:o6},launch_source:e.launchSource??"cli"};Yp({name:"commander.connected",attributes:i6},{apiUrl:e.kandanUrl}),t.actions.push(()=>Yp({name:"commander.exited",attributes:i6},{apiUrl:e.kandanUrl}));let lr=e.channelSession===void 0||xt===void 0?void 0:await Kh({kandan:Ce,codex:xt,topic:G,instanceId:Xe,leaseEpochFor:g=>Zs.current(g),reapOwnedHarnessAfterStop:ao===void 0?void 0:async()=>{await ao.stopAndWait()},escalateEngineHalt:ao===void 0?void 0:async g=>{h(`Codex engine halt could not be confirmed: ${g}`,"codex"),await ao.stopAndWait()},options:{kandanUrl:e.kandanUrl,token:e.token,runnerId:e.runnerId,cwd:e.cwd,codexBin:e.codexBin,runnerEventSupport:()=>Hr.current,fetch:e.fetch,fast:e.fast,launchTui:e.launchTui,multiAgentJobs:e.threadProcess?.role==="thread"?Dr.value:!0,multiAgentJobsEligible:e.multiAgentJobsEligible===!0,multiAgentJobsEnabled:()=>Dr.value,codingJobMcpToken:e.codingJobMcpToken,pipelinePersistDir:oy(),enablePortForwardWatch:!0,initialForwardPorts:Je,portForwardWatcher:_Y({rootPid:ao?.process.pid,start:e.portForwardWatcher}),suppressedForwardPorts:Oe,onForwardPortApproved:(g,x)=>(ge.add(g),an(g,{...x,agentProvider:"codex"}),q()),onForwardPortRevoked:g=>(ge.delete(g),$(g),q()),onUnroutedThreadMessage:g=>g6(g),onLiveSourceSeqAccepted:ou,onLiveSourceSeqQueued:Gs,onLiveSourceSeqSettled:mm,channelSession:e.channelSession},log:n});lr!==void 0&&(t.actions.push(()=>lr.close()),Ce.onReconnect(()=>lr.handleKandanReconnect()));let nr=new Map,bl=D6e(n,Dr.value),X_=()=>[lr,...nr.values()].filter(g=>g!==void 0);t.actions.push(bl.close);let au=new Map,du=new Map,Ele=(g,x)=>{let C=du.get(g);if(C!==void 0){du.delete(g);for(let A of C)A.resolve(x)}},Y_=(g,x)=>{let C=du.get(g);if(C!==void 0){du.delete(g);for(let A of C)A.reject(x)}},ea=ZJ(),Ale=new Set(["kandan.reconnect_thread_resume_failed","kandan.reconnect_thread_rehydrate_forced","kandan.reconnect_thread_rehydration_ir_emitted","kandan.reconnect_thread_rehydration_failed","kandan.reconnect_thread_rehydrated","kandan.reconnect_thread_unarchive_started","kandan.reconnect_thread_unarchive_resumed","kandan.reconnect_thread_unarchive_failed"]),Mle=(g,x)=>{if(!Ale.has(g))return;let C=x.codex_thread_id;typeof C=="string"&&C!==""&&ea.note(C,g)},Dle=g=>()=>QJ(RE(),g),KC=Object.assign((g,x)=>{Mle(g,x),n(g,x)},{close:()=>n.close()}),VC=g=>XJ({method:"thread/attach",codexThreadId:g.codexThreadId,kandanThreadId:g.kandanThreadId,wait:g.wait,tracker:ea,log:n,rolloutBytes:Dle(g.codexThreadId),noProgressTimeoutMs:av()}),na=new Map,uu=new Map,s6=[],WC=g=>{let x=uu.get(g);if(x!==void 0)return x;let C=A6e({sessions:()=>[...g===xt&&lr!==void 0?[lr]:[],...Array.from(nr.entries()).filter(([A])=>na.get(A)===g).map(([,A])=>A)],log:n,onActiveThreadsFailed:r6?A=>{for(let I of A)s6.push(Ce.push(G,"session:app_server_lost",{codex_thread_id:I}).then(()=>{},F=>{n("kandan.session_app_server_lost_push_failed",{codex_thread_id:I,message:F instanceof Error?F.message:String(F)})}))}:void 0});return uu.set(g,C),C},vr=new Map,GC=gNe(),HC=new Map,a6={record:(g,x)=>{let C=HC.get(g),A={approvalPolicy:x.approvalPolicy??C?.approvalPolicy,sandbox:x.sandbox??C?.sandbox};if(A.approvalPolicy===void 0&&A.sandbox===void 0)return;let I=x.approvalPolicy===void 0?void 0:pY(x.approvalPolicy),F=C?.approvalPolicy===void 0?void 0:pY(C.approvalPolicy);I!==void 0&&F!==void 0&&I<F&&(j3(g),n("claude_code.thread_permission_grants_cleared_on_downgrade",{linzumi_thread_id:g,prior_approval_policy:C?.approvalPolicy??null,new_approval_policy:x.approvalPolicy??null})),HC.set(g,A)},resolve:g=>HC.get(g)},vm=new Map,vl=new Map,wl=new Map;Ce.onReconnect(()=>Q6e(nr.values())),Ce.onDisconnect?.(()=>{for(let g of vr.values())g.pauseOutbox()}),Ce.onReconnect(()=>{for(let[g,x]of vr)n("claude_code.outbox_resumed_on_reconnect",{claude_session_id:g,linzumi_thread_id:x.threadId}),x.resumeOutbox()}),o.interruptInFlightTurns=async()=>{let g=[...vr.entries()].flatMap(([C,A])=>{let I=A.currentSourceSeq();return I===void 0?[]:[{sessionId:C,session:A,sourceSeq:I}]});if(g.length===0)return;let x=new Promise(C=>{setTimeout(C,K6e).unref?.()});await Promise.race([Promise.all(g.map(async({sessionId:C,session:A,sourceSeq:I})=>{n("runner.drain_turn_interrupted_state",{claude_session_id:C,linzumi_thread_id:A.threadId,source_seq:I});try{await Bo(Ce,G,{workspace:A.workspace,channel:A.channel,threadId:A.threadId,sourceSeq:I,status:"interrupted",reason:J6e,sessionId:C})}catch(F){n("runner.drain_turn_interrupted_state_push_failed",{linzumi_thread_id:A.threadId,source_seq:I,message:F instanceof Error?F.message:String(F)})}})).then(()=>{}),x])};let d6=async()=>{let g=JJ(Be.list(),Date.now());if(g.length!==0)try{await Ce.push(G,"session:reannounce_threads",{threads:g.map(x=>({...x}))}),n("kandan.thread_sessions_reannounced",{count:g.length})}catch(x){n("kandan.thread_sessions_reannounce_failed",{count:g.length,message:x instanceof Error?x.message:String(x)})}};Ce.onReconnect(()=>d6()),d6(),t.actions.push(async()=>{await Promise.all(Array.from(nr.values(),x=>x.close())),nr.clear(),na.clear(),du.clear();let g=[...vr.values()];for(let x of g)try{x.closeInput()}catch(C){n("claude_code.session_input_close_failed",{linzumi_thread_id:x.threadId,message:C instanceof Error?C.message:String(C)})}await Promise.race([Promise.allSettled(g.flatMap(x=>{let C=x.sessionWork();return C===void 0?[]:[C]})),new Promise(x=>{setTimeout(x,1e4).unref?.()})]);for(let x of g)x.abortController.abort(new Error("local runner stopped"));vr.clear();for(let x of vm.values())x.resolve({type:"deny",message:"Claude Code approval cancelled because the runner stopped"});vm.clear();for(let x of vl.values())x.resolve({type:"deny",message:"Claude Code question cancelled because the runner stopped"});vl.clear(),await Promise.all(Array.from(wl.keys(),x=>Q_(x,"connected_only")))});let _n=new Map,wm=new Set,ex=new Set;t.actions.push(async()=>{await Promise.all(Array.from(_n.values(),lc)),_n.clear()});let Ole=()=>{for(let[g,x]of Array.from(_n.entries()))ry(x)==="dead"&&_n.get(g)===x&&(_n.delete(g),n("runner.thread_process_stale_entry_reaped",{kandanThreadId:g,pid:x.kind==="running"?x.handle.processPid??null:null,prior_kind:x.kind}),lc(x).catch(()=>{}))};if(Sd(e)){let g=e.threadRunnerReaperIntervalMs??xLe,x=setInterval(Ole,g);x.unref?.(),t.actions.push(()=>clearInterval(x))}let u6=g=>{for(let x of nr.values())if(x!==void 0&&x.currentKandanThreadId()===g)return x},c6=async(g,x)=>{let C=Be.list().find(F=>F.kandanThreadId===g),A=C?.codexThreadId??u6(g)?.currentCodexThreadId();n("runner.spin_down_to_dormant",{kandanThreadId:g,codex_thread_id:A??null,source:x}),Ce.push(G,"session:worker_dormant",{codex_thread_id:A??null,kandan_thread_id:g,workspace:C?.workspace??null,channel:C?.channel??null,source:x}).catch(F=>{n("runner.spin_down_report_failed",{kandanThreadId:g,source:x,message:F instanceof Error?F.message:String(F)})});let I=_n.get(g);I!==void 0&&(_n.delete(g),await lc(I))},$le=process.env.LINZUMI_IDLE_SPIN_DOWN==="0"||process.env.LINZUMI_IDLE_SPIN_DOWN==="off";if(Sd(e)&&!$le){let g=yLe({now:()=>Date.now(),listActiveThreadIds:()=>[..._n.entries()].filter(([,x])=>x.kind==="running").map(([x])=>x),sessionIdleSignalsFor:x=>u6(x)?.idleSignalSnapshotSelf(),hasClaudeKeepAlive:x=>[...vr.values()].some(C=>C.threadId===x),resolveWindowMs:()=>lLe(void 0),threadRunnerEntryLiveness:x=>ry(x),intervalMs:e.idleSpinDownIntervalMs??bLe,onSpinDownToDormant:x=>c6(x,"idle")});t.actions.push(()=>g.stop())}let ZC=new Map,qle=bZ(),QC=async(g,x)=>{let C=nr.get(g),A=na.get(g);if(C===void 0||x!==void 0&&A!==x||A?.isClosed?.()!==!0)return!1;nr.delete(g),na.delete(g),au.delete(g),n("runner.thread_session_evicted_dead_worker",{codex_thread_id:g,kandan_thread_id:C.currentKandanThreadId()??null});try{await C.close()}catch(I){n("runner.thread_session_evict_close_failed",{codex_thread_id:g,message:I instanceof Error?I.message:String(I)})}return!0},XC=async(g,x={})=>{let C=nr.get(g);if(C!==void 0)return C;let A=au.get(g);if(A!==void 0){let F=await A;if(F!==void 0)return F}let I=nr.get(g);return I!==void 0||x.waitForSiblingSpawn!==!0?I:await new Promise((F,me)=>{let ke=du.get(g)??[];ke.push({resolve:F,reject:me}),du.set(g,ke)})},l6=async g=>{let{control:x,cwd:C,codexThreadId:A,sessionCodex:I}=g,F=g.portForwardWatcherRootPid,me=bn(x,"workspace"),ke=bn(x,"channel"),Ke=bn(x,"threadId");if(me===void 0||ke===void 0||Ke===void 0)return;let ze=nr.get(A);if(ze!==void 0){let Yn=ze.currentKandanThreadId();if(Yn!==void 0&&Yn!==Ke)throw new Lu({codexThreadId:A,ownerKandanThreadId:Yn,requestingKandanThreadId:Ke});if(!await QC(A))return qJ({codexThreadId:A,kandanThreadId:Ke,cachedCwd:ze.currentCwd(),requestedCwd:C}),ze}let ot=Be.list().find(Yn=>Yn.codexThreadId===A&&Yn.kandanThreadId!==Ke);if(ot!==void 0)throw new Lu({codexThreadId:A,ownerKandanThreadId:ot.kandanThreadId,requestingKandanThreadId:Ke});let jn=au.get(A);if(jn!==void 0)return await jn;let $o=(async()=>{ea.note(A,"attach_started");let Yn=e.channelSession?.listenUser??ei(e.token).actorUsername;if(Yn===void 0)throw new Error("missing listen user for Commander-started Codex session");let Bn=gc(e,x),uo=Sd(e)?async Ee=>{let pn=_n.get(Ee.kandanThreadId);if(pn===void 0)return n("runner.reconnect_adopt_orphan_worker_reclaim_no_entry",{kandanThreadId:Ee.kandanThreadId,codex_thread_id:Ee.codexThreadId,fence_reason:Ee.reason}),()=>{};n("runner.reconnect_adopt_orphan_worker_reclaim",{kandanThreadId:Ee.kandanThreadId,codex_thread_id:Ee.codexThreadId,fence_reason:Ee.reason,pid:pn.kind==="running"?pn.handle.processPid??null:null}),wm.add(Ee.kandanThreadId);let yn=!1,Yo=!1,In=!1,ra=()=>{In||!yn||!Yo||(In=!0,wm.delete(Ee.kandanThreadId),n("runner.reconnect_adopt_orphan_worker_fence_released",{kandanThreadId:Ee.kandanThreadId,codex_thread_id:Ee.codexThreadId}))},Tm=()=>{Yo=!0,ra()};try{if(_n.get(Ee.kandanThreadId)===pn&&_n.delete(Ee.kandanThreadId),await lc(pn)==="abandoned"){let Sl=pn.kind==="running"?pn.handle.onExit:void 0;return Sl!==void 0&&Sl(()=>{yn=!0,ra()}),n("runner.reconnect_adopt_orphan_worker_reclaim_unconfirmed",{kandanThreadId:Ee.kandanThreadId,codex_thread_id:Ee.codexThreadId,fence_release_on_exit_wired:Sl!==void 0}),Tm}return yn=!0,Tm}catch(is){throw wm.delete(Ee.kandanThreadId),In=!0,is}}:void 0,Gt=Sd(e)?async Ee=>qle.run(Ee.kandanThreadId,async()=>{await QC(Ee.codexThreadId);let pn=!1,yn=ZC.get(Ee.kandanThreadId)??(x.modelProvider!==void 0||x.llmProxy!==void 0||x.linzumiAgent!==void 0?{...x.modelProvider===void 0?{}:{modelProvider:x.modelProvider},...x.llmProxy===void 0?{}:{llmProxy:x.llmProxy},...x.linzumiAgent===void 0?{}:{linzumiAgent:x.linzumiAgent}}:void 0),Yo=Y(x.rootSeq);for(let In of Ee.pendingMessages){let ra={type:"reconnect_thread",workspace:me,channel:ke,threadId:Ee.kandanThreadId,codexThreadId:Ee.codexThreadId,cwd:C,...x.linzumiContext===void 0?{}:{linzumiContext:x.linzumiContext},...x.type==="reconnect_thread"&&x.sessionRehydrate===!0?{sessionRehydrate:!0}:{},...Yo===void 0?{}:{rootSeq:Yo},...yn?.modelProvider===void 0?{}:{modelProvider:yn.modelProvider},...yn?.llmProxy===void 0?{}:{llmProxy:yn.llmProxy},...yn?.linzumiAgent===void 0?{}:{linzumiAgent:yn.linzumiAgent},sourceSeq:In.seq,workDescription:In.body,...In.adtStream===void 0?{}:{adtStream:In.adtStream},...In.attachments.length===0?{}:{attachments:In.attachments},...Bn.model===void 0?{}:{model:Bn.model},...Bn.modelTransportCatalogStatus===void 0?{}:{modelTransportCatalogStatus:Bn.modelTransportCatalogStatus},...Bn.reasoningEffort===void 0?{}:{reasoningEffort:Bn.reasoningEffort},...Bn.sandbox===void 0?{}:{sandbox:Bn.sandbox},...Bn.approvalPolicy===void 0?{}:{approvalPolicy:Bn.approvalPolicy},...Bn.fast===void 0?{}:{fast:Bn.fast},multiAgentJobsEligible:x.multiAgentJobsEligible===!0},Tm=async is=>{let Sl=await VC({codexThreadId:Ee.codexThreadId,kandanThreadId:Ee.kandanThreadId,wait:XC(Ee.codexThreadId,{waitForSiblingSpawn:is.waitForSiblingSpawn})});if(Sl===void 0)throw new Error(`dead-worker rebuild could not resolve a live session for codex thread ${Ee.codexThreadId}`);await Sl.startThreadMessageTurn({seq:In.seq,body:In.body,actorSlug:In.actorSlug,actorUserId:In.actorUserId,attachments:In.attachments,boundStartTimeout:!0,adtStream:In.adtStream})};try{if(pn)await Tm({waitForSiblingSpawn:!1});else{let is=await nT(ra,C);ZD(is)&&(n("runner.thread_dead_worker_rebuild_replay_on_sibling",{codex_thread_id:Ee.codexThreadId,kandan_thread_id:Ee.kandanThreadId,seq:In.seq}),await Tm({waitForSiblingSpawn:!0}))}pn=!0}catch(is){return n("runner.thread_dead_worker_rebuild_failed",{codex_thread_id:Ee.codexThreadId,kandan_thread_id:Ee.kandanThreadId,seq:In.seq,message:is instanceof Error?is.message:String(is)}),!1}}return pn}):void 0,et=bh()&&R().includes("claude-code")?{targetHarness:"claude_code",execute:async Ee=>{let pn;try{pn=await import(new URL("./crossHarnessFailover.mjs",import.meta.url).href)}catch(In){return{ok:!1,failure:`failover transpiler bridge unavailable: ${In instanceof Error?In.message:String(In)}`}}let yn=await pn.transpileAndSeedClaudeSession({activity:Ee.activity,codexThreadId:Ee.codexThreadId??"unknown-codex-session",kandanThreadId:Ee.kandanThreadId,cwd:C});if(!yn.ok)return{ok:!1,failure:yn.failure};n("runner.cross_harness_failover_seeded",{kandan_thread_id:Ee.kandanThreadId,source_session_id:Ee.codexThreadId??null,target_session_id:yn.targetSessionId,session_file:yn.sessionFile,transpiled_item_count:yn.transpiledItemCount,redacted_reasoning_count:yn.redactedReasoningCount});let Yo={type:"reconnect_thread",agentProvider:"claude-code",workspace:me,channel:ke,threadId:Ee.kandanThreadId,codexThreadId:yn.targetSessionId,cwd:C,sourceSeq:Ee.message.seq,workDescription:Ee.message.body,...Ee.model===void 0?{}:{model:Ee.model}};try{let In=await e1(void 0,Ce,G,Xe,e,R(),pe,he,Ze,xe,vr,vm,vl,BC,Q_,Yo,KC,a,void 0,void 0,void 0,ra=>Zs.current(ra),ou,iu,Na,void 0,v6,a6,GC);if(In.ok===!1)return{ok:!1,failure:`claude dispatch refused: ${JSON.stringify(In).slice(0,300)}`}}catch(In){return{ok:!1,failure:`claude dispatch failed: ${In instanceof Error?In.message:String(In)}`}}return{ok:!0,transpiledItemCount:yn.transpiledItemCount,redactedReasoningCount:yn.redactedReasoningCount,targetSessionId:yn.targetSessionId}}}:void 0,tr=x.linzumiAgent?.mcpToken??e.linzumiAgentMcpToken,rr=j0(x),qt=rr.type==="provider"?rr.runtime:void 0,qo=kNe({env:process.env,kandanUrl:e.kandanUrl,workspaceSlug:me,linzumiAgentMcpToken:tr,ownerUsername:J0(e),modelProviderRuntime:qt,log:n}),ta=INe({kandan:Ce,topic:G,binding:x.codingAccount}),lu=await Kh({kandan:Ce,codex:I,topic:G,instanceId:Xe,leaseEpochFor:Ee=>Zs.current(Ee),reapOwnedHarnessAfterStop:g.reapOwnedHarnessAfterStop,options:{kandanUrl:e.kandanUrl,token:e.token,runnerId:e.runnerId,cwd:C,codexBin:e.codexBin,codingAccount:ta===void 0?void 0:{accountId:ta.accountId,generation:ta.generation},refreshCodingAccountCredential:ta?.refresh,runnerEventSupport:()=>Hr.current,mcpAvailable:!wa(e)||I1(e),devServicesAvailable:!wa(e),fetch:e.fetch,fast:x.fast??e.fast,launchTui:!1,multiAgentJobs:x.multiAgentJobsEnabled===!0,multiAgentJobsEligible:x.multiAgentJobsEligible===!0,multiAgentJobsEnabled:()=>Dr.value,codingJobMcpToken:aze(x,e),rebuildOnDeadCodexWorker:Gt,reclaimWedgedThreadWorker:uo,crossHarnessFailover:et,onUnroutedThreadMessage:Ee=>g6(Ee),onCodexThreadRebound:({kandanThreadId:Ee,oldCodexThreadId:pn,newCodexThreadId:yn})=>{if(pn!==void 0&&pn!==yn){let In=nr.get(pn),ra=na.get(pn);In!==void 0&&(nr.delete(pn),nr.set(yn,In)),ra!==void 0&&(na.delete(pn),na.set(yn,ra)),In!==void 0&&bl.reconcile(X_()),ea.clear(pn)}let Yo=Be.rebindCodexThread(Ee,yn);n("runner.codex_thread_rebind_propagated",{kandan_thread_id:Ee,old_codex_thread_id:pn??null,new_codex_thread_id:yn,registry_outcome:Yo.outcome})},onCollaborationModeChanged:({kandanThreadId:Ee,mode:pn})=>{let yn=Be.list().find(In=>In.kandanThreadId===Ee);if(yn===void 0)throw new Error(`missing durable thread session for collaboration mode update: ${Ee}`);if(Be.upsert({...yn,control:{...yn.control,collaborationMode:pn},updatedAtMs:Date.now()}).outcome==="ownership_conflict")throw new Error(`collaboration mode registry ownership conflict: ${Ee}`)},modelAccountPreflightForTurn:Ee=>R0({agentProvider:"codex",modelProvider:Ee.modelProvider,model:Ee.model,modelTransportCatalogStatus:f1({...Ee.modelProvider===void 0?{}:{modelProvider:Ee.modelProvider},...Ee.model===void 0?{}:{model:Ee.model},...Ee.modelTransportCatalogStatus===void 0?{}:{modelTransportCatalogStatus:Ee.modelTransportCatalogStatus}},n),llmProxyBinding:p1(x.llmProxy),hasNativeCodexAuth:re()},dd,R()),onLiveSourceSeqAccepted:ou,onLiveSourceSeqQueued:Gs,onLiveSourceSeqSettled:mm,...qo===void 0?{}:{cloudAgentTurn:qo},pipelinePersistDir:oy(),enablePortForwardWatch:!0,initialForwardPorts:Je,portForwardWatcher:_Y({rootPid:F,start:e.portForwardWatcher,commanderBoundPids:g.commanderBoundPids,commanderBoundPorts:g.commanderBoundPorts}),suppressedForwardPorts:Oe,onForwardPortApproved:(Ee,pn)=>(ge.add(Ee),an(Ee,{...pn,agentProvider:"codex"}),q()),onForwardPortRevoked:Ee=>(ge.delete(Ee),$(Ee),q()),channelSession:{workspaceSlug:me,channelSlug:ke,kandanThreadId:Ke,rootSeq:Y(x.rootSeq),codexThreadId:A,linzumiContext:x.linzumiContext,developerPrompt:x.developerPrompt,agentNickname:cy(x),listenUser:Yn,linzumiAgentSession:x.linzumiAgent!==void 0||e.threadProcess?.role==="thread"&&e.linzumiAgentMcpToken!==void 0,modelProvider:Bn.modelProvider,modelTransportCatalogStatus:Bn.modelTransportCatalogStatus,model:Bn.model,reasoningEffort:Bn.reasoningEffort,...Bn.collaborationMode===void 0?{}:{collaborationMode:Bn.collaborationMode},sandbox:Bn.sandbox,approvalPolicy:Bn.approvalPolicy,sandboxedApprovalNeverDefault:Bn.sandboxedApprovalNeverDefault,allowPortForwardingByDefault:Bn.allowPortForwardingByDefault},developerInstructions:v1({cwd:C,control:x,options:e,runtimeSettings:Bn})},log:n});return nr.set(A,lu),na.set(A,I),bl.reconcile(X_()),ea.note(A,"attached"),Ele(A,lu),Be.upsert({workspace:me,channel:ke,kandanThreadId:Ke,codexThreadId:A,cwd:C,agentProvider:"codex",control:tee({workspaceSlug:me,channelSlug:ke,kandanThreadId:Ke,codexThreadId:A,cwd:C,rootSeq:Y(x.rootSeq),agentNickname:cy(x),runtimeSettings:Bn}),updatedAtMs:Date.now()}),I!==xt&&I.onNotification(Ee=>{JC.value+=1;let pn=Ee.params??{};n("codex.notification",dM(Ee.method,pn)),T(Ee.method,pn),WC(I).observeNotification(Ee.method,pn),kd(lu,Ee.method,pn,n)}),lu})();au.set(A,$o);try{let Yn=await $o;return Yn===void 0&&Y_(A,new Error(`attach for codex thread ${A} resolved without a live session`)),Yn}catch(Yn){let Bn=Yn instanceof Error?Yn.message:String(Yn);throw ea.fail(A,Bn),Y_(A,Yn instanceof Error?Yn:new Error(Bn)),Yn}finally{au.delete(A)}},YC=async(g,x,C)=>{if(xt===void 0)throw new Error("cannot attach a thread session without a codex app-server connection");return await l6({control:g,cwd:x,codexThreadId:C,sessionCodex:xt,portForwardWatcherRootPid:ao?.process.pid})},p6=g=>{let x=Oo(g.channel,g.kandanThreadId),C=Cs(Zr(),g.channel,g.kandanThreadId),A=qn.initial(C),I=ts.get(g.kandanThreadId)??[],F=Zg(A,I)??A,me="";try{me=Ps(zl(oy(),Vh({workspaceSlug:g.workspace,channelSlug:g.channel},g.kandanThreadId,Xe)),"utf8")}catch{}return{pendingInboundSeqs:x.entries().map(ke=>ke.sourceSeq),ackedInboundSeqs:x.ackedEntries().map(ke=>ke.sourceSeq),inboundHighWaterSeq:x.highWaterSourceSeq(),appliedFloorSeq:F,outboxTurnSignals:TQ(me)}},Fle=g=>{try{return PD(p6(g),{nowMs:Date.now()}).unfinished}catch(x){return n("runner.resume_scan_inspect_failed",{thread_id:g.kandanThreadId,phase:"rehydration_retire_guard",message:x instanceof Error?x.message:String(x)}),!0}},f6=(async()=>{let g=Be.list();if(g.length===0)return;let x=await BJ({records:g,nowMs:Date.now(),maxAgeMs:qR,pendingDurableRowCount:C=>Hx(zl(oy(),Vh({workspaceSlug:C.workspace,channelSlug:C.channel},C.kandanThreadId,Xe)),n).pendingEntries.length,hasUnfinishedWork:Fle,attach:async C=>{if(t.closePromise!==void 0)return n("session_registry.rehydrate_aborted_shutdown",{thread_id:C.kandanThreadId}),"failed";let A=yo(C.cwd,he.value);return A.ok?await YC(tf(C),A.cwd,C.codexThreadId)!==void 0?"attached":"failed":(n("session_registry.rehydrate_cwd_rejected",{thread_id:C.kandanThreadId,cwd:C.cwd,reason:A.reason}),"retire")},retire:C=>Be.remove(C.kandanThreadId),log:n});n("session_registry.rehydrate_complete",{records:g.length,rehydrated:x.rehydrated,retired_drained:x.retiredDrained,retired_stale:x.retiredStale,retired_unattachable:x.retiredUnattachable,kept_unfinished:x.keptUnfinished,failed:x.failed})})().catch(g=>{n("session_registry.rehydrate_failed",{message:g instanceof Error?g.message:String(g)})});t.actions.push(()=>f6);let m6=Promise.resolve(),eT=g=>{let x=m6.then(g,g);return m6=x,x},nT=async(g,x)=>{if(e.threadProcess?.role==="thread")return;let C=of(g);if(C.type!=="ok"||C.provider!=="codex")return;let A=bn(g,"workspace"),I=bn(g,"channel"),F=bn(g,"threadId");if(A===void 0||I===void 0||F===void 0)return;let me=j0(g);(g.modelProvider!==void 0||g.llmProxy!==void 0||g.linzumiAgent!==void 0)&&ZC.set(F,{...g.modelProvider===void 0?{}:{modelProvider:g.modelProvider},...g.llmProxy===void 0?{}:{llmProxy:g.llmProxy},...g.linzumiAgent===void 0?{}:{linzumiAgent:g.linzumiAgent}});let ke=GY(me);if(ke!==void 0)return{instanceId:Xe,controlType:g.type,ok:!1,error:ke,kandanThreadId:F,cwd:x};if(wm.has(F))return n("runner.reconnect_absorbed_by_reclaim_fence",{kandanThreadId:F,control_type:g.type,at:"preflight"}),{instanceId:Xe,controlType:g.type,ok:!0,delegated:!0,threadProcess:"already_started",kandanThreadId:F,cwd:x};if(ex.has(F))return n("runner.reconnect_absorbed_by_stop_retirement_fence",{kandanThreadId:F,control_type:g.type}),{instanceId:Xe,controlType:g.type,ok:!0,delegated:!0,threadProcess:"already_started",kandanThreadId:F,cwd:x};let Ke=_n.get(F);if(Ke!==void 0){let et=ry(Ke);if(et!=="dead")return{instanceId:Xe,controlType:g.type,ok:!0,delegated:!0,threadProcess:"already_started",kandanThreadId:F,cwd:x,adoptedLiveWorker:et==="live"};n("runner.thread_process_stale_entry_evicted",{kandanThreadId:F,codex_thread_id:g.type==="reconnect_thread"?y(g.codexThreadId)??null:null,prior_kind:Ke.kind,pid:Ke.kind==="running"?Ke.handle.processPid??null:null,control_type:g.type}),_n.get(F)===Ke&&_n.delete(F),lc(Ke).catch(()=>{})}let ze=fee(e.allowedCwds);ze.missing.length>0&&n("runner.stale_allowed_cwd_roots_pruned",{kandanThreadId:F,control_type:g.type,pruned_roots:ze.missing,remaining_root_count:ze.existing.length}),$e("thread_process_spawn",{kandanThreadId:F})&&Xo();let ot=K9(be,x);if(ot!==void 0)throw n("runner.cwd_stillbirth_circuit_open_start_refused",{kandanThreadId:F,cwd:x,control_type:g.type,consecutive_stillbirths:ot.count,last_stillbirth_at:ot.lastAt}),new Error(Z9(x,ot));let jn=e.spawnThreadRunner??wze,$o=dee(e);n("runner.thread_process_starting",{kandanThreadId:F,cwd:x,readyTimeoutMs:$o});let Yn=dze({options:ze.missing.length>0?{...e,allowedCwds:ze.existing}:e,control:g,cwd:x,workspaceSlug:A,channelSlug:I,kandanThreadId:F});if(wa(Yn)){let et=await Dt(),tr=WLe(e.runnerId),rr=await c4e({dependencyStatusRef:m,connectTimeStatus:e.dependencyStatus,machineVmUnready:et!==void 0&&!et.ready,cwd:x});rr.confirmation!=="not_needed"&&n("runner.vm_preflight_host_codex_reverified",{kandanThreadId:F,confirmed_available:rr.hostCodexAvailable,probe_failure:rr.probedCodex?.failure??null,probe_detail:rr.probedCodex?.failureDetail??null});let qt=d4e({vmRouted:!0,readiness:et,hostCodexAvailable:rr.hostCodexAvailable,hostCodexProbeDetail:rr.probedCodex?.failureDetail,explicitLocalVmOptIn:Yn.executionMode==="local_vm",freshStart:g.type==="start_instance",lastNoticedReadinessFingerprint:GLe(tr,n)});if(qt.route==="vm"&&et?.ready===!0&&WX(tr,void 0,n),qt.route==="host_fallback"){if(Yn={...Yn,executionMode:"raw"},n("runner.local_vm_unready_host_fallback",{kandanThreadId:F,control_type:g.type,blockers:[...qt.blockers],notice_posted:qt.postThreadNotice,readiness_fingerprint:qt.readinessFingerprint}),qt.postThreadNotice)try{await Ce.push(G,"session:post_thread_message",{workspace:A,channel:I,thread_id:F,body:qt.notice,client_message_id:`local-vm-host-fallback-${F}`,payload:{metadata:{local_codex_runner:{event_type:"local_vm_host_fallback_notice"}}}}),WX(tr,qt.readinessFingerprint,n)}catch(qo){n("runner.local_vm_unready_notice_post_failed",{kandanThreadId:F,message:qo instanceof Error?qo.message:String(qo)})}}else if(qt.route==="fail_loud")throw n("runner.local_vm_unready_start_refused",{kandanThreadId:F,control_type:g.type,blockers:[...qt.blockers]}),new Error(qt.reason)}let Bn=await eT(async()=>{if(wm.has(F))return n("runner.reconnect_absorbed_by_reclaim_fence",{kandanThreadId:F,control_type:g.type,at:"registration"}),{type:"already_started",response:{instanceId:Xe,controlType:g.type,ok:!0,delegated:!0,threadProcess:"already_started",kandanThreadId:F,cwd:x}};if(_n.get(F)!==void 0)return{type:"already_started",response:{instanceId:Xe,controlType:g.type,ok:!0,delegated:!0,threadProcess:"already_started",kandanThreadId:F,cwd:x}};let tr=Yn.multiAgentJobsEligible===!0,rr=Yn.multiAgentJobs===!0;if(tr&&rr!==Dr.value)return n("runner.thread_process_start_stale_multi_agent_authority",{kandanThreadId:F,control_type:g.type,configured:rr,live_enabled:Dr.value}),{type:"superseded",response:{instanceId:Xe,controlType:g.type,ok:!1,error:"thread worker start superseded by multi-agent authority",kandanThreadId:F,cwd:x}};let qt=Yn.linzumiAgentMcpToken!==void 0||Yn.codingJobMcpToken!==void 0,qo=eY(Yn);if(qt&&qo!==_m.value)return n("runner.thread_process_start_stale_document_surfaces_authority",{kandanThreadId:F,control_type:g.type,configured:qo,live_enabled:_m.value}),{type:"superseded",response:{instanceId:Xe,controlType:g.type,ok:!1,error:"thread worker start superseded by document surfaces authority",kandanThreadId:F,cwd:x}};let ta={kind:"starting",promise:Rze(jn(Yn),{kandanThreadId:F,timeoutMs:$o}),multiAgentJobs:{eligible:Yn.multiAgentJobsEligible===!0,configured:Yn.multiAgentJobs===!0},documentSurfaces:{eligible:qt,configured:qo}};return _n.set(F,ta),{type:"registered",entry:ta}});if(Bn.type==="already_started"||Bn.type==="superseded")return Bn.response;let uo=Bn.entry,Gt;try{if(Gt=await uo.promise,_n.get(F)!==uo)return n("runner.thread_process_start_superseded_by_authority",{kandanThreadId:F,control_type:g.type,eligible:uo.multiAgentJobs?.eligible??null,configured:uo.multiAgentJobs?.configured??null,live_enabled:Dr.value}),{instanceId:Xe,controlType:g.type,ok:!1,error:"thread worker start superseded by multi-agent authority",kandanThreadId:F,cwd:x}}catch(et){if(_n.get(F)===uo&&_n.delete(F),n("runner.thread_process_start_failed",{kandanThreadId:F,cwd:x,message:et instanceof Error?et.message:String(et)}),$e("thread_process_start_failed",{kandanThreadId:F})&&Xo(),vY(et)){let tr=B9(be,x,et,Date.now());n("runner.cwd_stillbirth_recorded",{kandanThreadId:F,cwd:x,consecutive_stillbirths:tr.count,circuit_open:tr.tripped})}throw et}J9(be,x)&&n("runner.cwd_stillbirth_counter_cleared",{kandanThreadId:F,cwd:x});for(let et of Gt.commanderManagedPorts??[])V(et.port,{processName:et.processName,processIconKey:et.processIconKey,agentProvider:et.agentProvider});try{let et=Gt.codex,tr=K0(()=>et.close());Gt.onExit?.(tr),Gt.onExit?.(()=>{t.closePromise===void 0&&WC(et).failActiveTurns("codex thread worker exited")}),Gt.onExit?.(()=>{Vt.clearThread(Cs(Zr(),I,F))});let rr={...Gt,close:async()=>{tr(),await Gt.close()},closeWithOutcome:async()=>(tr(),Gt.closeWithOutcome!==void 0?Gt.closeWithOutcome():(await Gt.close(),"already_exited"))},qt={kind:"running",handle:rr,...uo.multiAgentJobs===void 0?{}:{multiAgentJobs:uo.multiAgentJobs},...uo.documentSurfaces===void 0?{}:{documentSurfaces:uo.documentSurfaces}},qo,ta=pn=>(qo??=(async()=>{ex.add(F),_n.get(F)===qt&&_n.delete(F),n("runner.thread_process_stop_retirement_started",{kandanThreadId:F,reason:pn,pid:rr.processPid??null});try{let yn=await lc(qt);switch(yn){case"abandoned":throw rr.onExit?.(()=>{ex.delete(F),n("runner.thread_process_stop_retirement_late_exit",{kandanThreadId:F,reason:pn,pid:rr.processPid??null})}),n("runner.thread_process_stop_retirement_abandoned",{kandanThreadId:F,reason:pn,pid:rr.processPid??null}),new Error(`dynamic thread worker ${F} could not be confirmed retired after Stop`);case"already_exited":case"exited_after_sigint":case"exited_after_sigkill":ex.delete(F),n("runner.thread_process_stop_retirement_completed",{kandanThreadId:F,reason:pn,outcome:yn,pid:rr.processPid??null});return}}catch(yn){throw yn}})(),qo);_n.get(F)===uo&&_n.set(F,qt),Gt.onExit?.(()=>{_n.get(F)===qt&&_n.delete(F)}),Gt.onExit?.(()=>{if(t.closePromise===void 0)for(let[pn,yn]of Array.from(na.entries()))yn===et&&QC(pn,et)}),n("runner.thread_process_started",{kandanThreadId:F,cwd:x});let lu=(pn,yn,Yo)=>l6({control:pn,cwd:yn,codexThreadId:Yo,sessionCodex:et,portForwardWatcherRootPid:Gt.processPid,reapOwnedHarnessAfterStop:ta,commanderBoundPids:(Gt.commanderManagedPorts??[]).flatMap(In=>In.pid===void 0?[]:[In.pid]),commanderBoundPorts:(Gt.commanderManagedPorts??[]).map(In=>In.port)}),Ee=async pn=>{if(pn!==void 0&&pn.ok!==!1)return pn;let yn=_n.get(F);return(yn===uo||yn?.kind==="running")&&_n.delete(F),await(yn?.kind==="running"?yn.handle.close():Gt.close()).catch(()=>{}),pn};switch(g.type){case"start_instance":{let pn=await ZY({codex:et,kandan:Ce,topic:G,control:g,options:e,instanceId:Xe,cwd:x,matchedRoot:x,onStartedThread:lu,setStartupStage:()=>{},setStartedCodexThreadId:()=>{}});return await Ee(pn.controlResponse)}case"reconnect_thread":return await Ee(await e1(et,Ce,G,Xe,e,R(),pe,he,Ze,xe,vr,vm,vl,BC,Q_,g,KC,a,lu,void 0,void 0,pn=>Zs.current(pn),ou,iu,Na,ns,void 0,void 0,GC))}}catch(et){let tr=_n.get(F);throw(tr===uo||tr?.kind==="running")&&_n.delete(F),await(tr?.kind==="running"?tr.handle.close():Gt.close()).catch(()=>{}),et}},Sm=new Map,tT=new Map,h6=async(g,x,C)=>{try{n("runner.spawn_on_miss_replay_on_sibling",{kandanThreadId:g.threadId??null,codex_thread_id:x.codexThreadId,seq:g.seq});let A=await VC({codexThreadId:x.codexThreadId,kandanThreadId:g.threadId,wait:XC(x.codexThreadId,{waitForSiblingSpawn:!0})});if(A===void 0)throw new Error(`spawn-on-miss could not resolve a live session for codex thread ${x.codexThreadId}`);let I=A.currentKandanThreadId();if(g.threadId!==void 0&&I!==void 0&&I!==g.threadId)throw new Lu({codexThreadId:x.codexThreadId,ownerKandanThreadId:I,requestingKandanThreadId:g.threadId});return await A.startThreadMessageTurn({seq:g.seq,body:g.body,actorSlug:g.actorSlug,actorUserId:g.actorUserId,attachments:g.attachments,boundStartTimeout:!0,adtStream:C.adtStream}),"dispatched"}catch(A){return n("runner.spawn_on_miss_failed",{kandanThreadId:g.threadId??null,codex_thread_id:x.codexThreadId,seq:g.seq,message:A instanceof Error?A.message:String(A)}),await za(C,"failed",`could not resume the thread's coding session: ${A instanceof Error?A.message:String(A)}`,x.codexThreadId,{failureClass:"resume_transient"}),"transient_failed"}},g6=async g=>{let x=g.threadId;if(!Sd(e)||x===void 0)return"ignored";let C=`${x}:${g.seq}`,A=tT.get(C);if(A!==void 0){let F=await A;return F==="spawned"?"spawned_deduped":F}let I=jle(g,x);tT.set(C,I);try{return await I}finally{tT.delete(C)}},jle=async(g,x)=>{let C=_n.get(x);if((C===void 0?void 0:ry(C))==="live")return"ignored";let I=Be.list().find(ze=>ze.kandanThreadId===x);if(I===void 0){let ze=rs();if(ze===void 0||!Qs())return"ignored";let jn=Oo(ze,x).enqueue(g.seq,g.localRunnerEventType===void 0?"live":"replay",Tl(g),Date.now());return n("runner.spawn_on_miss_enqueued_without_local_record",{kandanThreadId:x,channel:ze,seq:g.seq,enqueued:jn.accepted}),await Vle(ze,g),"spawned"}let F=I.channel,me=Cs(Zr(),F,x),ke=Oo(F,x);if(!Qs()){let ze=ke.enqueue(g.seq,g.localRunnerEventType===void 0?"live":"replay",Tl(g),Date.now());return n("runner.spawn_on_miss_drain_in_progress",{kandanThreadId:x,seq:g.seq,enqueued:ze.accepted}),"spawned"}return await jX({queue:ke,store:qn,lock:Hs,leases:Zs,threadId:x,watermarkKey:me,sourceSeq:g.seq,kind:g.localRunnerEventType===void 0?"live":"replay",payload:Tl(g),leaseEpoch:OX(g),dispatch:async(ze,ot)=>{let jn=PT(ot);return jn===void 0?(n("runner.spawn_on_miss_bad_payload",{kandanThreadId:x,seq:ze}),"permanent_failed"):await w6(jn,I)},serverRows:ts.get(x)??[],onDeadLetter:C6(I),inFlightGuard:Vt,log:n})==="ignored"?"ignored":"spawned"},nx=async(g,x=[])=>{if(!Qs())return;let C=g.kandanThreadId,A=g.channel,I=Cs(Zr(),A,C),F=Oo(A,C);await LX({queue:F,store:qn,lock:Hs,threadId:C,watermarkKey:I,serverRows:x,log:n,onlyDispatchUnattempted:x.length===0,onDeadLetter:C6(g),inFlightGuard:Vt,onTornTailUnrecoverable:async me=>{let ke=tf(g);await za(ke,"failed","a message may have been lost during an unexpected shutdown (power loss). Please resend your last message to continue this job.",g.codexThreadId,{failureClass:"resume_torn_tail"}),n("runner.inbound_torn_tail_resend_published",{kandanThreadId:me})},dispatch:async(me,ke)=>{let Ke=PT(ke);return Ke===void 0?(n("runner.inbound_drain_bad_payload",{kandanThreadId:C,seq:me}),"permanent_failed"):await w6(Ke,g)}})},Lle=async(g,x)=>{if(x!==void 0&&x.ok===!1||!Qs())return;let C=Be.list().find(I=>I.kandanThreadId===g);if(C===void 0)return;let A=Oo(C.channel,g);A.entries().length!==0&&(n("runner.inbound_drain_after_spawn",{kandanThreadId:g,channel:C.channel,pending:A.entries().length}),await nx(C,ts.get(g)??[]).catch(I=>{n("runner.inbound_drain_after_spawn_failed",{kandanThreadId:g,message:I instanceof Error?I.message:String(I)})}))},Nle=async(g,x)=>{let C=await nT(g,x),A=bn(g,"threadId");return A!==void 0&&await Lle(A,C),g.type==="reconnect_thread"&&ZD(C)&&C!==void 0?await zle(g,C):C},zle=async(g,x)=>{let C=bo(g.workDescription),A=Y(g.sourceSeq)??Y(g.rootSeq),I=bn(g,"threadId"),F=bn(g,"channel"),me=y(g.codexThreadId),ke=y(g.transportCeilingRecoveryRequestId);if(C===void 0||A===void 0||I===void 0||me===void 0)return x;try{let Ke=await VC({codexThreadId:me,kandanThreadId:I,wait:XC(me,{waitForSiblingSpawn:!0})});if(Ke===void 0)throw new Error(`no live session attached for codex thread ${me}`);let ze=Ke.currentKandanThreadId();if(ze!==void 0&&ze!==I)throw new Lu({codexThreadId:me,ownerKandanThreadId:ze,requestingKandanThreadId:I});let ot=await MLe({retryPendingSettlement:()=>Ke.retryPendingSourceSettlement(A),sourceSeqAlreadyApplied:()=>F===void 0?(n("runner.reconnect_follow_up_missing_channel",{kandanThreadId:I,codex_thread_id:me,source_seq:A}),!1):ns({channel:F,threadId:I,sourceSeq:A,transportCeilingRecoveryRequestId:ke})});switch(ot.type){case"duplicate":return ot.reason==="already_applied"&&n("runner.reconnect_follow_up_already_applied",{kandanThreadId:I,codex_thread_id:me,source_seq:A}),{...x,followUp:"duplicate",sourceSeq:A};case"route":break}let jn=ei(e.token),$o=await Ke.startThreadMessageTurn({seq:A,body:C,actorSlug:jn.actorUsername,actorUserId:jn.actorUserId,attachments:Mi(je(g.attachments)??[]),boundStartTimeout:!0,reclaimOnStartTimeout:x.adoptedLiveWorker===!0,dedupBySeq:ke===void 0,transportCeilingRecoveryRequestId:ke,adtStream:g.adtStream});return n("runner.reconnect_follow_up_routed_to_live_worker",{kandanThreadId:I,codex_thread_id:me,source_seq:A,outcome:$o}),{...x,followUp:$o,sourceSeq:A}}catch(Ke){let ze=Ke instanceof Error?Ke.message:String(Ke);return n("runner.reconnect_follow_up_route_failed",{kandanThreadId:I,codex_thread_id:me,source_seq:A,message:ze}),{...x,followUp:"route_failed",followUpError:ze,sourceSeq:A}}},y6=g=>{let x=new Map,C=SQ(g);for(let A of C){A.leaseEpoch!==void 0&&Zs.adopt(A.threadId,A.leaseEpoch)&&n("runner.resume_reconcile_lease_adopted",{kandanThreadId:A.threadId,leaseEpoch:A.leaseEpoch});let I=kQ(A);x.set(A.threadId,I),ts.set(A.threadId,I)}return C.length>0&&n("runner.resume_reconcile_consumed",{threadCount:C.length}),x},_6=async()=>{let g=SD(),x;try{x=IY(g).filter(I=>I.endsWith(".log"))}catch(I){if(I?.code==="ENOENT")return;n("runner.inbound_orphan_scan_failed",{message:I instanceof Error?I.message:String(I)});return}let C=Zr(),A=new Set(Be.list().map(I=>kD(C,I.channel,I.kandanThreadId)));for(let I of x){let F=ht(g,I);if(!A.has(F))try{let me=wD(F,n),ke=me.entries();if(ke.length===0)continue;for(let Ke of ke)me.deadLetter(Ke.sourceSeq);me.compact(),n("runner.inbound_orphan_dead_lettered",{path:F,strandedCount:ke.length,strandedSeqs:ke.map(Ke=>Ke.sourceSeq)})}catch(me){n("runner.inbound_orphan_drain_failed",{path:F,message:me instanceof Error?me.message:String(me)})}}},x6=async g=>{if(!Qs())return;let x=Be.list();await Promise.all(x.map(C=>nx(C,g?.get(C.kandanThreadId)??[]).catch(A=>{n("runner.inbound_drain_failed",{kandanThreadId:C.kandanThreadId,message:A instanceof Error?A.message:String(A)})}))),await _6()},Ule=g=>g==="accepted_never_framed"?"this message was accepted but a runner restart killed it before it ran. Resend it (or press retry) to run it now.":"interrupted by a runner restart before it finished. Resend your last message (or press retry) to continue this job.",Ble=async g=>{let x=Date.now()+g;for(;;){if(t.closePromise!==void 0)return;let C=x-Date.now();if(C<=0)return;await new Promise(A=>setTimeout(A,Math.min(500,C)))}},Jle=async()=>{!Qs()||t.closePromise!==void 0||(await PQ({records:Be.list(),threadId:g=>g.kandanThreadId,inspect:p6,resumePendingInbound:async g=>(await nx(g,ts.get(g.kandanThreadId)??[]),Oo(g.channel,g.kandanThreadId).entries().length===0?"clear":"retry"),respawnWorker:async g=>{if(t.closePromise!==void 0)return!1;let x=yo(g.cwd,he.value);return x.ok?await YC(tf(g),x.cwd,g.codexThreadId)!==void 0:(n("runner.resume_respawn_cwd_rejected",{thread_id:g.kandanThreadId,cwd:g.cwd,reason:x.reason}),!1)},seqInFlight:(g,x)=>Vt.has(Cs(Zr(),g.channel,g.kandanThreadId),x),publishInterruptedTurnState:async(g,x,C)=>{await za({...tf(g),sourceSeq:x},"failed",Ule(C),g.codexThreadId,{failureClass:"resurrection_interrupted"})},shuttingDown:()=>t.closePromise!==void 0||!Qs(),sleep:Ble,log:n}),await _6())};y6(M(Qo)?.resume_reconcile);let Kle=f6.then(()=>Jle()).catch(g=>{n("runner.inbound_boot_drain_failed",{message:g instanceof Error?g.message:String(g)})});t.actions.push(()=>Kle),Ce.onReconnect(g=>{let x=g.get(G),C=y6(x===void 0?void 0:x.resume_reconcile);x6(C).catch(A=>{n("runner.inbound_rejoin_drain_failed",{message:A instanceof Error?A.message:String(A)})})});let cu=new Map,b6=(g,x)=>`${g}:${x}`,v6={windowMs:cg(process.env),recordWedge:(g,x)=>{let C=b6(g,x),A=(cu.get(C)??0)+1;if(cu.delete(C),cu.size>=256){let I=cu.keys().next().value;I!==void 0&&cu.delete(I)}return cu.set(C,A),A},clear:(g,x)=>{cu.delete(b6(g,x))},killAndRespawn:async({threadId:g,claudeSessionId:x,reason:C})=>{let A=Ts(vr,[x],[g]);if(A!==void 0){n("claude_code.dispatch_supervisor_killing_session",{linzumi_thread_id:g,claude_session_id:x,reason:C}),A.abortController.abort(new Error(C));let F=A.sessionWork();F!==void 0&&await Promise.race([F.catch(()=>{}),new Promise(me=>{setTimeout(me,1e4).unref?.()})])}let I=Be.list().find(F=>F.kandanThreadId===g);return I===void 0?(n("claude_code.dispatch_supervisor_no_registry_record",{linzumi_thread_id:g,claude_session_id:x}),"no_replay_path"):(await nx(I,ts.get(g)??[]),"respawn_dispatched")}},w6=async(g,x)=>{let C=x.kandanThreadId,A=tf(x),I=ZC.get(C),F={...A,sourceSeq:g.seq,workDescription:g.body,...g.attachments.length===0?{}:{attachments:px(g.attachments)},...I?.modelProvider===void 0?{}:{modelProvider:I.modelProvider},...I?.llmProxy===void 0?{}:{llmProxy:I.llmProxy},...I?.linzumiAgent===void 0?{}:{linzumiAgent:I.linzumiAgent}},me=yo(x.cwd,he.value);if(!me.ok)return n("runner.spawn_on_miss_cwd_rejected",{kandanThreadId:C,cwd:x.cwd,reason:me.reason,seq:g.seq}),await za(F,"failed",`could not resume the thread's coding session: working directory ${x.cwd} is not an allowed root (${me.reason})`,x.codexThreadId,{failureClass:"resume_cwd_not_allowed"}),"permanent_failed";let ke=me.cwd,Ke=Sm.get(C);if(Ke!==void 0)return n("runner.spawn_on_miss_resuming",{kandanThreadId:C,codex_thread_id:x.codexThreadId,provider_session_key:x.codexThreadId,seq:g.seq,decision:"await_in_flight_spawn"}),await Ke==="no_session"?(await za(F,"failed","could not resume the thread's coding session: no live session after spawn",x.codexThreadId,{failureClass:"resume_transient"}),"transient_failed"):await h6(g,x,F);n("runner.spawn_on_miss_resuming",{kandanThreadId:C,codex_thread_id:x.codexThreadId,provider_session_key:x.codexThreadId,seq:g.seq,decision:"spawned_resume"}),ea.note(x.codexThreadId,"spawn_requested");let ze=()=>{},ot=new Promise(jn=>{ze=jn});Sm.set(C,ot);try{let jn=await nT(F,ke);if(ZD(jn))return ze("spawned"),await h6(g,x,F);if(jn===void 0||jn.ok===!1){ze("no_session");let $o=jn!==void 0&&typeof jn.error=="string"?jn.error:"the thread could not be resumed (no resumable codex session)";return ea.fail(x.codexThreadId,$o),Y_(x.codexThreadId,new Error($o)),n("runner.spawn_on_miss_failed",{kandanThreadId:C,codex_thread_id:x.codexThreadId,seq:g.seq,message:$o}),await za(F,"failed",`could not resume the thread's coding session: ${$o}`,x.codexThreadId,{failureClass:"resume_transient"}),"transient_failed"}return ze("spawned"),"dispatched"}catch(jn){return ze("no_session"),ea.fail(x.codexThreadId,jn instanceof Error?jn.message:String(jn)),Y_(x.codexThreadId,jn instanceof Error?jn:new Error(String(jn))),n("runner.spawn_on_miss_failed",{kandanThreadId:C,codex_thread_id:x.codexThreadId,seq:g.seq,message:jn instanceof Error?jn.message:String(jn)}),await za(F,"failed",`could not resume the thread's coding session: ${jn instanceof Error?jn.message:String(jn)}`,x.codexThreadId,{failureClass:"resume_transient"}),"transient_failed"}finally{ze("spawned"),Sm.get(C)===ot&&Sm.delete(C)}},za=async(g,x,C,A,I={})=>{let F=Td(g,x,C,{instanceId:Xe,codexThreadId:A,...jl(I.failureClass)});if(F!==void 0)try{await Ce.push(G,"message_state",F)}catch(me){n("runner.spawn_on_miss_state_push_failed",{thread_id:bn(g,"threadId")??null,status:x,message:me instanceof Error?me.message:String(me)})}},S6=async(g,x)=>{let{reason:C,failureClass:A}=gze(x),I=Td(g,"failed",C,{instanceId:Xe,...jl(A)});if(I===void 0){n("runner.stillborn_worker_failed_state_unpublishable",{thread_id:bn(g,"threadId")??null,control_type:g.type,reason:C,cause:"missing_source_seq"});return}try{await Ce.push(G,"message_state",I),n("runner.stillborn_worker_failed_state_published",{thread_id:bn(g,"threadId")??null,control_type:g.type,reason:C})}catch(F){n("runner.stillborn_worker_failed_state_push_failed",{thread_id:bn(g,"threadId")??null,control_type:g.type,message:F instanceof Error?F.message:String(F)})}},k6=async(g,x)=>{let C=f.refusalReason(x),A=!1;switch(n("runner.execution_health_claim_refused",{control_type:g.type,thread_id:xo(g)??null,source_seq:g.type==="start_turn"?null:Y(g.sourceSeq)??Y(g.rootSeq)??null,reason:C,adapter:x}),g.type){case"start_instance":case"reconnect_thread":{if((Y(g.sourceSeq)??Y(g.rootSeq))===void 0)A=!0,n("runner.execution_health_failed_state_unpublishable",{control_type:g.type,thread_id:xo(g)??null,reason:C,cause:"missing_source_seq"});else try{await kr(Ce,G,g,"failed",C,{instanceId:Xe,failureClass:"stillborn_worker"})}catch(F){A=!0,n("runner.execution_health_failed_state_push_failed",{control_type:g.type,thread_id:xo(g)??null,reason:C,message:F instanceof Error?F.message:String(F)})}break}case"start_turn":break}if(await Ce.push(G,"codex_error",{instanceId:Xe,message:C}),A)throw new Error(`runner execution-health refusal was not durably published: ${C}`)},Vle=async(g,x)=>{if(x.threadId===void 0)return;let C={workspace:Zr(),channel:g,thread_id:x.threadId,instance_id:Xe,seq:x.seq,status:"queued",reason:"queued for durable resume"};try{await Ce.push(G,"message_state",C)}catch(A){n("runner.spawn_on_miss_state_push_failed",{thread_id:x.threadId,status:"queued",message:A instanceof Error?A.message:String(A)})}},tx=[],rT=qQ(process.env),Wle=async g=>{try{let x=bn(g,"threadId"),C=YNe({control:g,hasRegistryRecord:x!==void 0&&Be.list().some(F=>F.kandanThreadId===x),runtimeSettings:gc(e,g),identity:ei(e.token),nowMs:Date.now()});if(C===void 0)return!1;let A=Td(g,"queued",OQ,{instanceId:Xe,...C.codexThreadId===void 0?{}:{codexThreadId:C.codexThreadId}}),I=await eze({plan:C,queuedStatePayload:A,queue:Oo(C.channel,C.threadId),upsertRegistryRecord:F=>Be.upsert(F),pushQueuedState:async F=>{await Ce.push(G,"message_state",F)},trackHeld:F=>{tx.push({control:g,...F})},log:n,nowMs:Date.now()});return I.held?(n("runner.update_restart_drain_start_held",{control_type:g.type,thread_id:C.threadId,source_seq:C.sourceSeq,enqueued:I.enqueuedFresh,registry_record_synthesized:C.registryRecord!==void 0,max_wait_ms:rT}),!0):!1}catch(x){return n("runner.update_restart_drain_hold_failed",{control_type:g.type,thread_id:bn(g,"threadId")??null,message:x instanceof Error?x.message:String(x)}),!1}},Gle=async()=>{let g=Date.now();for(let x of[...tx]){if(g-x.heldAtMs<rT)continue;let C=tx.indexOf(x);C!==-1&&tx.splice(C,1);let A=Oo(x.channel,x.threadId);A.entries().find(F=>F.sourceSeq===x.sourceSeq)!==void 0&&(A.deadLetter(x.sourceSeq),n("runner.update_restart_drain_held_turn_expired",{thread_id:x.threadId,source_seq:x.sourceSeq,held_for_ms:g-x.heldAtMs,max_wait_ms:rT}),await S6(x.control,new Error(ED)))}},km,Hle=()=>{km===void 0&&(km=setInterval(()=>{Gle().catch(g=>{n("runner.update_restart_drain_held_sweep_failed",{message:g instanceof Error?g.message:String(g)})})},$Q))};t.actions.push(()=>{km!==void 0&&(clearInterval(km),km=void 0)});let C6=g=>async({sourceSeq:x,reason:C,attempts:A,alreadyPublished:I})=>{n("runner.inbound_dead_lettered",{kandanThreadId:g.kandanThreadId,seq:x,reason:C,attempts:A,alreadyPublished:I}),!I&&await za(tf(g),"failed",QNe(C),g.codexThreadId,{failureClass:XNe(C)})},oT=()=>{if(lr!==void 0)return!1;for(let g of uu.values())if(g.activeTurnCount()>0)return!1;for(let g of vr.values())if(g.hasActiveTurn())return!1;for(let g of _n.values())if(g.kind==="starting")return!1;return!(Sm.size>0||xe.size>0)},Zle=()=>{if(!oT())return!1;for(let g of Zo.values())if(g.entries().length>0)return!1;return!0},T6=GG(process.env),iT=HG({currentVersion:jt,strategy:zG({env:process.env,entrypointPath:process.argv[1]}),isIdle:Zle,...T6===void 0?{}:{drain:{timing:T6,hooks:{begin:()=>{gl=!0},end:({redispatchHeldWork:g})=>{gl=!1,g&&x6().catch(x=>{n("runner.update_drain_requeue_failed",{message:x instanceof Error?x.message:String(x)})})},isQuiescent:oT,isEligible:()=>lr===void 0}}},performRestart:WG({currentVersion:jt,argv:process.argv.slice(2),cwd:e.cwd,close:r,exit:g=>process.exit(g),log:n}),log:n,restartAttemptStore:Xw(UG())});t.actions.push(()=>iT.stop()),i.beginDraining=()=>{if(d?.outgoingDrainActive()===!0){n("runner.generation_outgoing_gate_open",{pinned:d.outgoingPins.size()});return}J_=!0,gl=!0,Hle()},i.onTurnCompleted=g=>{if(!(d===void 0||!d.outgoingDrainActive())&&d.outgoingPins.release(g.threadId)){let x=d.sendToSupervisor({type:"generation_pin_released",epoch:d.epoch,threadId:g.threadId});n("runner.generation_pin_released_sent",{threadId:g.threadId,remaining:d.outgoingPins.size(),delivered:x})}},i.isQuiescent=oT,i.isWaitEligible=()=>lr===void 0,i.inFlightTurns=()=>[...Array.from(uu.values()).flatMap(g=>g.activeTurns().map(x=>({threadId:x.threadId,turnId:x.turnId,engine:"codex"}))),...Array.from(vr.values()).filter(g=>g.hasActiveTurn()).map(g=>({threadId:g.threadId,engine:"claude_code"}))],i.lastActivityAtMs=()=>{let g;for(let x of uu.values()){let C=x.lastActivityAtMs();C!==void 0&&(g===void 0||C>g)&&(g=C)}for(let x of vr.values()){let C=x.lastSdkActivityMs();C>0&&(g===void 0||C>g)&&(g=C)}return g},i.publishForcedKillTerminalStates=g=>{n("runner.drain_forced_kill_states_publishing",{turn_count:g.length,thread_ids:g.map(A=>A.threadId)});let x=new Set(g.filter(A=>A.engine==="codex").map(A=>A.threadId)),C=new Set([lr,...nr.values()].filter(A=>A!==void 0).flatMap(A=>A.pendingApprovalTurnIds()));for(let A of uu.values())A.activeTurns().some(I=>x.has(I.threadId))&&A.failActiveTurns(I=>C.has(I.turnId)?NQ:LQ);return Promise.resolve()};let Qle=()=>({instanceId:Xe,clientId:Ne,...os===void 0?{}:{codexUrl:os},cwd:e.cwd,hostname:vn,workspace:Kn(e)??null,channel:e.channelSession?.channelSlug??null,threadId:lr?.currentKandanThreadId()??null,codexThreadId:lr?.currentCodexThreadId()??null,codexThreads:bm.value,model:xl.model??null,reasoningEffort:xl.reasoningEffort??null,allowPortForwardingByDefault:xl.allowPortForwardingByDefault??null,fast:e.fast??!1,capabilities:q(),updateNudge:iT.status()??null}),Cm=g=>Ce.push(G,"heartbeat",{...Qle(),...g===void 0?{}:tN(g)}).then(()=>{Ie.recordServerAck();for(let x of vr.values())x.resumeOutbox()}),Xo=()=>Cm().catch(g=>{n("kandan.heartbeat_push_failed",{message:g instanceof Error?g.message:String(g)})}),Xle=g=>{for(let x of uu.values())if(x.activeTurns().some(C=>C.threadId===g))return!0;for(let x of vr.values())if(x.threadId===g)return!0;return!1},Yle=setInterval(()=>{for(let g of X_()){let x=g.adtStallHeartbeatCandidate();if(x===void 0)continue;let{threadId:C,session:A}=x;Ce.push(G,M4,{session_id:A.binding.sessionId,lease_epoch:A.binding.leaseEpoch,harness_alive:Xle(C)}).catch(I=>{n("adt.stall_heartbeat_push_failed",{session_id:A.binding.sessionId,message:I instanceof Error?I.message:String(I)})})}},3e4);t.actions.push(()=>clearInterval(Yle));let epe=setInterval(()=>{Ie.check(),ee.check(()=>{Xo()}),fe.check(()=>{Xo()}),Xo()},15e3);if(t.actions.push(()=>clearInterval(epe)),Ce.onReconnect(()=>Xo().then(()=>{})),Xo(),e.threadProcess?.role!=="thread"&&Zv()){let g=TW(PW({kandanUrl:e.kandanUrl,token:e.token,computeKey:yw(e.kandanUrl),query:bw({kandanUrl:e.kandanUrl,token:e.token}),log:x=>n("vm.golden_gc",{line:x})}));t.actions.push(g)}let P6=rG(Ce,G,()=>Array.from(ge));t.actions.push(()=>P6.close());let Ua=lr?.currentCodexThreadId();if(e.launchTui&&xt===void 0)throw new Error("Codex TUI requires a Codex app-server connection");if(e.launchTui&&xt!==void 0&&Ua!==void 0){let g=e.channelSession;if(g===void 0)throw new Error("Codex TUI persisted-thread resume requires channel session context");if(g.kandanThreadId===void 0)throw new Error("Codex TUI persisted-thread resume requires a Linzumi thread identity");let x={workspace:g.workspaceSlug,channel:g.channelSlug,threadId:g.kandanThreadId},C=await tNe(xt,Ua,{log:n,buildRehydrationItems:async A=>{let I=await Wh(Ce,G,x,n);if(I===void 0||I.nodes.length===0){n("linzumi.tui_thread_rehydration_ir_unavailable",{codex_thread_id:Ua,linzumi_thread_id:g.kandanThreadId??null,reason:I===void 0?"transcript_unavailable":"no_nodes",resume_failure:A,degraded_to:"text_leg"});return}let F=Wl({nodes:I.nodes,budget:I.budget,resumeFailure:A,threadTitle:I.threadTitle,linzumiContext:void 0});return n("linzumi.tui_thread_rehydration_ir_emitted",{codex_thread_id:Ua,linzumi_thread_id:g.kandanThreadId??null,emitted_nodes:F.emittedNodeCount,omitted_nodes:F.omittedNodeCount,redacted_reasoning:F.redactedReasoningCount,emitted_token_estimate:F.emittedTokenEstimate,max_emission_tokens:F.maxEmissionTokens}),F.items},buildRehydrationText:async A=>hh({messages:await cv(Ce,G,x,n),resumeFailure:A})});if(C.mode==="rehydrated"){n("linzumi.tui_thread_rehydrated",{codex_thread_id:Ua,linzumi_thread_id:g.kandanThreadId??null,resume_failure:C.resumeFailure});try{await KY({kandan:Ce,topic:G,workspace:g.workspaceSlug,channel:g.channelSlug,threadId:g.kandanThreadId,provider:"codex",providerSessionId:Ua,resumeFailure:C.resumeFailure})}catch(A){n("linzumi.tui_thread_rehydration_notice_failed",{codex_thread_id:Ua,linzumi_thread_id:g.kandanThreadId??null,message:A instanceof Error?A.message:String(A)})}}}let I6=e.launchTui&&os!==void 0?Z6e(e.codexBin,os,e.cwd,Ua,e.channelSession,e.fast):void 0;I6!==void 0&&t.actions.push(()=>{I6.kill("SIGINT")});let sT=xt===void 0?void 0:WC(xt);if(xt?.onNotification(g=>{JC.value+=1;let x=g.params??{},C=dM(g.method,x);if(g.method==="account/rateLimits/updated"&&e.channelSession?.kandanThreadId!==void 0){let A=zW(x);Ce.push(G,"codex_rate_limit_state",{workspace:e.channelSession.workspaceSlug,channel:e.channelSession.channelSlug,thread_id:e.channelSession.kandanThreadId,agent_provider:"codex",rate_limit_type:"account",status:A.status,utilization_percent:A.utilizationPercent,summary:A.summary}).catch(I=>{n("linzumi.codex_rate_limit_state_push_failed",{thread_id:e.channelSession?.kandanThreadId??null,message:I instanceof Error?I.message:String(I)})})}lr===void 0&&Ce.push(G,"codex_notification",{instanceId:Xe,seq:JC.value,method:g.method,params:x,metadata:C.metadata,receivedAt:new Date().toISOString()}).catch(A=>{n("kandan.codex_notification_push_failed",{message:A instanceof Error?A.message:String(A)})}),n("codex.notification",C),T(g.method,x),sT?.observeNotification(g.method,x),bl.dispatch(X_(),g.method,x)}),sT!==void 0){let g={handled:!1},x=C=>{if(t.closePromise!==void 0)return;p?n("runner.shared_codex_connection_lost_worker_launcher_retained",{runnerId:e.runnerId,cause:C}):h(C,"codex");let A=Cm().catch(I=>{n("linzumi.required_failed_health_heartbeat_push_failed",{message:I instanceof Error?I.message:String(I)})});if(n("codex.app_server_connection_lost",{cause:C}),sT.failActiveTurns(C),ao?.stop(),r6&&!p&&!g.handled){g.handled=!0;let I=E6e(I6e(HX(e.runnerId),ze=>{n("runner.app_server_exit_loop_stamp_write_failed",{message:ze,statePath:HX(e.runnerId)}),console.error(`Warning: could not persist the app-server crash-loop stamp (${ze}); the exit-code-${QD} give-up bound cannot take effect across restarts until the state path is writable.`)}),Date.now()),F=I.crashLoop?QD:75,me=R6e(e.cwd),ke=me===void 0?"":` Likely trigger: ${me}.`;if(I.crashLoop){let ze=e.logFile??Sx();n("runner.app_server_crash_loop_gave_up",{cause:C,exitsInWindow:I.count,windowMs:BY,exitCode:F,cwd_missing_diagnosis:me??null}),console.error(`The Codex app-server has died ${I.count} times in rapid succession (latest cause: ${C}).${ke} Restarting the runner is not fixing it, so this exit uses code ${QD} (instead of the restart-requesting 75) to stop the crash loop. Diagnose before reconnecting: the runner log is at ${ze} and the CLI audit log at ${JT()} (look for the app-server's exit reason/stderr). Once resolved, run \`linzumi connect\` to reconnect.`)}else console.error(`Codex app-server connection was lost (${C}); exiting so a fresh runner can relaunch it.${ke} Run \`linzumi connect\` to reconnect.`);let Ke=[...lr!==void 0?[lr]:[],...nr.values()].map(ze=>ze.close().catch(ot=>{n("codex.app_server_lost_session_drain_failed",{message:ot instanceof Error?ot.message:String(ot)})}));T6e({pushes:[...s6,...Ke],requiredHealthPublication:A,exit:()=>process.exit(F),safetyCapMs:5e3})}};xt?.onClose?.(C=>x(C.message)),ao?.process.once("exit",(C,A)=>x(`codex app-server process exited (${C??A??"unknown"})`))}let npe=g=>{let x=yw(e.kandanUrl),C=g.cwd!==void 0&&g.cwd.trim()!==""?g.cwd:e.cwd;if(i4e(C)){let I=`cwd_dangerous: golden build refused - resolved build cwd ${JSON.stringify(C)} is not a safe project directory (empty, filesystem root, or non-absolute). Re-run from the project's repository checkout.`;return n("vm.golden_build_failed",{runnerId:e.runnerId,goldenImagePublicId:g.goldenImagePublicId,projectPublicId:g.projectPublicId??null,computeKey:x,cwdDangerous:!0,failureReason:I}),Ce.push(G,"golden_image_build_result",{golden_image_public_id:g.goldenImagePublicId,build_claim_token:g.buildClaimToken,project_public_id:g.projectPublicId??null,status:"failed",checksum:null,size_bytes:null,artifact_ref:null,source_commits:{},lockfile_hashes:{},toolchain_versions:{},compute_key:x,failure_reason:I})}n("vm.golden_build_started",{runnerId:e.runnerId,goldenImagePublicId:g.goldenImagePublicId,projectPublicId:g.projectPublicId??null,computeKey:x,sourceThreadId:g.sourceThreadId??null,cwd:C});try{N7(EA({projectPublicId:g.projectPublicId??void 0,computeKey:x,cwd:C}))}catch(I){n("vm.golden_build_register_failed",{goldenImagePublicId:g.goldenImagePublicId,message:I instanceof Error?I.message:String(I)})}let A=g.sourceThreadId===void 0?void 0:{threadId:g.sourceThreadId,sourceMachineName:Qv({cwd:C,kandanThreadId:g.sourceThreadId})};return MV({cwd:C,projectPublicId:g.projectPublicId??void 0,computeKey:x,name:g.name,...A===void 0?{}:{sourceThread:A},log:I=>n("vm.golden_build",{line:I})}).then(I=>(n("vm.golden_build_ready",{runnerId:e.runnerId,goldenImagePublicId:g.goldenImagePublicId,checksum:I.checksum,sizeBytes:I.sizeBytes,artifactRef:I.artifactRef,artifactKind:I.artifactKind,snapshotFallbackReason:I.snapshotFallbackReason??null}),Ce.push(G,"golden_image_build_result",{golden_image_public_id:g.goldenImagePublicId,build_claim_token:g.buildClaimToken,project_public_id:g.projectPublicId??null,status:"ready",checksum:I.checksum,size_bytes:I.sizeBytes,artifact_ref:I.artifactRef,artifact_kind:I.artifactKind,source_commits:I.sourceCommits,lockfile_hashes:I.lockfileHashes,toolchain_versions:I.toolchainVersions,compute_key:x,failure_reason:null,metadata:I.snapshotFallbackReason===void 0?{}:{snapshot_fallback_reason:I.snapshotFallbackReason}}))).catch(I=>{let F=I instanceof qp||I instanceof Error?I.message:String(I);return n("vm.golden_build_failed",{runnerId:e.runnerId,goldenImagePublicId:g.goldenImagePublicId,captureUnavailable:I instanceof qp,failureReason:F}),Ce.push(G,"golden_image_build_result",{golden_image_public_id:g.goldenImagePublicId,build_claim_token:g.buildClaimToken,project_public_id:g.projectPublicId??null,status:"failed",checksum:null,size_bytes:null,artifact_ref:null,source_commits:{},lockfile_hashes:{},toolchain_versions:{},compute_key:x,failure_reason:F})}).catch(I=>{throw n("vm.golden_build_result_push_failed",{goldenImagePublicId:g.goldenImagePublicId,message:I instanceof Error?I.message:String(I)}),I})},aT=new WeakSet,R6=async(g,x,C)=>{let A=xt!==void 0&&e.channelSession===void 0&&e.threadProcess?.role!=="thread",I=g&&A&&Ys.value.type==="pending";switch(g){case!1:bm.value=[],Ys.value={type:"pending"};break;case!0:switch(A){case!1:break;case!0:{if(xt===void 0)throw new Error("multi-agent history discovery requires a Codex app server");switch(Ys.value.type){case"complete":break;case"discovering":await Ys.value.request;return;case"pending":{let F=ZX(xt),me={type:"discovering",request:F};Ys.value=me;try{let ke=await F;switch(Ys.value===me&&Dr.value){case!0:bm.value=ke,Ys.value={type:"complete"};break;case!1:return}}catch(ke){throw Ys.value===me&&(Ys.value={type:"pending"}),ke}break}}break}}break}switch(C||I){case!1:return;case!0:n("runner.multi_agent_jobs_authority_changed",{source:x,workspace:Kn(e)??null,enabled:g}),await Xo();return}},E6=async(g,x,C)=>{if(C.type==="after_control_replay")return R6(g,x,C.authorityChangedBeforeReplay);let A=Dr.value;if(A!==g){let I=Array.from(_n.entries()).filter(([,ke])=>ke.multiAgentJobs?.eligible===!0&&ke.multiAgentJobs.configured!==g),F=[],me=!1;try{for(let[ke,Ke]of I)if(_n.get(ke)===Ke){switch(_n.delete(ke),n("runner.multi_agent_jobs_worker_rebind_started",{source:x,workspace:Kn(e)??null,kandanThreadId:ke,previous_enabled:Ke.multiAgentJobs?.configured??null,enabled:g}),Ke.kind){case"running":try{await Ke.handle.close()}catch(ze){throw me=!0,_n.has(ke)||_n.set(ke,Ke),n("runner.multi_agent_jobs_worker_rebind_failed",{source:x,workspace:Kn(e)??null,kandanThreadId:ke,enabled:g,message:ze instanceof Error?ze.message:String(ze)}),ze}break;case"starting":{let ze=await Ke.promise.catch(ot=>{throw n("runner.multi_agent_jobs_worker_rebind_failed",{source:x,workspace:Kn(e)??null,kandanThreadId:ke,enabled:g,message:ot instanceof Error?ot.message:String(ot)}),ot});try{await ze.close()}catch(ot){throw me=!0,_n.has(ke)||_n.set(ke,Ke),n("runner.multi_agent_jobs_worker_rebind_failed",{source:x,workspace:Kn(e)??null,kandanThreadId:ke,enabled:g,message:ot instanceof Error?ot.message:String(ot)}),ot}break}}F.push(ke),n("runner.multi_agent_jobs_worker_rebind_completed",{source:x,workspace:Kn(e)??null,kandanThreadId:ke,enabled:g})}}catch(ke){switch(F.length>0){case!1:{if(!me)throw ke;let Ke=Ce.forceReconnect?.("multi_agent_jobs_zero_completed_authority_rebind_failed")??!1;switch(Ke){case!0:{let ze=typeof ke=="object"&&ke!==null?ke:new Error(String(ke));throw aT.add(ze),n("runner.multi_agent_jobs_zero_completed_rebind_resync_requested",{runner_id:e.runnerId,source:x,workspace:Kn(e)??null,enabled:g,method:"force_reconnect"}),ze}case!1:throw n("runner.multi_agent_jobs_zero_completed_rebind_resync_failed",{runner_id:e.runnerId,source:x,workspace:Kn(e)??null,enabled:g,force_reconnect_initiated:Ke,message:ke instanceof Error?ke.message:String(ke)}),ke}}case!0:{let Ke=Ce.forceReconnect?.("multi_agent_jobs_partial_authority_rebind_failed")??!1;switch(Ke){case!0:{let ze=typeof ke=="object"&&ke!==null?ke:new Error(String(ke));throw aT.add(ze),n("runner.multi_agent_jobs_partial_rebind_resync_requested",{runner_id:e.runnerId,source:x,workspace:Kn(e)??null,enabled:g,completed_worker_rebinds:F,method:"force_reconnect"}),ze}case!1:throw n("runner.multi_agent_jobs_partial_rebind_resync_failed",{runner_id:e.runnerId,source:x,workspace:Kn(e)??null,enabled:g,completed_worker_rebinds:F,force_reconnect_initiated:Ke,message:ke instanceof Error?ke.message:String(ke)}),ke}}}}}if(Dr.value=g,bl.setEnabled(g),C.type!=="before_control_replay")return R6(g,x,A!==g)},A6=(g,x)=>eT(async()=>{if(_m.value===g)return;let A=[];for(let[I,F]of Array.from(_n.entries()))if(!(F.documentSurfaces?.eligible!==!0||F.documentSurfaces.configured===g)&&_n.get(I)===F){_n.delete(I);try{await lc(F)}catch(me){_n.has(I)||_n.set(I,F),n("runner.document_surfaces_worker_rebind_failed",{source:x,workspace:Kn(e)??null,kandanThreadId:I,enabled:g,message:me instanceof Error?me.message:String(me)});let ke=Ce.forceReconnect?.(A.length===0?"document_surfaces_zero_completed_authority_rebind_failed":"document_surfaces_partial_authority_rebind_failed")??!1;throw n("runner.document_surfaces_rebind_resync_requested",{source:x,workspace:Kn(e)??null,enabled:g,completed_worker_rebinds:A,force_reconnect_initiated:ke}),me}A.push(I),n("runner.document_surfaces_worker_rebind_completed",{source:x,workspace:Kn(e)??null,kandanThreadId:I,enabled:g})}_m.value=g,await Xo()}),dT=(g,x,C={type:"full"})=>{switch(C.type){case"after_control_replay":return E6(g,x,C);case"full":case"before_control_replay":return eT(()=>E6(g,x,C))}},M6=(g,x)=>{try{let C=ty(g);return dT(C,"rejoin",x.type==="reconnect_notification"?{type:"after_control_replay",authorityChangedBeforeReplay:x.authorityChangedBeforeReplay}:{type:"before_control_replay"}).catch(A=>{if(n("runner.multi_agent_jobs_rejoin_apply_failed",{runner_id:e.runnerId,workspace:Kn(e)??null,enabled:C,phase:x.type,message:A instanceof Error?A.message:String(A)}),x.type==="before_control_replay")throw A;switch(typeof A=="object"&&A!==null&&aT.has(A)){case!0:return;case!1:break}let I=Ce.forceReconnect?.("multi_agent_jobs_rejoin_authority_apply_failed")??!1;switch(I){case!0:n("runner.multi_agent_jobs_rejoin_resync_requested",{runner_id:e.runnerId,workspace:Kn(e)??null,enabled:C,method:"force_reconnect"});return;case!1:{let F=new Error(`multi-agent authority rejoin resync could not start for runner ${e.runnerId}`);throw n("runner.multi_agent_jobs_rejoin_resync_failed",{runner_id:e.runnerId,workspace:Kn(e)??null,enabled:C,force_reconnect_initiated:I,message:F.message}),F}}})}catch(C){throw n("runner.multi_agent_jobs_rejoin_invalid",{runner_id:e.runnerId,workspace:Kn(e)??null,phase:x.type,message:C instanceof Error?C.message:String(C)}),C}},uT={value:void 0};GL.value=g=>{let x=ty(g),C=Dr.value!==x;return A6(YD(g),"rejoin").then(()=>M6(g,{type:"before_control_replay"})?.then(()=>{uT.value={enabled:x,changed:C}}))},Ce.onReconnect(g=>(()=>{let x=uT.value,C=g.get(G),A=ty(C);if(x===void 0||x.enabled!==A){let I=`missing matching pre-replay multi-agent authority for rejoin enabled=${String(A)}`;throw n("runner.multi_agent_jobs_rejoin_pre_replay_missing",{runner_id:e.runnerId,workspace:Kn(e)??null,enabled:A,applied_enabled:x?.enabled??null,message:I}),new Error(I)}return uT.value=void 0,M6(C,{type:"reconnect_notification",authorityChangedBeforeReplay:x.changed})})());let rx=FC.value;FC.value=void 0,rx!==void 0&&(bl.setEnabled(rx.enabled),await dT(rx.enabled,"rejoin",{type:"after_control_replay",authorityChangedBeforeReplay:rx.changed}));let cT=new Map,tpe=g=>{let x=w6e(g);if(n("kandan.control",{control:x}),a?.record("kandan","control.received",{controlType:g.type,control:x}),g.type==="coding_account_credential"){cT.set(g.grantId,g);return}if((g.type==="start_instance"||g.type==="reconnect_thread")&&g.codingAccount!==void 0){let I=cT.get(g.codingAccount.grantId);if(I===void 0||I.accountId!==g.codingAccount.accountId||I.generation!==g.codingAccount.generation)return Promise.reject(new Error("coding account credential reply missing or mismatched"));cT.delete(g.codingAccount.grantId),g={...g,codingAccount:{...g.codingAccount,credential:I.credential}}}if(!g6e(e,g)&&!y6e(e,g,vl)&&!_6e(e,g,lr,nr,au)){let I=xo(g)??null,F=e.threadProcess?.kandanThreadId??null;n("kandan.control_ignored",{reason:"thread_process_mismatch",controlType:g.type,controlThreadId:I,threadProcessId:F}),a?.record("kandan","control.ignored",{reason:"thread_process_mismatch",controlType:g.type,controlThreadId:I,threadProcessId:F});return}switch(g.type){case"start_instance":case"reconnect_thread":{let I=of(g);if(I.type==="ok"&&!f.canClaimWork(I.provider))return k6(g,I.provider);break}case"start_turn":{let I=xNe(vr,g.threadId);if(!f.canClaimWork(I))return k6(g,I);break}}if(g.type==="authorize_coding_account")return v6e(g,{codexBin:e.codexBin,push:(I,F)=>Ce.push(G,I,F)}).catch(async()=>{await Ce.push(G,"coding_account_authorization_state",{attemptId:g.attemptId,status:"failed",reason:"authorization_runner_failure"})});if(g.type==="replace_runner"){n("runner.replaced",{runnerId:e.runnerId,reason:g.reason,replacementRunnerId:g.replacementRunnerId,replacementVersion:g.replacementVersion}),r().catch(I=>{n("runner.replace_close_failed",{message:I instanceof Error?I.message:String(I)})});return}if(g.type==="update_available"){iT.handleUpdateAvailable(g);return}if(g.type==="stop_process")return n("runner.stop_process_control",{kandanThreadId:g.threadId}),c6(g.threadId,"manual");if(g.type==="set_commander_impl"){let I=g.impl,F=I==="ts"||I==="rescript"?I:void 0;if(F===void 0){n("runner.commander_impl_control_ignored",{impl:typeof I=="string"?I:null,reason:"unknown_impl_value"});return}let me=FY(F),ke=F!==m1,Ke=process.env.LINZUMI_SUPERVISED==="1"&&process.platform!=="win32";if(n("runner.commander_impl_persisted",{impl:F,persisted:me,runningImpl:m1,restart:ke?Ke?"graceful_drain":"deferred_to_next_launch":"not_needed"}),ke&&Ke)try{process.kill(process.pid,"SIGUSR2")}catch(ze){n("runner.commander_impl_restart_failed",{message:ze instanceof Error?ze.message:String(ze)})}return}let C=b6e(g);if(C!==void 0)return npe(C);if(!p6e(g,Xe)){n("kandan.control_ignored",{reason:"instance_id_mismatch",instanceId:Xe,controlInstanceId:f6e(g),controlType:g.type});return}if(nG(g)){eG(g,Array.from(ge)).then(I=>(n("kandan.forward_response",{requestId:g.requestId,port:g.port,path:g.path,status:I.status,ok:I.ok,location:X6e(I.headers,"location")}),Ce.push(G,"forward:http_response",I))).catch(I=>Ce.push(G,"forward:http_response",{requestId:g.requestId,ok:!1,error:I instanceof Error?I.message:String(I)})).catch(I=>{n("kandan.forward_response_push_failed",{message:I instanceof Error?I.message:String(I)})});return}if(tG(g)){P6.handle(g);return}if(uG(g)){lG(g,{codeServerBin:e.codeServerBin,editorRuntime:e.editorRuntime,allowedCwds:he.value,currentState:Ue.value,browserBaseUrl:g.browserBaseUrl??process.env.KANDAN_LOCAL_RUNNER_PUBLIC_BASE_URL,runnerId:e.runnerId,platform:e.localEditorPlatform}).then(I=>{if(I.ok){Qe.value+=1;let F=Qe.value,me=Ue.value.status==="running"?[Ue.value.port,...Ue.value.collaboration===void 0?[]:[Ue.value.collaboration.serverPort],...YL("editor_restarted")]:[];Ue.value.status==="running"&&(ge.delete(Ue.value.port),ie.delete(Ue.value.port),Ue.value.collaboration!==void 0&&(ge.delete(Ue.value.collaboration.serverPort),ie.delete(Ue.value.collaboration.serverPort))),Ue.value=I.state,ge.add(I.event.port),ie.add(I.event.port),I.event.collaboration!==void 0&&(ge.add(I.event.collaboration.serverPort),ie.add(I.event.collaboration.serverPort));let ke=Ce.push(G,"local_editor_status",{instanceId:Xe,requestId:g.requestId,ok:!0,capabilities:{...q(),...me.length===0?{}:{revokedPorts:me}},...I.event});return I.state.status==="running"&&(Cle(I.state),Ile(I.state,F,ke)),ke}return Ue.value=I.state,Ce.push(G,"local_editor_status",{instanceId:Xe,requestId:g.requestId,ok:!1,reason:I.reason,capabilities:q()})}).catch(I=>Ce.push(G,"local_editor_status",{instanceId:Xe,requestId:g.requestId,ok:!1,reason:Dh(I),capabilities:q()})).catch(I=>{n("kandan.local_editor_status_push_failed",{message:I instanceof Error?I.message:String(I)})});return}if(y4e(g)){let I=Kn(e),F=y(g.workspace)?.trim();if(I===void 0||F===void 0||F===""||F!==I){n("runner.multi_agent_jobs_state_invalid",{runner_id:e.runnerId,expected_workspace:I??null,control_workspace:F??null,enabled:g.enabled??null});return}return typeof g.enabled!="boolean"?(n("runner.multi_agent_jobs_state_invalid",{runner_id:e.runnerId,expected_workspace:I,control_workspace:F,enabled:g.enabled??null}),Promise.reject(new Error(`multi_agent_jobs_state enabled must be boolean for workspace ${I}`))):dT(g.enabled,"control")}if(_4e(g)){let I=Kn(e),F=y(g.workspace)?.trim();if(I===void 0||F===void 0||F===""||F!==I){n("runner.document_surfaces_state_invalid",{runner_id:e.runnerId,expected_workspace:I??null,control_workspace:F??null,enabled:g.enabled??null});return}return typeof g.enabled!="boolean"?(n("runner.document_surfaces_state_invalid",{runner_id:e.runnerId,expected_workspace:I,control_workspace:F,enabled:g.enabled??null}),Promise.reject(new Error(`document_surfaces_state enabled must be boolean for workspace ${I}`))):A6(g.enabled,"control")}if(g4e(g)){ue({allowedCwds:g.allowedCwds,configVersion:g.configVersion??null},{includeStartupAllowedCwds:!0,source:"control"}),Xo();return}if(x4e(g)){let I=E5(g);n("runner.fleet_breaker_state",{source:"control",outcome:I.outcome,state:I.snapshot?.state??null,fate:I.snapshot?.fate??null,version:I.snapshot?.version??null});return}if(b4e(g)){let I=A5(g);n("runner.route_outage_state",{source:"control",outcome:I.outcome,routes:I.snapshot===void 0?null:I.snapshot.routes.length,version:I.snapshot?.version??null});return}if(v4e(g)){let I=u.applyServerDefault(g);n("runner.stream_idle_timeout_default",{source:"control",outcome:I.outcome,changed:I.changed,effectiveMs:u.effectiveMs(),effectiveSource:u.effectiveSource()}),I.changed&&Xo();return}if(S4e(g)){let I=kle(g);if(I!==void 0){Ce.push(G,"codex_response",I).catch(me=>{n("kandan.control_response_push_failed",{message:me instanceof Error?me.message:String(me)})});return}let F=Ple(g);if(F!==void 0){Ce.push(G,"codex_response",F).catch(me=>{n("kandan.control_response_push_failed",{message:me instanceof Error?me.message:String(me)})});return}}if(w4e(g)){switch(g.enabled){case!0:ge.add(g.port);break;case!1:ge.delete(g.port),ie.delete(g.port),$(g.port),Se.approvedPorts.delete(g.port),Se.approvedTargets.delete(g.port),Ce.push(G,"forward_port_revoked",{instanceId:Xe,port:g.port,reason:"user_disabled",capabilities:nd(q(),g.port)}).catch(I=>{n("kandan.forward_port_revoked_push_failed",{message:I instanceof Error?I.message:String(I)})});break}Xo();return}if(g.type==="import_onboarding_conversations")return $ze(e,n,g).catch(I=>{throw n("onboarding.conversation_import_failed",{runnerId:e.runnerId,message:I instanceof Error?I.message:String(I)}),I});if(g.type==="scan_onboarding_projects"){let I=Lze(g.paths);return cee(e,n,{workspaceSlug:y(g.workspace),selectedScanRoots:I,sourceRoots:I,workerId:"projects-selected-folders",workerLabel:"Selected folders",startingMessage:"Checking selected folders",emptyMessage:"No Git projects found in selected folders",foundMessage:"Selected folder projects found",failedMessage:"Selected folder project scan failed",currentPlace:I[0]??e.cwd,deadlineAt:y(g.deadline_at),requireTerminalStatusWrite:!0,includeRuntimeCwdHint:!1}).catch(F=>{throw n("onboarding.project_scan_failed",{runnerId:e.runnerId,message:F instanceof Error?F.message:String(F)}),F})}if(g.type==="start_instance"){if(XLe(g,F=>Be.list().some(me=>me.kandanThreadId===F)))return V_+=1,n("kandan.start_instance_skipped_known_session",{threadId:xo(g)??null,controlSeq:g.control_seq??null,issuedAt:iy(g)??null,reason:"thread_already_has_known_session",skippedStaleStartInstances:V_}),Ce.push(G,"codex_response",{instanceId:Xe,controlType:g.type,threadId:xo(g)??null,ok:!1,skipped:!0,error:"start_instance_thread_already_has_session",issuedAt:iy(g)??null}).catch(F=>{n("kandan.control_response_push_failed",{message:F instanceof Error?F.message:String(F)})});let I=QLe(g,Date.now());if(I!==void 0)return V_+=1,n("kandan.start_instance_stale_skipped",{threadId:xo(g)??null,controlSeq:g.control_seq??null,issuedAt:iy(g)??null,ageMs:I,staleWindowMs:jY,skippedStaleStartInstances:V_}),Ce.push(G,"codex_response",{instanceId:Xe,controlType:g.type,threadId:xo(g)??null,ok:!1,skipped:!0,error:"stale_start_instance",issuedAt:iy(g)??null,ageMs:I}).catch(F=>{n("kandan.control_response_push_failed",{message:F instanceof Error?F.message:String(F)})})}let A;if(g.type==="start_turn"){let I=g.control_seq;if(I!==void 0){let F=ZLe(G,g.threadId),me=nn.initial(F);if(YLe(me,I))return VL+=1,n("kandan.start_turn_replay_skipped",{controlType:g.type,threadId:g.threadId,controlSeq:I,appliedControlSeq:me,skippedReplayedStartTurns:VL}),{instanceId:Xe,controlType:g.type,threadId:g.threadId,skipped:!0};A=()=>e6e(nn,F,I)}}return n6e(()=>{if(J_&&(g.type==="start_instance"||g.type==="reconnect_thread")){let I=bn(g,"threadId"),F=g.type==="reconnect_thread"?bo(g.codexThreadId):void 0,me=I!==void 0?_n.get(I):void 0,ke=g.type==="reconnect_thread"&&(F!==void 0&&vr.has(F)||me!==void 0&&ry(me)!=="dead");if(g.type==="start_instance"||g.type==="reconnect_thread"&&!ke)return Wle(g).then(ze=>{if(ze)return{instanceId:Xe,controlType:g.type,threadId:I??null,held:!0,reason:"runner_updating_queued"};throw n("runner.update_restart_drain_start_refused",{control_type:g.type,thread_id:I??null}),new Error(ED)})}return k6e(lr,nr,au,g,qC).then(I=>I!==void 0?I:e1(xt,Ce,G,Xe,e,R(),pe,he,Ze,xe,vr,vm,vl,BC,Q_,g,KC,a,YC,Sd(e)?Nle:void 0,s?.playCodex,F=>Zs.current(F),ou,iu,Na,ns,v6,a6,GC,(F,me)=>{qC.set(F,me)}))},A).then(async I=>{let F=g.type==="compact_thread"&&I.compactTerminalFallbackRequired===!0,me=qC.get(I);try{let ke=await Ce.push(G,"codex_response",I);if(!F)return ke;let Ke=S6e(ke);switch(Ke.type){case"durable":{let ze=y(I.requestId)?.trim();if(ze===void 0||ze===""||me===void 0||!me.acknowledgeCompactTerminalFallback(ze,Ke.durability))throw new Error("compact fallback durability acknowledgement had no matching owning session");return ke}case"invalid":throw new Error(Ke.reason)}}catch(ke){throw F&&(await me?.close(),await Ce.close()),ke}}).catch(async I=>((g.type==="start_instance"||g.type==="reconnect_thread")&&(vY(I)||sE(I)||AD(I))&&await S6(g,I),Ce.push(G,"codex_error",{instanceId:Xe,message:Dh(I)}))).catch(I=>{n("kandan.control_response_push_failed",{message:I instanceof Error?I.message:String(I)})})},rpe=E9({store:R9(P9(uf(),e.runnerId),g=>n("runner.control_quarantine_state_write_failed",{message:g})),quarantineFilePath:I9(uf(),e.runnerId),currentEpoch:()=>gm.current(G),log:n,emitRunnerEvent:g=>{Ce.push(G,"runner.control_quarantined",g).catch(x=>{n("runner.control_quarantined_event_push_failed",{message:x instanceof Error?x.message:String(x)})})}}),D6=(g,x)=>{r6e(g.type,()=>tpe(g),x,n,C=>rpe.onControlRejected(g,C))},ox=d===void 0?void 0:vH({runtime:d,threadIdOf:g=>xo(g),controlTypeOf:g=>g.type,dispatch:D6,log:n});d!==void 0&&ox!==void 0&&(d.hooks.onOverlapDrain=g=>{let x=[...new Set(i.inFlightTurns().map(A=>A.threadId).filter(A=>A!==""))];d.beginOutgoingDrain(x);let C=d.sendToSupervisor({type:"generation_pin_snapshot",epoch:d.epoch,threadIds:x});n("runner.generation_outgoing_drain_started",{incomingEpoch:g,pinned:x.length,threadIds:x,snapshotDelivered:C}),d.requestUpdateDrain("generation_overlap")},d.hooks.onOverlapAbort=()=>{let g=d.cancelUpdateDrain("generation_overlap_abort"),x=ox.redispatchDeferredToIncoming();n("runner.generation_overlap_abort_applied",{drainCancelled:g,redispatched:x})},d.hooks.onPinsReleased=()=>{ox.dispatchUnpinned()},d.hooks.onPromote=()=>{let C;t.actions.push(()=>{C!==void 0&&(clearTimeout(C),C=void 0)});let A=I=>{if(C=void 0,d.promoteRunnerLock()){n("runner.generation_lock_promoted",{attempt:I});return}if(I>=10){n("runner.generation_lock_promote_gave_up",{attempts:I});return}C=setTimeout(()=>A(I+1),5e3),C.unref()};A(1)});let lT=xt?.isClosed?.()===!0,ope=lT&&!p?h("codex app-server websocket closed before runner startup completed","codex"):void 0;if(lT&&p&&n("runner.shared_codex_closed_worker_launcher_retained",{runnerId:e.runnerId,reason:"codex app-server websocket closed before runner startup completed"}),(!lT||p)&&(xt!==void 0||p)&&f.markReady("codex"),D.value!=="logged_in"&&h(r1("startup",D.value,e.claudeCodeAuthProbeDetail),"claude-code"),D.value==="logged_in"&&f.markReady("claude-code"),!f.canClaimWork()){let g=ope??t6.reason??h("no Codex app-server, Codex thread-worker launcher, or ready Claude Code harness is available",e.agentReplay?.provider==="claude-code"?"claude-code":"codex");try{let x=await cNe(f,ym,C=>Cm(C));n("runner.terminal_startup_failure_published",{runnerId:e.runnerId,pendingReplayTurnControlSeqs:x})}catch(x){throw n("runner.terminal_startup_failure_publish_failed",{runnerId:e.runnerId,message:x instanceof Error?x.message:String(x)}),x}throw new Error(`runner execution readiness failed: ${g}`)}let O6=()=>OLe(e4e(e,he.value,Pe.value,dn.value),n,ym,WL,ox?.dispatch??D6,async()=>{await j(),await H(),D.value==="probe_failed"&&await te()});if(d===void 0)O6(),await Cm();else{let g=await lNe({health:f,activateDispatch:O6,publishReadyHealth:Cm,signalGenerationReady:()=>d.sendToSupervisor({type:"generation_ready",epoch:d.epoch})});n("runner.generation_ready_sent",{epoch:d.epoch,delivered:g.delivered})}return n("runner.execution_health_ready",{runnerId:e.runnerId,health:f.snapshot()}),{instanceId:Xe,codexUrl:os,close:r,fatal:Re}}function OLe(e,n,t,r,o,i){let s=()=>{r.value=o,t.splice(0).forEach(({control:d,ack:u})=>o(d,u)),Mze(e,n,i)};switch(b1(e,n).hasPending()){case!1:s();return;case!0:$Y(e,n,"startup").then(s).catch(d=>{n("onboarding.terminal_status_outbox_startup_drain_failed",{runner_id:e.runnerId,file_path:DY(e),message:d instanceof Error?d.message:String(d)})});return}}function WD(e,n,t){Sa(Is(e.filePath),{recursive:!0});let r;try{r=qLe()(e.filePath,{lockfilePath:`${e.filePath}.write-lock`,realpath:!1,retries:0,stale:1e4,update:5e3,onCompromised:o=>{throw e.log("onboarding.terminal_status_outbox_lock_compromised",{file_path:e.filePath,operation:n,message:o.message}),o}})}catch(o){throw e.log("onboarding.terminal_status_outbox_lock_acquire_failed",{file_path:e.filePath,operation:n,message:o instanceof Error?o.message:String(o)}),new Error(`failed to acquire onboarding terminal status outbox transaction lock during ${n}`,{cause:o})}try{return t()}finally{try{r()}catch(o){throw e.log("onboarding.terminal_status_outbox_lock_release_failed",{file_path:e.filePath,operation:n,message:o instanceof Error?o.message:String(o)}),new Error(`failed to release onboarding terminal status outbox transaction lock during ${n}`,{cause:o})}}}function FLe(e){let n=e.now??(()=>new Date),t=e.uuid??Cd,r=e.ownerLifetimeId??$Le,o=e.ownerLifetimeId===void 0?process.pid:void 0,i=Fg()&&jM()!==void 0?LM():void 0,s=e.handoffOwnerPid??i,a=()=>jLe(e.filePath,e.log),d=(l,p)=>zLe(e.filePath,l,p,e.log),u=l=>{WD(e,"remove",()=>{let p=a(),f=p.obligations.filter(h=>h.id!==l);if(f.length===p.obligations.length){e.log("onboarding.terminal_status_outbox_already_removed",{file_path:e.filePath,obligation_id:l});return}d(f,"remove")})},c=async(l,p)=>{let f;try{f=await p(l)}catch(h){return e.log("onboarding.terminal_status_outbox_delivery_failed",{file_path:e.filePath,obligation_id:l.id,runner_id:l.runnerId,workspace:l.workspaceSlug,status:l.status,reason:"sender_threw",message:h instanceof Error?h.message:String(h)}),!1}if(!f)return e.log("onboarding.terminal_status_outbox_delivery_failed",{file_path:e.filePath,obligation_id:l.id,runner_id:l.runnerId,workspace:l.workspaceSlug,status:l.status,reason:"sender_returned_false"}),!1;try{u(l.id)}catch(h){return e.log("onboarding.terminal_status_outbox_delivery_commit_failed",{file_path:e.filePath,obligation_id:l.id,runner_id:l.runnerId,workspace:l.workspaceSlug,status:l.status,message:h instanceof Error?h.message:String(h)}),!1}return e.log("onboarding.terminal_status_outbox_delivered",{obligation_id:l.id,runner_id:l.runnerId,workspace:l.workspaceSlug,status:l.status}),!0};return{arm:l=>WD(e,"arm",()=>{let p=a(),f=t(),h={id:f,ownerLifetimeId:r,...o===void 0?{}:{ownerPid:o},deliveryState:"armed",workspaceSlug:l.workspaceSlug,runnerId:l.runnerId,phase:l.phase,status:"failed",placesSearched:0,workerId:l.workerId,...l.workerLabel===void 0?{}:{workerLabel:l.workerLabel},message:l.message,lastError:l.lastError,...l.currentPlace===void 0?{}:{currentPlace:l.currentPlace},...l.currentSource===void 0?{}:{currentSource:l.currentSource},...l.selectedScanRoots===void 0?{}:{selectedScanRoots:l.selectedScanRoots},...l.deadlineAt===void 0?{}:{deadlineAt:l.deadlineAt},metadata:l.metadata??{},armedAt:n().toISOString()};return d([...p.obligations,h],"arm"),e.log("onboarding.terminal_status_outbox_armed",{obligation_id:f,runner_id:l.runnerId,workspace:l.workspaceSlug,worker_id:l.workerId}),f}),settle:async(l,p,f)=>{let h=WD(e,"settle",()=>{let m=a(),_=m.obligations.find(v=>v.id===l);if(_===void 0)throw e.log("onboarding.terminal_status_outbox_settle_missing",{file_path:e.filePath,obligation_id:l}),new Error(`onboarding terminal obligation ${l} is missing`);let b={..._,deliveryState:"settled",status:p.status,placesSearched:p.placesSearched,message:p.message,...p.lastError===void 0?{lastError:void 0}:{lastError:p.lastError},...p.currentPlace===void 0?{currentPlace:void 0}:{currentPlace:p.currentPlace},...p.currentSource===void 0?{currentSource:void 0}:{currentSource:p.currentSource},metadata:p.metadata},k=m.obligations.map(v=>v.id===l?b:v);return d(k,"settle"),b});return c(h,f)},drain:async l=>{let p=a().obligations,f=0;for(let h of p){let m=h.ownerLifetimeId===r&&h.deliveryState==="armed",_=h.ownerPid??s,b=h.ownerPid===void 0&&s!==void 0,k=!1;if(h.ownerLifetimeId!==r&&_!==void 0&&h.deliveryState==="armed")if(e.isPidAlive!==void 0)k=e.isPidAlive(_);else try{process.kill(_,0),k=!0}catch(S){switch(S instanceof Error&&"code"in S?String(S.code):void 0){case"ESRCH":k=!1;break;case"EPERM":k=!0;break;default:k=!0,e.log("onboarding.terminal_status_outbox_owner_liveness_probe_failed",{file_path:e.filePath,obligation_id:h.id,owner_lifetime_id:h.ownerLifetimeId,owner_pid:_,probing_lifetime_id:r,probing_pid:process.pid,owner_source:b?"generation_handoff":"obligation",message:S instanceof Error?S.message:String(S)});break}}if(m||k){e.log("onboarding.terminal_status_outbox_live_obligation_retained",{file_path:e.filePath,obligation_id:h.id,runner_id:h.runnerId,workspace:h.workspaceSlug,owner_lifetime_id:h.ownerLifetimeId,owner_pid:_,probing_lifetime_id:r,probing_pid:process.pid,reason:m?"same_process_lifetime":b?"live_generation_handoff_owner":"live_owner_process"});continue}let v=await c(h,l);f+=v?1:0}return{delivered:f,remaining:a().obligations.length}},hasPending:()=>a().obligations.length>0}}function jLe(e,n){if(!Rd(e))return{version:E0,obligations:[]};try{let t=JSON.parse(Ps(e,"utf8"));if(!X(t)||t.version!==E0)throw new Error("unsupported or malformed outbox envelope");if(!Array.isArray(t.obligations))throw new Error("outbox obligations must be an array");return{version:E0,obligations:t.obligations.map((r,o)=>LLe(r,o))}}catch(t){throw n("onboarding.terminal_status_outbox_read_failed",{file_path:e,message:t instanceof Error?t.message:String(t)}),new Error(`failed to read onboarding terminal status outbox ${e}`,{cause:t})}}function LLe(e,n){if(!X(e))throw new Error(`outbox obligation ${n} must be an object`);let t=vd(e,"id",n),r=ci(e,"ownerLifetimeId",n),o=NLe(e,"ownerPid",n),i=ci(e,"deliveryState",n),s=vd(e,"workspaceSlug",n),a=vd(e,"runnerId",n),d=vd(e,"phase",n),u=vd(e,"status",n),c=e.placesSearched,l=vd(e,"workerId",n),p=vd(e,"message",n),f=vd(e,"armedAt",n);if(d!=="projects")throw new Error(`outbox obligation ${n} has invalid phase ${d}`);if(u!=="completed"&&u!=="failed")throw new Error(`outbox obligation ${n} has invalid status ${u}`);if(i!==void 0&&i!=="armed"&&i!=="settled")throw new Error(`outbox obligation ${n} has invalid deliveryState ${i}`);if(!Number.isSafeInteger(c)||Number(c)<0)throw new Error(`outbox obligation ${n} has invalid placesSearched`);if(!X(e.metadata))throw new Error(`outbox obligation ${n} has invalid metadata`);return{id:t,...r===void 0?{}:{ownerLifetimeId:r},...o===void 0?{}:{ownerPid:o},...i===void 0?{}:{deliveryState:i},workspaceSlug:s,runnerId:a,phase:d,status:u,placesSearched:Number(c),workerId:l,...ci(e,"workerLabel",n)===void 0?{}:{workerLabel:ci(e,"workerLabel",n)},message:p,...ci(e,"lastError",n)===void 0?{}:{lastError:ci(e,"lastError",n)},...ci(e,"currentPlace",n)===void 0?{}:{currentPlace:ci(e,"currentPlace",n)},...ci(e,"currentSource",n)===void 0?{}:{currentSource:ci(e,"currentSource",n)},...KX(e,"selectedScanRoots",n)===void 0?{}:{selectedScanRoots:KX(e,"selectedScanRoots",n)},...ci(e,"deadlineAt",n)===void 0?{}:{deadlineAt:ci(e,"deadlineAt",n)},metadata:e.metadata,armedAt:f}}function vd(e,n,t){let r=e[n];if(typeof r!="string"||r==="")throw new Error(`outbox obligation ${t} has invalid ${n}`);return r}function ci(e,n,t){let r=e[n];if(r!==void 0){if(typeof r!="string"||r==="")throw new Error(`outbox obligation ${t} has invalid ${n}`);return r}}function KX(e,n,t){let r=e[n];if(r!==void 0){if(!Array.isArray(r)||r.some(o=>typeof o!="string"||o===""))throw new Error(`outbox obligation ${t} has invalid ${n}`);return r}}function NLe(e,n,t){let r=e[n];if(r!==void 0){if(!Number.isSafeInteger(r)||Number(r)<=0)throw new Error(`outbox obligation ${t} has invalid ${n}`);return Number(r)}}function zLe(e,n,t,r){let o=Is(e),i=`${e}.tmp.${process.pid}.${Cd()}`;try{Sa(o,{recursive:!0});let s=F0(i,"wx",384);try{df(s,`${JSON.stringify({version:E0,obligations:n})}
|
|
1670
|
+
${t}`.toLowerCase();return r.includes("not logged in")||r.includes("not authenticated")||r.includes("login required")||r.includes("please log in")?"not_logged_in":e===0?"logged_in":"probe_failed"}function VD(e,n){let t=e==="logged_in"&&n.status==="probe_failed"&&n.transient;return{status:t?e:n.status,downgradeSkipped:t}}function ILe(e,n){return e===void 0?{posture:void 0,cleared:!1}:n.type==="readable"&&!AE(n,e.realAuthFingerprintAtBurn)?{posture:void 0,cleared:!0}:{posture:e,cleared:!1}}function RLe(e,n){return n===void 0?e:"not_logged_in"}function JX(e,n,t){switch(n.authMode){case"api_key":return e;case"oauth":return t==="logged_in"?e:"Not signed in";case"none":return"Not signed in"}}function ELe(e,n){return e==="ENOENT"?n?{status:"binary_missing",transient:!1}:{status:"probe_failed",transient:!0}:{status:"probe_failed",transient:vM(e)}}function ALe(e,n){return new Promise(t=>{let r=[],o=[],i=!1,s,a=u=>{i||(i=!0,s!==void 0&&clearTimeout(s),t(u))},d=fy(e,["login","status"],{cwd:n,env:process.env,stdio:["ignore","pipe","pipe"]});s=setTimeout(()=>{d.kill("SIGTERM"),a({status:"probe_failed",transient:!0})},vLe),d.stdout?.on("data",u=>{r.push(u)}),d.stderr?.on("data",u=>{o.push(u)}),d.once("error",u=>{a(ELe(u.code,Rd(n)))}),d.once("exit",u=>{a({status:PLe(u,Buffer.concat(r).toString("utf8"),Buffer.concat(o).toString("utf8")),transient:u===null})})})}async function MLe(e){switch((await e.retryPendingSettlement()).type){case"settled":return{type:"duplicate",reason:"settled"};case"still_pending":return{type:"duplicate",reason:"still_pending"};case"not_pending":break}return e.sourceSeqAlreadyApplied()?{type:"duplicate",reason:"already_applied"}:{type:"route"}}async function DLe(e,n,t,r,o,i,s,a,d,u,c){let l=wNe(e),p=Sd(e),f=uNe(),h=(g,x)=>{let C=f.snapshot(),A=C.status==="starting"?void 0:C.status==="failed"&&C.adapter===x?C.reason:C.failures?.find(me=>me.adapter===x)?.reason;if(A!==void 0)return A;let I=g instanceof Error?g.message:String(g),F=cf(I.trim()===""?"execution leg failed without a reason":I,480);return f.markFailed(F,x),n("runner.execution_health_failed",{runnerId:e.runnerId,adapter:x,reason:F}),pr({severity:"error",key:`runner.execution_health_failed:${x}`,message:`This runner is connected but cannot run ${x} jobs: ${F}. It will refuse new work instead of pretending to accept it.`}),F},m={value:e.dependencyStatus},_=()=>(e.codexAuthStatusProbe??ALe)(e.codexBin,e.cwd),b=pg(),k=await _(),v={value:k.status},S={value:void 0},T=(g,x)=>{if(S.value!==void 0)return;let C=l7(g,x);if(C===void 0)return;let A={kind:C,realAuthFingerprintAtBurn:pg(),detectedAt:new Date().toISOString()};S.value=A,n("runner.codex_auth_refresh_burned",{runnerId:e.runnerId,burn_kind:C,consequence:"native OpenAI codex sessions cannot refresh; broadcasting codex_auth_status=not_logged_in until re-login",action:"run `codex login` on this machine",runner_console:{session_account_summary:JX(EE(),Ju(),"not_logged_in")}}),pr({severity:"error",key:"runner.codex_auth_refresh_burned",message:`Your codex ChatGPT login can no longer refresh (${C.replace(/_/g," ")}). Native OpenAI coding jobs on this machine will fail until you run \`codex login\` again; Linzumi will detect the new login automatically.`})},P=()=>{if(S.value===void 0)return;let g=ILe(S.value,pg());g.cleared&&(n("runner.codex_auth_reauth_detected",{runnerId:e.runnerId,healed_burn_kind:S.value?.kind??null,burned_at:S.value?.detectedAt??null}),pr({severity:"info",key:"runner.codex_auth_refresh_burned",message:"Codex login restored - native OpenAI coding jobs are available again."})),S.value=g.posture},w=()=>(P(),RLe(v.value,S.value)),D={value:e.claudeCodeAuthStatus??(sY(e).includes("claude-code")?"logged_in":"not_logged_in")};(D.value==="probe_failed"||D.value==="binary_missing")&&n("runner.claude_code_auth_startup_probe_failure",{runnerId:e.runnerId,claude_code_auth_status:D.value,probe_detail:e.claudeCodeAuthProbeDetail??null});let R=()=>sY(e,D.value).filter(g=>f.canClaimWork(g)),O={value:Ju()},z=new Set,Z=g=>{let x=`${g.type}:${g.authPath}`;if(!z.has(x))switch(z.add(x),g.type){case"malformed_id_token":n("runner.openai_id_token_malformed",{path:g.authPath});break;case"malformed_auth_file":n("runner.openai_auth_file_malformed",{path:g.authPath});break;case"unreadable_auth_file":n("runner.openai_auth_file_unreadable",{path:g.authPath});break}},K=()=>{let g=!1,x=Ju();O.value=x;let C=EE(process.env,A=>{g=!0,Z(A)});return g||z.clear(),JX(C,x,w())},re=()=>{let g=Ju();return O.value=g,g.hasValidOpenAiAuth?g.authMode==="api_key"?!0:g.authMode==="oauth"&&S.value===void 0&&v.value==="logged_in":!1};n("runner.codex_auth_status_probed",{runnerId:e.runnerId,codex_auth_status:v.value,has_valid_openai_auth:O.value.hasValidOpenAiAuth,openai_auth_mode:O.value.authMode,runner_console:{session_account_summary:K()}});let j=async()=>{let g=m.value;if(g!==void 0)try{let x=await hd({cwd:e.cwd,codexBin:e.codexBin,codeServerBin:e.codeServerBin,editorRuntime:g.editorRuntime}),C=DG(g,x);m.value=C.status,C.codexDowngradeSkipped&&n("runner.dependency_status_reprobe_downgrade_skipped",{runnerId:e.runnerId,codex_probe_failure:x.codex.failure??null,probe_detail:x.codex.failureDetail??null}),n("runner.dependency_status_reprobed",{runnerId:e.runnerId,codex_available:C.status.codex.available,codex_available_changed:g.codex.available!==C.status.codex.available,probe_detail:x.codex.failureDetail??null})}catch(x){n("runner.dependency_status_reprobe_failed",{runnerId:e.runnerId,message:x instanceof Error?x.message:String(x)})}},H=async()=>{try{let g=await _(),x=v.value,C=VD(x,g);v.value=C.status;let A=O.value.hasValidOpenAiAuth;return O.value=Ju(),C.downgradeSkipped&&n("runner.codex_auth_status_reprobe_downgrade_skipped",{runnerId:e.runnerId,reprobed_status:g.status,has_valid_openai_auth:O.value.hasValidOpenAiAuth}),n("runner.codex_auth_status_reprobed",{runnerId:e.runnerId,codex_auth_status:C.status,codex_auth_status_changed:x!==C.status,has_valid_openai_auth:O.value.hasValidOpenAiAuth,has_valid_openai_auth_changed:A!==O.value.hasValidOpenAiAuth,runner_console:{session_account_summary:K()}}),g.status==="probe_failed"&&g.transient?{type:"retry"}:{type:"settled"}}catch(g){let x=v.value,C=VD(x,{status:"probe_failed",transient:!0});return v.value=C.status,O.value=Ju(),C.downgradeSkipped&&n("runner.codex_auth_status_reprobe_downgrade_skipped",{runnerId:e.runnerId,reprobed_status:"probe_failed",message:g instanceof Error?g.message:String(g),has_valid_openai_auth:O.value.hasValidOpenAiAuth}),n("runner.codex_auth_status_reprobe_failed",{runnerId:e.runnerId,message:g instanceof Error?g.message:String(g),has_valid_openai_auth:O.value.hasValidOpenAiAuth,runner_console:{session_account_summary:K()}}),{type:"retry"}}},ee=p7({initialFingerprint:b,initialRefreshOutcome:k.transient?{type:"retry"}:{type:"settled"},computeFingerprint:pg,refresh:H,reportRejectedRefresh:g=>{n("runner.codex_auth_hint_refresh_rejected",{runnerId:e.runnerId,stage:g.stage,previous_fingerprint_type:g.previousFingerprintType,attempted_fingerprint_type:g.attemptedFingerprintType})}}),te=async(g="background")=>{if(!(e.claudeCodeAuthStatusProbe===void 0&&(e.claudeCodeRunner!==void 0||e.agentReplay!==void 0)))try{let x=await(e.claudeCodeAuthStatusProbe??wp)({cwd:e.cwd,claudeBin:e.claudeCodeBin}),C=D.value,A=g==="dispatch"?{status:x.status,downgradeSkipped:!1}:VD(C,x);switch(D.value=A.status,A.status){case"logged_in":f.markReadyAfterRecovery("claude-code"),C!=="logged_in"&&(n("runner.execution_health_recovered",{runnerId:e.runnerId,adapter:"claude-code",previous_status:C}),aNe());break;case"not_logged_in":case"binary_missing":case"probe_failed":f.markNotReady(r1("reprobe",A.status,x.detail),"claude-code");break}A.downgradeSkipped&&n("runner.claude_code_auth_status_reprobe_downgrade_skipped",{runnerId:e.runnerId,reprobed_status:x.status,probe_detail:x.detail??null}),n("runner.claude_code_auth_status_reprobed",{runnerId:e.runnerId,purpose:g,claude_code_auth_status:A.status,claude_code_auth_status_changed:C!==A.status,probe_detail:x.detail??null,claude_code_executable_fallback:x.fallbackExecutable??null})}catch(x){g==="dispatch"&&(D.value="probe_failed",f.markNotReady(r1("reprobe","probe_failed",x instanceof Error?x.message:String(x)),"claude-code")),n("runner.claude_code_auth_status_reprobe_failed",{runnerId:e.runnerId,purpose:g,message:x instanceof Error?x.message:String(x)})}},pe=async g=>{switch(g){case"claude-code":await te("dispatch");break;case"codex":break}return{agentProviders:R(),hasNativeCodexAuth:re()}},fe=b3({computeFingerprint:()=>x3(process.env,{cwd:e.cwd}),refresh:te,onReprobeStarted:()=>{n("runner.claude_code_auth_hint_changed",{runnerId:e.runnerId,claude_code_auth_status:D.value})}}),Je=e.allowedForwardPorts??[],ge=new Set(Je),ie=new Set,le=h1(e.kandanUrl),Oe=()=>eNe(le,ie),sn=xY(e)?await nze(n):void 0;sn!==void 0&&t.actions.push(()=>sn.close());let He=new Map,an=(g,x)=>{He.set(g,{kandanThreadId:x.kandanThreadId??null,codexThreadId:x.codexThreadId??null,channelSlug:x.channelSlug??null,processName:x.processName??null,processIconKey:x.processIconKey??null,localEditor:x.localEditor===!0,agentProvider:x.agentProvider??null,linzumiCliManaged:x.linzumiCliManaged===!0})},$=g=>{He.delete(g)},V=(g,x={})=>{ge.add(g),ie.add(g),an(g,{processName:x.processName??null,processIconKey:x.processIconKey??null,agentProvider:x.agentProvider??null,linzumiCliManaged:!0})},U=g=>{ie.delete(g),$(g),Je.includes(g)||ge.delete(g)},J=()=>Array.from(ge).sort((g,x)=>g-x).map(g=>{let x=He.get(g);return{port:g,kandanThreadId:x?.kandanThreadId??null,codexThreadId:x?.codexThreadId??null,channelSlug:x?.channelSlug??null,processName:x?.processName??null,processIconKey:x?.processIconKey??null,localEditor:x?.localEditor===!0,agentProvider:x?.agentProvider??null,linzumiCliManaged:x?.linzumiCliManaged===!0||ie.has(g)}}),ye=g=>{let{advertisable:x,rejected:C}=tE(g);for(let A of C)n("runner.non_advertisable_cwd_root_dropped",{root:A.root,reason:A.reason}),pr({severity:"warning",key:`runner.non_advertisable_cwd_root:${A.root}`,message:`not advertising ${JSON.stringify(A.root)} as an allowed working-directory root (${A.reason==="home_root"?"it is your home directory":"it is a filesystem root"}). A catch-all root would let the server route any coding job to this machine. Register explicit project folders instead (connect from a project directory or pass --allowed-cwd).`});return x},ae=ye(gr(e.allowedCwds)),he={value:[...ae]},Ze=e.remoteCodexSandboxRunner??lQ({env:process.env,platform:process.platform}),xe=new Map,Pe={value:gr(e.missingAllowedCwds??[])},dn={value:!1},ne={value:null},ue=(g,x)=>{let C=ne.value;if(g.configVersion!==null&&C!==null&&g.configVersion<C){n("runner.config_sync_stale_skipped",{source:x.source,configVersion:g.configVersion,appliedConfigVersion:C});return}let A=oV(g.allowedCwds,e.kandanUrl),I=A1(A,{createMissing:!0});dn.value=dn.value||n4e(I.allowedCwds,[e.cwd,...ae]),he.value=ye(gr([...x.includeStartupAllowedCwds?ae:[],...I.allowedCwds])),Pe.value=I.missingAllowedCwds,g.configVersion!==null&&(ne.value=g.configVersion),n("runner.config_updated",{source:x.source,configVersion:g.configVersion,allowedCwdCount:he.value.length,missingAllowedCwdCount:Pe.value.length})},$e=(g,x={})=>{let C=k4e(he.value,Pe.value);if(!C.changed)return!1;if(he.value=C.advertised,Pe.value=C.missing,C.dropped.length>0){n("runner.stale_allowed_cwd_roots_deadvertised",{trigger:g,pruned_roots:C.dropped,advertised_root_count:C.advertised.length,...x});for(let A of C.dropped)pr({severity:"warning",key:`runner.allowed_cwd_root_missing:${A}`,message:`allowed working-directory root ${JSON.stringify(A)} no longer exists (deleted, or its disk/volume is unmounted). Not offering it for coding jobs until it is back; remount the volume or restore the folder to resume.`})}if(C.restored.length>0){n("runner.allowed_cwd_roots_readvertised",{trigger:g,restored_roots:C.restored,advertised_root_count:C.advertised.length,...x});for(let A of C.restored)pr({severity:"info",key:`runner.allowed_cwd_root_restored:${A}`,message:`allowed working-directory root ${JSON.stringify(A)} is back; offering it for coding jobs again.`})}return!0},Ue={value:{status:"disabled"}},Qe={value:0},Se={watcher:void 0,approvedPorts:new Set,approvedTargets:new Map,dismissedTargets:new Map,pendingRequests:new Map,queuedCandidates:new Map};t.actions.push(()=>{for(let g of xe.values())g.abort(new Error("local runner stopped"));xe.clear(),Ue.value.status==="running"&&(Ue.value.process.kill("SIGINT"),Ue.value.collaboration?.process.kill("SIGINT")),Se.watcher?.close()});let Cn=()=>Array.from(Se.pendingRequests.values()).sort((g,x)=>g.port-x.port).map(g=>{let x=qi(g.command),C=x?.appName??Mh(Or(g));return{requestId:g.requestId,port:g.port,pid:g.pid,command:g.command,...g.cwd===void 0?{}:{cwd:g.cwd},summary:`Make ${C} on port ${g.port} accessible on Linzumi?`,reason:Ub(Or(g)),...x?.appName===void 0?{}:{processName:x.appName},...x?.iconKey===void 0?{}:{processIconKey:x.iconKey}}}),Xn,$n,Dt=()=>($n===void 0&&($n=(e.localVmReadinessProbe??(()=>FW({workspaceLocalVmExecutionFlag:e.vmExecution===!0})))().then(x=>(Xn=x,x)).catch(x=>{n("vm.local_vm_readiness_probe_failed",{error:x instanceof Error?x.message:String(x)})})),$n),so=()=>(Dt(),Xn),W=()=>({...d===void 0?{}:{generationOverlap:!0},codexAppServer:l,codexRemoteTui:l,codexCollaborationMode:!0,client_message_ids:!0,commander_pipeline:"pipeline",terminal_attempt_v1:!0,agentProviders:R(),modelProviders:[...dd],modelAccountPreflight:F9,codexAuthStatus:w(),...S.value===void 0?{}:{codexAuthReauthRequired:!0,codexAuthReauthReason:S.value.kind},claudeCodeAuthStatus:D.value,hasValidOpenaiAuth:O.value.hasValidOpenAiAuth,openaiAuthMode:O.value.authMode,waferAvailable:!0,defaultAgentProvider:"codex",startInstance:he.value.length>0&&f.canClaimWork(),...f.capabilityFields(),durableClaudeSessionStore:!0,agentSlashCommandCatalog:!0,agentSystemCommands:!0,agentCompact:!0,agentReview:!0,cloneRepository:!0,managedDevServices:!0,claudeCodeCheckpointRewind:!1,steerTurn:!0,[I4]:!0,appliedConfigVersion:ne.value,allowedCwds:he.value,missingAllowedCwds:Pe.value,allowedCwdSuggestions:C4e(e.cwd,he.value),allowedCwdProjects:T4e(he.value),onboardingSelectedFolderScan:!0,portForwarding:ge.size>0,tcpForwarding:!0,linzumiMcp:!0,streamIdleTimeoutMs:u.effectiveMs(),streamIdleTimeoutSource:u.effectiveSource(),localVmExecution:e.vmExecution===!0,...(()=>{let g=so();return g===void 0?{}:{localVmReadiness:g}})(),remoteCodexExecution:Ze!==void 0&&he.value.length>0,remoteCodexExecutionStatus:Ze===void 0?"sandbox_unavailable":he.value.length>0?"ready":"cwd_unavailable",allowedPorts:Array.from(ge).sort((g,x)=>g-x),forwardedPortAttributions:J(),pendingEditorForwardPortRequests:Cn(),toolStatus:m.value===void 0?null:wM(m.value),editorRuntime:m.value?.editorRuntime===void 0?null:wM(m.value).editorRuntime,...cG(e.editorRuntime,he.value,Ue.value)}),q=()=>($e("capabilities_payload"),W()),L=HD(KLe(e.runnerId),n),Q=d===void 0?L:wH(L,()=>d.outgoingDrainActive());t.actions.push(()=>Q.flush());let de=z9(e.runnerId),be=U9(de,g=>n("runner.cwd_stillbirth_state_write_failed",{message:g,statePath:de}),g=>n("runner.cwd_stillbirth_state_read_failed",{message:g,statePath:de}));if(e.threadProcess?.role!=="thread"){let g=G9(be);g.length>0&&n("runner.cwd_stillbirth_counters_reset_on_restart",{cwds:g})}let nn=HD(VLe(e.runnerId),n,{discardSeqsOnFirstEpochAdoption:!0});t.actions.push(()=>nn.flush());let Be=UJ(zJ(e.runnerId),n);if(e.threadProcess?.role!=="thread"){let g=Ru(e.runnerId);x8(g,n),y8({scopeDir:g,ownerPid:process.pid,log:n}).then(C=>{for(let A of C.failed)pr({severity:"error",key:`dev-service-convergence:${A.name}:${A.error}`,message:A.error})}).catch(C=>{let A=C instanceof Error?C.message:String(C);n("dev_services.reconcile_failed",{message:A}),pr({severity:"error",key:`dev-services-reconcile:${A}`,message:A})});let x=_8({scopeDir:g,ownerPid:process.pid,log:n,onConvergenceFailure:C=>{pr({severity:"error",key:`dev-service-convergence:${C.name}:${C.error}`,message:C.error})}});t.actions.push(()=>x.stop())}let Fe=HD(HLe(e.runnerId),n,{fsyncOnWrite:!0});t.actions.push(()=>Fe.flush());let qn={initial:g=>Fe.initial(g),onAdvance:(g,x)=>Fe.onAdvance(g,x),flush:()=>Fe.flush()},Vt=vQ(),br=(g,x)=>`${g}:transport-ceiling-recovery:${encodeURIComponent(x)}`,Hr={current:{type:"unadvertised"}},La=new Set,ml=g=>{let x="session:user_input_transport_ceiling_applied";Jh({kandan:Ce,topic:G,event:x,payload:{workspace:Zr(),channel:g.channel,thread_id:g.threadId,request_id:g.requestId},support:Hr.current}).then(C=>{if(C.type==="unsupported"){let A={runner_id:e.runnerId,thread_id:g.threadId,request_id:g.requestId,source_seq:g.sourceSeq},I=JSON.stringify([x,C.evidence,A]);La.has(I)||(La.add(I),n("linzumi.runner_event_compatibility_noop",{event:x,evidence:C.evidence,...A}))}}).catch(C=>{n("runner.user_input_transport_ceiling_applied_push_failed",{channel:g.channel,thread_id:g.threadId,request_id:g.requestId,message:C instanceof Error?C.message:String(C)})})},ou=g=>{if(g.sourceSeq===void 0)return;let x=Cs(Zr(),g.channel,g.threadId),C=g.transportCeilingRecoveryRequestId===void 0?x:br(x,g.transportCeilingRecoveryRequestId),A=g.transportCeilingRecoveryRequestId===void 0?g.sourceSeq:1;qX({store:qn,watermarkKey:C,sourceSeq:A,log:n})&&n("runner.live_worker_source_seq_committed",{kandanThreadId:g.threadId,channel:g.channel,sourceSeq:g.sourceSeq,transportCeilingRecoveryRequestId:g.transportCeilingRecoveryRequestId??null}),g.transportCeilingRecoveryRequestId!==void 0&&ml({channel:g.channel,threadId:g.threadId,requestId:g.transportCeilingRecoveryRequestId,sourceSeq:g.sourceSeq}),hm.delete(yl(g.channel,g.threadId,g.sourceSeq))},mm=g=>{let x=Cs(Zr(),g.channel,g.threadId);Vt.clearSeq(g.transportCeilingRecoveryRequestId===void 0?x:br(x,g.transportCeilingRecoveryRequestId),g.transportCeilingRecoveryRequestId===void 0?g.sourceSeq:1)},Gs=g=>{let x=Cs(Zr(),g.channel,g.threadId);Vt.mark(br(x,g.transportCeilingRecoveryRequestId),1)},ns=g=>{if(g.sourceSeq===void 0)return!1;let x=Cs(Zr(),g.channel,g.threadId),C=g.transportCeilingRecoveryRequestId===void 0?x:br(x,g.transportCeilingRecoveryRequestId),A=g.transportCeilingRecoveryRequestId===void 0?g.sourceSeq:1,I=qn.initial(C);return!dc(I,A)&&g.transportCeilingRecoveryRequestId!==void 0&&ml({channel:g.channel,threadId:g.threadId,requestId:g.transportCeilingRecoveryRequestId,sourceSeq:g.sourceSeq}),wQ(I,Vt,C,A)},Hs=RQ(),Zs=MX(),Zo=new Map,ts=new Map,hl=!0,gl=!1,J_=!1,Qs=()=>hl&&!gl,Zr=()=>Kn(e)??"default",rs=()=>e.channelSession?.channelSlug??Be.list()[0]?.channel,Oo=(g,x)=>{let C=Zr(),A=`${C}:${g}:${x}`,I=Zo.get(A);if(I!==void 0)return I;let F=wD(kD(C,g,x),n);return Zo.set(A,F),F},hm=new Map,yl=(g,x,C)=>`${Zr()}:${g}:${x}:${C}`,iu=(g,x,C)=>{hm.set(yl(g,x,C.seq),C)},Na=g=>{let x=Oo(g.channel,g.threadId);for(let C of g.sourceSeqs){let A=yl(g.channel,g.threadId,C),I=hm.get(A);if(I===void 0){n("runner.live_follow_up_recapture_missing",{kandanThreadId:g.threadId,channel:g.channel,sourceSeq:C});continue}let F=x.enqueue(C,"replay",Tl(I),Date.now());n("runner.live_follow_up_re_enqueued_on_close",{kandanThreadId:g.threadId,channel:g.channel,sourceSeq:C,enqueued:F.accepted}),hm.delete(A)}};o.stopAccepting=()=>{hl=!1},o.flushInboundQueues=()=>{for(let g of Zo.values())g.compact()};let gm=u6e(Q,nn,n,e),_l=BZ({initialToken:e.token,tokenExpiresAt:e.tokenExpiresAt,deps:{renew:async g=>{let x=await HK({kandanUrl:e.kandanUrl,accessToken:g});return x.kind==="renewed"?{kind:"renewed",accessToken:x.token.accessToken,expiresInSeconds:x.token.expiresInSeconds}:{kind:x.kind}},persist:e.tokenExpiresAt===void 0?void 0:({accessToken:g,expiresInSeconds:x})=>{Uo({kandanUrl:e.kandanUrl,accessToken:g,expiresInSeconds:x,authFilePath:e.authFilePath})},log:n}}),Ce=await Jx(e.kandanUrl,()=>_l.currentToken(),e.socketFactory,{controlCursorStore:Q,controlEpochStore:gm,onOperatorNotice:g=>pr({severity:"warning",audience:"operator",message:g})}),N,Re=new Promise(g=>{N=g});Ce.onFatal?.(g=>{let x=g instanceof Wa?new nc(g.refusal,r):g;N?.(x),c(x)}),_l.start(),t.actions.push(()=>_l.stop()),t.actions.push(()=>Ce.close());let Ie=a6e(n,Date.now,NY,{onReconnectNeeded:({staleForMs:g,attempt:x})=>{let C=Ce.forceReconnect?.("connection_stale_forced_reconnect");return n("kandan.connection_force_reconnect_dispatched",{staleForMs:g,attempt:x,initiated:C??!1}),C??!1},onHardResetNeeded:()=>Ce.hardReset?.("connection_stale_hard_reset")??!1,onUnrecoverable:({staleForMs:g})=>{console.error(`Connection to Linzumi was lost and did not recover for ${Math.round(g/6e4)} minutes; exiting so a fresh runner can reconnect. Run \`linzumi connect\` to reconnect.`),process.exit(75)}}),G=`local_runner:${e.runnerId}`,Ne=e.clientId??e.machineId??e.runnerId,vn=eLe(),Qr=Cd(),Wt=YG({log:n}),K_=()=>{Wt.drain(g=>Ce.pushIfConnected(G,"diagnostics:upload",g))},Ot=i3({upload:g=>Ce.pushIfConnected(G,"diagnostics:upload",g),runnerLogFile:e.logFile??Sx(),log:n,spool:Wt});Ot.recordLifecycle({event:"connect",atIso:new Date().toISOString()}),Ce.onDisconnect?.(g=>{Ot.recordLifecycle({event:"disconnect",atIso:new Date().toISOString(),closeCode:g.closeCode,closeReason:g.closeReason,previousSessionDurationMs:g.previousSessionDurationMs,reconnectCount:g.reconnectCount}),Ot.flushNow()}),Ce.onReconnect(()=>{Ot.recordLifecycle({event:"connect",atIso:new Date().toISOString()}),Ot.flushNow(),K_()}),t.actions.push(async()=>{Ot.stop(),Ot.flushNow()});let Xs=()=>({clientName:"kandan-local-codex-runner",clientId:Ne,machineFingerprint:e.machineFingerprint??null,...j6(e.machineFingerprintV2),runnerPid:process.pid,runnerBootId:Qr,version:jt,hostname:vn,cwd:e.cwd,workspace:Kn(e)??null,channel:e.channelSession?.channelSlug??null,capabilities:q(),...d===void 0?{}:{generation:{epoch:d.epoch,overlap:!0}},commander_impl:"ts"}),ym=[],VL=0,qC=new WeakMap,V_=0,WL={value:void 0};Ce.onControl((g,x)=>{Ie.recordServerAck();let C=WL.value;if(C===void 0){ym.push({control:g,ack:x});return}C(g,x)});let Qo=await Ce.join(G,Xs(),{rejoinPayload:Xs}).catch(g=>{throw g instanceof Wa?new nc(g.refusal,r):g});if(K_(),BG(process.env),Hr.current=Bh(Qo),Hr.current.type==="invalid")throw n("runner.supported_runner_events_invalid",{source:"join",runner_id:e.runnerId,reason:Hr.current.reason}),new Error(`invalid supported_runner_events in Kandan join response: ${Hr.current.reason}`);iee.value=g=>eee(Ce,G,g);let W_=YX(M(Qo)?.runner_config),Dr={value:e.threadProcess?.role==="thread"?e.multiAgentJobs===!0:ty(Qo)},_m={value:e.threadProcess?.role==="thread"?eY(e):YD(Qo)},xle=Dr.value,FC={value:void 0},GL={value:g=>{let x=ty(g);Dr.value=x,_m.value=YD(g),FC.value={enabled:x,changed:xle!==x}}},jC=Ce.onBeforeControlReplay;if(jC===void 0)throw new Error("Phoenix client is missing required pre-control-replay authority hook");switch(jC((g,x)=>{switch(g===G){case!0:return GL.value(x);case!1:return}}),jC(async g=>{switch(g===G){case!0:await $Y(e,n,"reconnect");return;case!1:return}}),W_.type){case"missing":break;case"invalid":throw n("runner.config_join_invalid",{runnerId:e.runnerId,kandanUrl:e.kandanUrl,reason:W_.reason}),new Error(`invalid runner_config in Kandan join response: ${W_.reason}`);case"ok":ue(W_.config,{includeStartupAllowedCwds:!1,source:"join"});break}JLe(n),VX(M(Qo)?.runner_config,n);let xm=M(M(Qo)?.compute_node);xm!==void 0&&n("runner.compute_node",{id:y(xm.id),name:y(xm.name),identityQuality:y(xm.identity_quality),resetGeneration:Y(xm.reset_generation)});let HL=(g,x)=>{let C=N6e(g);C!==void 0&&n("kandan.roster_seeded",{source:x,thread_count:C.threads.length,truncated:C.truncated,skipped_entries:C.skippedEntries,threads:C.threads.map(A=>({kandan_thread_id:A.kandanThreadId,provider_session_key:A.providerSessionKey,channel_id:A.channelId,title:A.title,channel_slug:A.channelSlug,cwd:A.cwd,last_activity_at_ms:A.lastActivityAtMs}))})};HL(Qo,"join");let ZL=(g,x)=>{let C=M(g)?.fleet_breaker;if(C===void 0)return;let A=lI(C);if(A===void 0){n("runner.fleet_breaker_seed_invalid",{source:x});return}n("runner.fleet_breaker_state",{source:x,outcome:pI(A),state:A.state,fate:A.fate,version:A.version})};ZL(Qo,"join");let QL=(g,x)=>{let C=M(g)?.route_outages;if(C===void 0)return;let A=mI(C);if(A===void 0){n("runner.route_outage_seed_invalid",{source:x});return}n("runner.route_outage_state",{source:x,outcome:hI(A),routes:A.routes.length,version:A.version})};QL(Qo,"join");let XL=(g,x)=>{let C=M(g)?.stream_idle_timeout_default;if(C===void 0)return!1;let A=u.applyServerDefault(C);return n("runner.stream_idle_timeout_default",{source:x,outcome:A.outcome,changed:A.changed,effectiveMs:u.effectiveMs(),effectiveSource:u.effectiveSource()}),A.changed};XL(Qo,"join"),Ce.onReconnect(g=>{let x=sv(Hr.current,g.get(G));switch(x.type){case"accepted":Hr.current=x.support;break;case"rejected_invalid":n("runner.supported_runner_events_invalid",{source:"rejoin",runner_id:e.runnerId,reason:x.reason});break}HL(g.get(G),"rejoin"),ZL(g.get(G),"rejoin"),QL(g.get(G),"rejoin"),XL(g.get(G),"rejoin");let C=YX(g.get(G)?.runner_config);switch(VX(g.get(G)?.runner_config,n),C.type){case"missing":return;case"invalid":n("runner.config_rejoin_invalid",{runnerId:e.runnerId,kandanUrl:e.kandanUrl,reason:C.reason});return;case"ok":ue(C.config,{includeStartupAllowedCwds:!1,source:"rejoin"});return}});let ble=L6e(M(Qo)?.replaced_runners),G_=await(async()=>{if(s!==void 0||e.codexUrl!==void 0||!l)return{type:"not_requested"};try{return{type:"started",started:await lee(e)}}catch(g){return p?n("runner.shared_codex_startup_failed_worker_launcher_retained",{runnerId:e.runnerId,reason:g instanceof Error?g.message:String(g)}):h(g,"codex"),{type:"failed",error:g}}})();if(G_.type==="failed"&&!p&&D.value!=="logged_in")throw G_.error;let ao=G_.type==="started"?G_.started:void 0;ao!==void 0&&t.actions.push(()=>{ao.stop()});let os=e.codexUrl??ao?.url;if(ao!==void 0){let g=h1(ao.url);g!==void 0&&V(g,{processName:"Codex app-server",processIconKey:"codex",agentProvider:"codex"})}let Xe=`codex-${Cd()}`,vle=g=>{Ce.push(G,"local_editor_status",g).catch(x=>{n("kandan.local_editor_status_push_failed",{message:x instanceof Error?x.message:String(x)})})},su=(g,x)=>{Ce.push(G,g,x).catch(C=>{n(`kandan.${g}_push_failed`,{message:C instanceof Error?C.message:String(C)})})},wle=xY(e)?ize({log:n,instanceId:Xe,markCommanderManagedForwardPort:V,clearCommanderManagedForwardPort:U,managedForwardPorts:ie,capabilitiesPayload:q,pushForwardPortEvent:su}):void 0;t.actions.push(()=>wle?.close());let LC=(g,x)=>{let C=Se.approvedTargets.get(g);Se.approvedPorts.delete(g),Se.approvedTargets.delete(g),ge.delete(g),$(g),su("forward_port_revoked",{instanceId:Xe,port:g,...C===void 0?{}:{pid:C.pid,command:C.command,...C.cwd===void 0?{}:{cwd:C.cwd}},reason:x,capabilities:nd(q(),g)})},YL=g=>{Se.watcher?.close(),Se.watcher=void 0,Se.pendingRequests.clear(),Se.queuedCandidates.clear();let x=Array.from(Se.approvedPorts);for(let C of x)LC(C,g);return Se.dismissedTargets.clear(),x},H_=()=>{if(Se.pendingRequests.size>0||Se.queuedCandidates.size===0)return;let g=Array.from(Se.queuedCandidates.values()).sort((x,C)=>x.port-C.port)[0];g!==void 0&&(Se.queuedCandidates.delete(g.port),e6(g),Se.pendingRequests.size===0&&H_())},NC=g=>{let x=np({requestId:`editor-port-forward-auto-${Cd()}`,sourceSeq:0,candidate:g});Se.approvedPorts.add(x.port),Se.approvedTargets.set(x.port,Or(x)),ge.add(x.port);let C=qi(x.command);an(x.port,{localEditor:!0,processName:C?.appName??null,processIconKey:C?.iconKey??null,linzumiCliManaged:x.portKind==="commander_bound"}),su("forward_port_resolved",{instanceId:Xe,requestId:x.requestId,source:"local_editor",port:x.port,pid:x.pid,command:x.command,...x.cwd===void 0?{}:{cwd:x.cwd},decision:"approve",capabilities:q()})},e6=g=>{let x=Ah({candidate:g,threadBound:!0,suppressedPorts:new Set(Oe()),approvedPorts:Se.approvedPorts,approvedTargets:Se.approvedTargets,dismissedTargets:Se.dismissedTargets,pendingRequests:Array.from(Se.pendingRequests.values())});switch(x.type){case"skip":return;case"remember_approved_target":Se.approvedTargets.set(x.target.port,x.target);return;case"revoke_and_prompt":LC(x.revoked.port,x.reason),NC(g);return;case"replace_pending":Se.pendingRequests.delete(x.expired.port),su("forward_port_resolved",{instanceId:Xe,requestId:x.expired.requestId,source:"local_editor",port:x.expired.port,pid:x.expired.pid,command:x.expired.command,...x.expired.cwd===void 0?{}:{cwd:x.expired.cwd},decision:"expired",reason:x.reason,capabilities:q()}),NC(x.candidate);return;case"prompt":NC(g);return}},Sle=g=>{let x=Se.queuedCandidates.get(g.port);if(x!==void 0&&mo(x,g)){Se.queuedCandidates.delete(g.port);return}let C=Se.pendingRequests.get(g.port);if(C!==void 0&&mo(Or(C),g)){Se.pendingRequests.delete(g.port),su("forward_port_revoked",{instanceId:Xe,port:g.port,pid:g.pid,command:g.command,...g.cwd===void 0?{}:{cwd:g.cwd},reason:"listener_exited",capabilities:nd(q(),g.port)}),H_();return}Se.approvedPorts.has(g.port)&&LC(g.port,"listener_exited")},kle=g=>{let x=Array.from(Se.pendingRequests.values()).find(A=>A.requestId===g.requestId);if(x===void 0)return;if(Se.pendingRequests.delete(x.port),g.decision==="deny")return Se.dismissedTargets.set(x.port,Or(x)),su("forward_port_resolved",{instanceId:Xe,requestId:x.requestId,source:"local_editor",port:x.port,pid:x.pid,command:x.command,...x.cwd===void 0?{}:{cwd:x.cwd},decision:"deny",capabilities:q()}),H_(),{instanceId:Xe,ok:!0};Se.approvedPorts.add(x.port),Se.approvedTargets.set(x.port,Or(x)),ge.add(x.port);let C=qi(x.command);return an(x.port,{localEditor:!0,processName:C?.appName??null,processIconKey:C?.iconKey??null,linzumiCliManaged:x.portKind==="commander_bound"}),su("forward_port_resolved",{instanceId:Xe,requestId:x.requestId,source:"local_editor",port:x.port,pid:x.pid,command:x.command,...x.cwd===void 0?{}:{cwd:x.cwd},decision:"approve",capabilities:q()}),H_(),{instanceId:Xe,ok:!0,port:x.port}},Cle=g=>{if(g.process.pid===void 0){n("port_forward.local_editor_watch_skipped",{reason:"editor_pid_missing"});return}Se.watcher?.close(),Se.watcher=ep({rootPid:g.process.pid,onCandidate:e6,onCandidateLost:Sle,onError:x=>{n("port_forward.local_editor_watch_failed",{message:x.message})}})},zC=g=>{if(g.pendingRequests.size>0||g.queuedCandidates.size===0)return;let x=Array.from(g.queuedCandidates.values()).sort((C,A)=>C.port-A.port)[0];x!==void 0&&(g.queuedCandidates.delete(x.port),n6(g,x).catch(C=>{n("port_forward.claude_code_prompt_failed",{message:C instanceof Error?C.message:String(C)})}))},Z_=async(g,x,C,A="wait_for_connection")=>{let I=g.approvedTargets.get(x);g.approvedPorts.delete(x),g.approvedTargets.delete(x),ge.delete(x),$(x),await(A==="connected_only"?Ce.pushIfConnected:Ce.push)(G,"forward_port_revoked",{instanceId:Xe,port:x,...I===void 0?{}:{pid:I.pid,command:I.command,...I.cwd===void 0?{}:{cwd:I.cwd}},reason:C,agentProvider:"claude-code",capabilities:nd(q(),x)})},UC=async(g,x)=>{let C=g.currentSourceSeq()??g.rootSeq;if(C===void 0){n("port_forward.claude_code_auto_approval_skipped",{reason:"source_seq_missing",port:x.port,pid:x.pid});return}let A=np({requestId:`claude-port-forward-auto-${Cd()}`,sourceSeq:C,candidate:x});g.approvedPorts.add(A.port),g.approvedTargets.set(A.port,Or(A)),ge.add(A.port);let I=qi(A.command);an(A.port,{kandanThreadId:g.threadId,codexThreadId:g.sessionId,channelSlug:g.channel,processName:I?.appName??null,processIconKey:I?.iconKey??null,agentProvider:"claude-code",linzumiCliManaged:A.portKind==="commander_bound"});try{let F=await Ce.push(G,"forward_port_resolved",{instanceId:Xe,requestId:A.requestId,port:A.port,pid:A.pid,command:A.command,...A.cwd===void 0?{}:{cwd:A.cwd},sourceSeq:A.sourceSeq,decision:"approve",agentProvider:"claude-code",codexThreadId:g.sessionId,kandanThreadId:g.threadId,workspaceSlug:g.workspace,channelSlug:g.channel,...I?.appName===void 0?{}:{processName:I.appName},...I?.iconKey===void 0?{}:{processIconKey:I.iconKey},capabilities:q()});if(!(X(F)&&F.status==="ok"))throw new Error(`forward_port_resolved refused: ${JSON.stringify(F)}`)}catch(F){n("port_forward.registration_failed",{request_id:A.requestId,port:A.port,pid:A.pid,agent_provider:"claude-code",kandan_thread_id:g.threadId,workspace_slug:g.workspace,message:F instanceof Error?F.message:String(F)})}},n6=async(g,x)=>{let C=Ah({candidate:x,threadBound:!0,suppressedPorts:new Set(Oe()),approvedPorts:g.approvedPorts,approvedTargets:g.approvedTargets,dismissedTargets:g.dismissedTargets,pendingRequests:Array.from(g.pendingRequests.values())});switch(C.type){case"skip":return;case"remember_approved_target":g.approvedTargets.set(C.target.port,C.target);return;case"revoke_and_prompt":await Z_(g,C.revoked.port,C.reason),await UC(g,x);return;case"replace_pending":g.pendingRequests.delete(C.expired.requestId),await Ce.push(G,"forward_port_resolved",{instanceId:Xe,requestId:C.expired.requestId,port:C.expired.port,pid:C.expired.pid,command:C.expired.command,...C.expired.cwd===void 0?{}:{cwd:C.expired.cwd},sourceSeq:C.expired.sourceSeq,decision:"expired",reason:C.reason,agentProvider:"claude-code",capabilities:q()}),await Bo(Ce,G,{workspace:g.workspace,channel:g.channel,threadId:g.threadId,sourceSeq:C.expired.sourceSeq,status:"failed",reason:"port_forward_listener_changed",sessionId:g.sessionId}),await UC(g,C.candidate);return;case"prompt":await UC(g,x);return}},Tle=(g,x)=>{let C=g.queuedCandidates.get(x.port);if(C!==void 0&&mo(C,x)){g.queuedCandidates.delete(x.port),g.approvedPorts.has(x.port)&&Z_(g,x.port,"listener_exited").catch(I=>{n("port_forward.claude_code_revoke_failed",{message:I instanceof Error?I.message:String(I)})});return}let A=Array.from(g.pendingRequests.values()).find(I=>mo(Or(I),x));if(A!==void 0){g.pendingRequests.delete(A.requestId),Ce.push(G,"forward_port_resolved",{instanceId:Xe,requestId:A.requestId,port:A.port,pid:A.pid,command:A.command,...A.cwd===void 0?{}:{cwd:A.cwd},sourceSeq:A.sourceSeq,decision:"expired",reason:"listener_exited",agentProvider:"claude-code",capabilities:q()}).then(()=>Bo(Ce,G,{workspace:g.workspace,channel:g.channel,threadId:g.threadId,sourceSeq:A.sourceSeq,status:"failed",reason:"port_forward_listener_exited",sessionId:g.sessionId})).then(()=>zC(g)).catch(I=>{n("port_forward.claude_code_expire_failed",{message:I instanceof Error?I.message:String(I)})});return}g.approvedPorts.has(x.port)&&Z_(g,x.port,"listener_exited").catch(I=>{n("port_forward.claude_code_revoke_failed",{message:I instanceof Error?I.message:String(I)})})},Ple=g=>{for(let x of wl.values()){let C=x.pendingRequests.get(g.requestId);if(C===void 0)continue;if(x.pendingRequests.delete(g.requestId),g.decision==="deny")return x.dismissedTargets.set(C.port,Or(C)),Promise.all([Ce.push(G,"forward_port_resolved",{instanceId:Xe,requestId:C.requestId,port:C.port,pid:C.pid,command:C.command,...C.cwd===void 0?{}:{cwd:C.cwd},sourceSeq:C.sourceSeq,decision:"deny",agentProvider:"claude-code",capabilities:q()}),Bo(Ce,G,{workspace:x.workspace,channel:x.channel,threadId:x.threadId,sourceSeq:C.sourceSeq,status:"failed",reason:"port_forward_denied",sessionId:x.sessionId})]).then(()=>zC(x)).catch(I=>{n("port_forward.claude_code_deny_failed",{message:I instanceof Error?I.message:String(I)})}),{instanceId:Xe,ok:!0,agentProvider:"claude-code"};x.approvedPorts.add(C.port),x.approvedTargets.set(C.port,Or(C)),ge.add(C.port);let A=qi(C.command);return an(C.port,{kandanThreadId:x.threadId,codexThreadId:x.sessionId,channelSlug:x.channel,processName:A?.appName??null,processIconKey:A?.iconKey??null,agentProvider:"claude-code",linzumiCliManaged:C.portKind==="commander_bound"}),Promise.all([Ce.push(G,"forward_port_resolved",{instanceId:Xe,requestId:C.requestId,port:C.port,pid:C.pid,command:C.command,...C.cwd===void 0?{}:{cwd:C.cwd},sourceSeq:C.sourceSeq,decision:"approve",agentProvider:"claude-code",capabilities:q()}),Bo(Ce,G,{workspace:x.workspace,channel:x.channel,threadId:x.threadId,sourceSeq:C.sourceSeq,status:"processed",reason:"Claude Code preview port approved",sessionId:x.sessionId})]).then(()=>zC(x)).catch(I=>{n("port_forward.claude_code_approve_failed",{message:I instanceof Error?I.message:String(I)})}),{instanceId:Xe,ok:!0,agentProvider:"claude-code",port:C.port}}},BC=g=>{if(wl.has(g.sessionId))return;let x=e.portForwardWatcher??(F=>ep({rootPid:process.pid,commanderBoundPids:[process.pid],commanderBoundPorts:Array.from(ie),watchPorts:Je,extraWatchServices:jb(Ru(e.runnerId)),onUndeclaredServicePorts:me=>{n("dev_services.undeclared_ports_detected",{service:me.service,undeclared_ports:[...me.undeclaredPorts],declared_ports:[...me.declaredPorts]})},...F})),C={value:void 0},A;try{A=x({onCandidate:F=>C.value===void 0?void 0:n6(C.value,F),onCandidateLost:F=>C.value===void 0?void 0:Tle(C.value,F),onListenersObserved:F=>Rb(`claude-session:${g.sessionId}`,F.filter(me=>me.portKind!=="commander_bound")),onError:F=>{n("port_forward.claude_code_watch_failed",{message:F.message,claude_session_id:g.sessionId})}})}catch(F){n("port_forward.claude_code_watch_skipped",{reason:"watch_start_failed",message:F instanceof Error?F.message:String(F),claude_session_id:g.sessionId});return}n("port_forward.claude_code_watch_started",{claude_session_id:g.sessionId,root_pid:e.portForwardWatcher===void 0?process.pid:null,injected:e.portForwardWatcher!==void 0});let I={...g,watcher:A,approvedPorts:new Set,approvedTargets:new Map,dismissedTargets:new Map,pendingRequests:new Map,queuedCandidates:new Map};C.value=I,wl.set(g.sessionId,I)},Q_=async(g,x="wait_for_connection")=>{let C=wl.get(g);if(C===void 0)return;let A=Array.from(C.pendingRequests.values()),I=Array.from(C.approvedPorts);C.watcher.close(),C.pendingRequests.clear(),C.queuedCandidates.clear(),C.dismissedTargets.clear(),wl.delete(g),await Promise.all([...A.map(async F=>{try{let me=x==="connected_only"?Ce.pushIfConnected:Ce.push;await Promise.all([me(G,"forward_port_resolved",{instanceId:Xe,requestId:F.requestId,port:F.port,pid:F.pid,command:F.command,...F.cwd===void 0?{}:{cwd:F.cwd},sourceSeq:F.sourceSeq,decision:"expired",reason:"session_ended",agentProvider:"claude-code",capabilities:q()}),Bo(Ce,G,{workspace:C.workspace,channel:C.channel,threadId:C.threadId,sourceSeq:F.sourceSeq,status:"failed",reason:"port_forward_session_ended",sessionId:C.sessionId,publishMode:x})])}catch(me){n("port_forward.claude_code_dispose_prompt_failed",{message:me instanceof Error?me.message:String(me)})}}),...I.map(async F=>{try{await Z_(C,F,"session_ended",x)}catch(me){n("port_forward.claude_code_dispose_revoke_failed",{message:me instanceof Error?me.message:String(me)})}})])},Ile=(g,x,C)=>{let A=()=>{if(Qe.value!==x||Ue.value.status!=="running"||Ue.value.process!==g.process)return;Ue.value={status:"disabled"};let F=YL("editor_exited");ge.delete(g.port),ie.delete(g.port),g.collaboration!==void 0&&(ge.delete(g.collaboration.serverPort),ie.delete(g.collaboration.serverPort)),vle({instanceId:Xe,ok:!0,cwd:g.cwd,capabilities:{...q(),revokedPorts:g.collaboration===void 0?[g.port,...F]:[g.port,g.collaboration.serverPort,...F]}})},I=()=>{C.then(A).catch(F=>{n("kandan.local_editor_initial_status_failed",{message:F instanceof Error?F.message:String(F)})})};g.exited.then(I)},t6={reason:void 0},xt=s?.codex??(os===void 0?void 0:await Cp(os).catch(g=>{p?n("runner.shared_codex_connect_failed_worker_launcher_retained",{runnerId:e.runnerId,reason:g instanceof Error?g.message:String(g)}):t6.reason=h(g,"codex")}));if(xt!==void 0&&t.actions.push(()=>xt.close()),e.channelSession!==void 0&&xt===void 0)throw new Error("channel session requires a Codex app-server connection");let r6=C6e({codexUrl:e.codexUrl,threadProcessRole:e.threadProcess?.role,ownsStartedAppServer:ao!==void 0}),JC={value:0},bm={value:[]};if(xt!==void 0&&e.channelSession===void 0&&e.threadProcess?.role!=="thread"&&Dr.value){let g=await ZX(xt);switch(!!Dr.value){case!0:bm.value=g;break;case!1:break}}let Ys={value:xt!==void 0&&e.channelSession===void 0&&e.threadProcess?.role!=="thread"&&Dr.value?{type:"complete"}:{type:"pending"}},xl=pf(e),Rle={instanceId:Xe,clientId:Ne,...os===void 0?{}:{codexUrl:os},tuiLaunched:e.launchTui,cwd:e.cwd,hostname:vn,codexThreads:bm.value,workspace:Kn(e)??null,channel:e.channelSession?.channelSlug??null,model:xl.model??null,reasoningEffort:xl.reasoningEffort??null,allowPortForwardingByDefault:xl.allowPortForwardingByDefault??null,fast:e.fast??!1};await Ce.push(G,"instance_started",Rle),n("runner.instance_started",{runnerId:e.runnerId,hostname:vn,workspace:Kn(e)??null,version:jt,instanceId:Xe,codexUrl:os??null,replacedRunners:ble});let o6=Kn(e),i6={...o6===void 0?{}:{workspace:o6},launch_source:e.launchSource??"cli"};Yp({name:"commander.connected",attributes:i6},{apiUrl:e.kandanUrl}),t.actions.push(()=>Yp({name:"commander.exited",attributes:i6},{apiUrl:e.kandanUrl}));let lr=e.channelSession===void 0||xt===void 0?void 0:await Kh({kandan:Ce,codex:xt,topic:G,instanceId:Xe,leaseEpochFor:g=>Zs.current(g),reapOwnedHarnessAfterStop:ao===void 0?void 0:async()=>{await ao.stopAndWait()},escalateEngineHalt:ao===void 0?void 0:async g=>{h(`Codex engine halt could not be confirmed: ${g}`,"codex"),await ao.stopAndWait()},options:{kandanUrl:e.kandanUrl,token:e.token,runnerId:e.runnerId,cwd:e.cwd,codexBin:e.codexBin,runnerEventSupport:()=>Hr.current,fetch:e.fetch,fast:e.fast,launchTui:e.launchTui,multiAgentJobs:e.threadProcess?.role==="thread"?Dr.value:!0,multiAgentJobsEligible:e.multiAgentJobsEligible===!0,multiAgentJobsEnabled:()=>Dr.value,codingJobMcpToken:e.codingJobMcpToken,pipelinePersistDir:oy(),enablePortForwardWatch:!0,initialForwardPorts:Je,portForwardWatcher:_Y({rootPid:ao?.process.pid,start:e.portForwardWatcher}),suppressedForwardPorts:Oe,onForwardPortApproved:(g,x)=>(ge.add(g),an(g,{...x,agentProvider:"codex"}),q()),onForwardPortRevoked:g=>(ge.delete(g),$(g),q()),onUnroutedThreadMessage:g=>g6(g),onLiveSourceSeqAccepted:ou,onLiveSourceSeqQueued:Gs,onLiveSourceSeqSettled:mm,channelSession:e.channelSession},log:n});lr!==void 0&&(t.actions.push(()=>lr.close()),Ce.onReconnect(()=>lr.handleKandanReconnect()));let nr=new Map,bl=D6e(n,Dr.value),X_=()=>[lr,...nr.values()].filter(g=>g!==void 0);t.actions.push(bl.close);let au=new Map,du=new Map,Ele=(g,x)=>{let C=du.get(g);if(C!==void 0){du.delete(g);for(let A of C)A.resolve(x)}},Y_=(g,x)=>{let C=du.get(g);if(C!==void 0){du.delete(g);for(let A of C)A.reject(x)}},ea=ZJ(),Ale=new Set(["kandan.reconnect_thread_resume_failed","kandan.reconnect_thread_rehydrate_forced","kandan.reconnect_thread_rehydration_ir_emitted","kandan.reconnect_thread_rehydration_failed","kandan.reconnect_thread_rehydrated","kandan.reconnect_thread_unarchive_started","kandan.reconnect_thread_unarchive_resumed","kandan.reconnect_thread_unarchive_failed"]),Mle=(g,x)=>{if(!Ale.has(g))return;let C=x.codex_thread_id;typeof C=="string"&&C!==""&&ea.note(C,g)},Dle=g=>()=>QJ(RE(),g),KC=Object.assign((g,x)=>{Mle(g,x),n(g,x)},{close:()=>n.close()}),VC=g=>XJ({method:"thread/attach",codexThreadId:g.codexThreadId,kandanThreadId:g.kandanThreadId,wait:g.wait,tracker:ea,log:n,rolloutBytes:Dle(g.codexThreadId),noProgressTimeoutMs:av()}),na=new Map,uu=new Map,s6=[],WC=g=>{let x=uu.get(g);if(x!==void 0)return x;let C=A6e({sessions:()=>[...g===xt&&lr!==void 0?[lr]:[],...Array.from(nr.entries()).filter(([A])=>na.get(A)===g).map(([,A])=>A)],log:n,onActiveThreadsFailed:r6?A=>{for(let I of A)s6.push(Ce.push(G,"session:app_server_lost",{codex_thread_id:I}).then(()=>{},F=>{n("kandan.session_app_server_lost_push_failed",{codex_thread_id:I,message:F instanceof Error?F.message:String(F)})}))}:void 0});return uu.set(g,C),C},vr=new Map,GC=gNe(),HC=new Map,a6={record:(g,x)=>{let C=HC.get(g),A={approvalPolicy:x.approvalPolicy??C?.approvalPolicy,sandbox:x.sandbox??C?.sandbox};if(A.approvalPolicy===void 0&&A.sandbox===void 0)return;let I=x.approvalPolicy===void 0?void 0:pY(x.approvalPolicy),F=C?.approvalPolicy===void 0?void 0:pY(C.approvalPolicy);I!==void 0&&F!==void 0&&I<F&&(j3(g),n("claude_code.thread_permission_grants_cleared_on_downgrade",{linzumi_thread_id:g,prior_approval_policy:C?.approvalPolicy??null,new_approval_policy:x.approvalPolicy??null})),HC.set(g,A)},resolve:g=>HC.get(g)},vm=new Map,vl=new Map,wl=new Map;Ce.onReconnect(()=>Q6e(nr.values())),Ce.onDisconnect?.(()=>{for(let g of vr.values())g.pauseOutbox()}),Ce.onReconnect(()=>{for(let[g,x]of vr)n("claude_code.outbox_resumed_on_reconnect",{claude_session_id:g,linzumi_thread_id:x.threadId}),x.resumeOutbox()}),o.interruptInFlightTurns=async()=>{let g=[...vr.entries()].flatMap(([C,A])=>{let I=A.currentSourceSeq();return I===void 0?[]:[{sessionId:C,session:A,sourceSeq:I}]});if(g.length===0)return;let x=new Promise(C=>{setTimeout(C,K6e).unref?.()});await Promise.race([Promise.all(g.map(async({sessionId:C,session:A,sourceSeq:I})=>{n("runner.drain_turn_interrupted_state",{claude_session_id:C,linzumi_thread_id:A.threadId,source_seq:I});try{await Bo(Ce,G,{workspace:A.workspace,channel:A.channel,threadId:A.threadId,sourceSeq:I,status:"interrupted",reason:J6e,sessionId:C})}catch(F){n("runner.drain_turn_interrupted_state_push_failed",{linzumi_thread_id:A.threadId,source_seq:I,message:F instanceof Error?F.message:String(F)})}})).then(()=>{}),x])};let d6=async()=>{let g=JJ(Be.list(),Date.now());if(g.length!==0)try{await Ce.push(G,"session:reannounce_threads",{threads:g.map(x=>({...x}))}),n("kandan.thread_sessions_reannounced",{count:g.length})}catch(x){n("kandan.thread_sessions_reannounce_failed",{count:g.length,message:x instanceof Error?x.message:String(x)})}};Ce.onReconnect(()=>d6()),d6(),t.actions.push(async()=>{await Promise.all(Array.from(nr.values(),x=>x.close())),nr.clear(),na.clear(),du.clear();let g=[...vr.values()];for(let x of g)try{x.closeInput()}catch(C){n("claude_code.session_input_close_failed",{linzumi_thread_id:x.threadId,message:C instanceof Error?C.message:String(C)})}await Promise.race([Promise.allSettled(g.flatMap(x=>{let C=x.sessionWork();return C===void 0?[]:[C]})),new Promise(x=>{setTimeout(x,1e4).unref?.()})]);for(let x of g)x.abortController.abort(new Error("local runner stopped"));vr.clear();for(let x of vm.values())x.resolve({type:"deny",message:"Claude Code approval cancelled because the runner stopped"});vm.clear();for(let x of vl.values())x.resolve({type:"deny",message:"Claude Code question cancelled because the runner stopped"});vl.clear(),await Promise.all(Array.from(wl.keys(),x=>Q_(x,"connected_only")))});let _n=new Map,wm=new Set,ex=new Set;t.actions.push(async()=>{await Promise.all(Array.from(_n.values(),lc)),_n.clear()});let Ole=()=>{for(let[g,x]of Array.from(_n.entries()))ry(x)==="dead"&&_n.get(g)===x&&(_n.delete(g),n("runner.thread_process_stale_entry_reaped",{kandanThreadId:g,pid:x.kind==="running"?x.handle.processPid??null:null,prior_kind:x.kind}),lc(x).catch(()=>{}))};if(Sd(e)){let g=e.threadRunnerReaperIntervalMs??xLe,x=setInterval(Ole,g);x.unref?.(),t.actions.push(()=>clearInterval(x))}let u6=g=>{for(let x of nr.values())if(x!==void 0&&x.currentKandanThreadId()===g)return x},c6=async(g,x)=>{let C=Be.list().find(F=>F.kandanThreadId===g),A=C?.codexThreadId??u6(g)?.currentCodexThreadId();n("runner.spin_down_to_dormant",{kandanThreadId:g,codex_thread_id:A??null,source:x}),Ce.push(G,"session:worker_dormant",{codex_thread_id:A??null,kandan_thread_id:g,workspace:C?.workspace??null,channel:C?.channel??null,source:x}).catch(F=>{n("runner.spin_down_report_failed",{kandanThreadId:g,source:x,message:F instanceof Error?F.message:String(F)})});let I=_n.get(g);I!==void 0&&(_n.delete(g),await lc(I))},$le=process.env.LINZUMI_IDLE_SPIN_DOWN==="0"||process.env.LINZUMI_IDLE_SPIN_DOWN==="off";if(Sd(e)&&!$le){let g=yLe({now:()=>Date.now(),listActiveThreadIds:()=>[..._n.entries()].filter(([,x])=>x.kind==="running").map(([x])=>x),sessionIdleSignalsFor:x=>u6(x)?.idleSignalSnapshotSelf(),hasClaudeKeepAlive:x=>[...vr.values()].some(C=>C.threadId===x),resolveWindowMs:()=>lLe(void 0),threadRunnerEntryLiveness:x=>ry(x),intervalMs:e.idleSpinDownIntervalMs??bLe,onSpinDownToDormant:x=>c6(x,"idle")});t.actions.push(()=>g.stop())}let ZC=new Map,qle=bZ(),QC=async(g,x)=>{let C=nr.get(g),A=na.get(g);if(C===void 0||x!==void 0&&A!==x||A?.isClosed?.()!==!0)return!1;nr.delete(g),na.delete(g),au.delete(g),n("runner.thread_session_evicted_dead_worker",{codex_thread_id:g,kandan_thread_id:C.currentKandanThreadId()??null});try{await C.close()}catch(I){n("runner.thread_session_evict_close_failed",{codex_thread_id:g,message:I instanceof Error?I.message:String(I)})}return!0},XC=async(g,x={})=>{let C=nr.get(g);if(C!==void 0)return C;let A=au.get(g);if(A!==void 0){let F=await A;if(F!==void 0)return F}let I=nr.get(g);return I!==void 0||x.waitForSiblingSpawn!==!0?I:await new Promise((F,me)=>{let ke=du.get(g)??[];ke.push({resolve:F,reject:me}),du.set(g,ke)})},l6=async g=>{let{control:x,cwd:C,codexThreadId:A,sessionCodex:I}=g,F=g.portForwardWatcherRootPid,me=bn(x,"workspace"),ke=bn(x,"channel"),Ke=bn(x,"threadId");if(me===void 0||ke===void 0||Ke===void 0)return;let ze=nr.get(A);if(ze!==void 0){let Yn=ze.currentKandanThreadId();if(Yn!==void 0&&Yn!==Ke)throw new Lu({codexThreadId:A,ownerKandanThreadId:Yn,requestingKandanThreadId:Ke});if(!await QC(A))return qJ({codexThreadId:A,kandanThreadId:Ke,cachedCwd:ze.currentCwd(),requestedCwd:C}),ze}let ot=Be.list().find(Yn=>Yn.codexThreadId===A&&Yn.kandanThreadId!==Ke);if(ot!==void 0)throw new Lu({codexThreadId:A,ownerKandanThreadId:ot.kandanThreadId,requestingKandanThreadId:Ke});let jn=au.get(A);if(jn!==void 0)return await jn;let $o=(async()=>{ea.note(A,"attach_started");let Yn=e.channelSession?.listenUser??ei(e.token).actorUsername;if(Yn===void 0)throw new Error("missing listen user for Commander-started Codex session");let Bn=gc(e,x),uo=Sd(e)?async Ee=>{let pn=_n.get(Ee.kandanThreadId);if(pn===void 0)return n("runner.reconnect_adopt_orphan_worker_reclaim_no_entry",{kandanThreadId:Ee.kandanThreadId,codex_thread_id:Ee.codexThreadId,fence_reason:Ee.reason}),()=>{};n("runner.reconnect_adopt_orphan_worker_reclaim",{kandanThreadId:Ee.kandanThreadId,codex_thread_id:Ee.codexThreadId,fence_reason:Ee.reason,pid:pn.kind==="running"?pn.handle.processPid??null:null}),wm.add(Ee.kandanThreadId);let yn=!1,Yo=!1,In=!1,ra=()=>{In||!yn||!Yo||(In=!0,wm.delete(Ee.kandanThreadId),n("runner.reconnect_adopt_orphan_worker_fence_released",{kandanThreadId:Ee.kandanThreadId,codex_thread_id:Ee.codexThreadId}))},Tm=()=>{Yo=!0,ra()};try{if(_n.get(Ee.kandanThreadId)===pn&&_n.delete(Ee.kandanThreadId),await lc(pn)==="abandoned"){let Sl=pn.kind==="running"?pn.handle.onExit:void 0;return Sl!==void 0&&Sl(()=>{yn=!0,ra()}),n("runner.reconnect_adopt_orphan_worker_reclaim_unconfirmed",{kandanThreadId:Ee.kandanThreadId,codex_thread_id:Ee.codexThreadId,fence_release_on_exit_wired:Sl!==void 0}),Tm}return yn=!0,Tm}catch(is){throw wm.delete(Ee.kandanThreadId),In=!0,is}}:void 0,Gt=Sd(e)?async Ee=>qle.run(Ee.kandanThreadId,async()=>{await QC(Ee.codexThreadId);let pn=!1,yn=ZC.get(Ee.kandanThreadId)??(x.modelProvider!==void 0||x.llmProxy!==void 0||x.linzumiAgent!==void 0?{...x.modelProvider===void 0?{}:{modelProvider:x.modelProvider},...x.llmProxy===void 0?{}:{llmProxy:x.llmProxy},...x.linzumiAgent===void 0?{}:{linzumiAgent:x.linzumiAgent}}:void 0),Yo=Y(x.rootSeq);for(let In of Ee.pendingMessages){let ra={type:"reconnect_thread",workspace:me,channel:ke,threadId:Ee.kandanThreadId,codexThreadId:Ee.codexThreadId,cwd:C,...x.linzumiContext===void 0?{}:{linzumiContext:x.linzumiContext},...x.type==="reconnect_thread"&&x.sessionRehydrate===!0?{sessionRehydrate:!0}:{},...Yo===void 0?{}:{rootSeq:Yo},...yn?.modelProvider===void 0?{}:{modelProvider:yn.modelProvider},...yn?.llmProxy===void 0?{}:{llmProxy:yn.llmProxy},...yn?.linzumiAgent===void 0?{}:{linzumiAgent:yn.linzumiAgent},sourceSeq:In.seq,workDescription:In.body,...In.adtStream===void 0?{}:{adtStream:In.adtStream},...In.attachments.length===0?{}:{attachments:In.attachments},...Bn.model===void 0?{}:{model:Bn.model},...Bn.modelTransportCatalogStatus===void 0?{}:{modelTransportCatalogStatus:Bn.modelTransportCatalogStatus},...Bn.reasoningEffort===void 0?{}:{reasoningEffort:Bn.reasoningEffort},...Bn.sandbox===void 0?{}:{sandbox:Bn.sandbox},...Bn.approvalPolicy===void 0?{}:{approvalPolicy:Bn.approvalPolicy},...Bn.fast===void 0?{}:{fast:Bn.fast},multiAgentJobsEligible:x.multiAgentJobsEligible===!0},Tm=async is=>{let Sl=await VC({codexThreadId:Ee.codexThreadId,kandanThreadId:Ee.kandanThreadId,wait:XC(Ee.codexThreadId,{waitForSiblingSpawn:is.waitForSiblingSpawn})});if(Sl===void 0)throw new Error(`dead-worker rebuild could not resolve a live session for codex thread ${Ee.codexThreadId}`);await Sl.startThreadMessageTurn({seq:In.seq,body:In.body,actorSlug:In.actorSlug,actorUserId:In.actorUserId,attachments:In.attachments,boundStartTimeout:!0,adtStream:In.adtStream})};try{if(pn)await Tm({waitForSiblingSpawn:!1});else{let is=await nT(ra,C);ZD(is)&&(n("runner.thread_dead_worker_rebuild_replay_on_sibling",{codex_thread_id:Ee.codexThreadId,kandan_thread_id:Ee.kandanThreadId,seq:In.seq}),await Tm({waitForSiblingSpawn:!0}))}pn=!0}catch(is){return n("runner.thread_dead_worker_rebuild_failed",{codex_thread_id:Ee.codexThreadId,kandan_thread_id:Ee.kandanThreadId,seq:In.seq,message:is instanceof Error?is.message:String(is)}),!1}}return pn}):void 0,et=bh()&&R().includes("claude-code")?{targetHarness:"claude_code",execute:async Ee=>{let pn;try{pn=await import(new URL("./crossHarnessFailover.mjs",import.meta.url).href)}catch(In){return{ok:!1,failure:`failover transpiler bridge unavailable: ${In instanceof Error?In.message:String(In)}`}}let yn=await pn.transpileAndSeedClaudeSession({activity:Ee.activity,codexThreadId:Ee.codexThreadId??"unknown-codex-session",kandanThreadId:Ee.kandanThreadId,cwd:C});if(!yn.ok)return{ok:!1,failure:yn.failure};n("runner.cross_harness_failover_seeded",{kandan_thread_id:Ee.kandanThreadId,source_session_id:Ee.codexThreadId??null,target_session_id:yn.targetSessionId,session_file:yn.sessionFile,transpiled_item_count:yn.transpiledItemCount,redacted_reasoning_count:yn.redactedReasoningCount});let Yo={type:"reconnect_thread",agentProvider:"claude-code",workspace:me,channel:ke,threadId:Ee.kandanThreadId,codexThreadId:yn.targetSessionId,cwd:C,sourceSeq:Ee.message.seq,workDescription:Ee.message.body,...Ee.model===void 0?{}:{model:Ee.model}};try{let In=await e1(void 0,Ce,G,Xe,e,R(),pe,he,Ze,xe,vr,vm,vl,BC,Q_,Yo,KC,a,void 0,void 0,void 0,ra=>Zs.current(ra),ou,iu,Na,void 0,v6,a6,GC);if(In.ok===!1)return{ok:!1,failure:`claude dispatch refused: ${JSON.stringify(In).slice(0,300)}`}}catch(In){return{ok:!1,failure:`claude dispatch failed: ${In instanceof Error?In.message:String(In)}`}}return{ok:!0,transpiledItemCount:yn.transpiledItemCount,redactedReasoningCount:yn.redactedReasoningCount,targetSessionId:yn.targetSessionId}}}:void 0,tr=x.linzumiAgent?.mcpToken??e.linzumiAgentMcpToken,rr=j0(x),qt=rr.type==="provider"?rr.runtime:void 0,qo=kNe({env:process.env,kandanUrl:e.kandanUrl,workspaceSlug:me,linzumiAgentMcpToken:tr,ownerUsername:J0(e),modelProviderRuntime:qt,log:n}),ta=INe({kandan:Ce,topic:G,binding:x.codingAccount}),lu=await Kh({kandan:Ce,codex:I,topic:G,instanceId:Xe,leaseEpochFor:Ee=>Zs.current(Ee),reapOwnedHarnessAfterStop:g.reapOwnedHarnessAfterStop,options:{kandanUrl:e.kandanUrl,token:e.token,runnerId:e.runnerId,cwd:C,codexBin:e.codexBin,codingAccount:ta===void 0?void 0:{accountId:ta.accountId,generation:ta.generation},refreshCodingAccountCredential:ta?.refresh,runnerEventSupport:()=>Hr.current,mcpAvailable:!wa(e)||I1(e),devServicesAvailable:!wa(e),fetch:e.fetch,fast:x.fast??e.fast,launchTui:!1,multiAgentJobs:x.multiAgentJobsEnabled===!0,multiAgentJobsEligible:x.multiAgentJobsEligible===!0,multiAgentJobsEnabled:()=>Dr.value,codingJobMcpToken:aze(x,e),rebuildOnDeadCodexWorker:Gt,reclaimWedgedThreadWorker:uo,crossHarnessFailover:et,onUnroutedThreadMessage:Ee=>g6(Ee),onCodexThreadRebound:({kandanThreadId:Ee,oldCodexThreadId:pn,newCodexThreadId:yn})=>{if(pn!==void 0&&pn!==yn){let In=nr.get(pn),ra=na.get(pn);In!==void 0&&(nr.delete(pn),nr.set(yn,In)),ra!==void 0&&(na.delete(pn),na.set(yn,ra)),In!==void 0&&bl.reconcile(X_()),ea.clear(pn)}let Yo=Be.rebindCodexThread(Ee,yn);n("runner.codex_thread_rebind_propagated",{kandan_thread_id:Ee,old_codex_thread_id:pn??null,new_codex_thread_id:yn,registry_outcome:Yo.outcome})},onCollaborationModeChanged:({kandanThreadId:Ee,mode:pn})=>{let yn=Be.list().find(In=>In.kandanThreadId===Ee);if(yn===void 0)throw new Error(`missing durable thread session for collaboration mode update: ${Ee}`);if(Be.upsert({...yn,control:{...yn.control,collaborationMode:pn},updatedAtMs:Date.now()}).outcome==="ownership_conflict")throw new Error(`collaboration mode registry ownership conflict: ${Ee}`)},modelAccountPreflightForTurn:Ee=>R0({agentProvider:"codex",modelProvider:Ee.modelProvider,model:Ee.model,modelTransportCatalogStatus:f1({...Ee.modelProvider===void 0?{}:{modelProvider:Ee.modelProvider},...Ee.model===void 0?{}:{model:Ee.model},...Ee.modelTransportCatalogStatus===void 0?{}:{modelTransportCatalogStatus:Ee.modelTransportCatalogStatus}},n),llmProxyBinding:p1(x.llmProxy),hasNativeCodexAuth:re()},dd,R()),onLiveSourceSeqAccepted:ou,onLiveSourceSeqQueued:Gs,onLiveSourceSeqSettled:mm,...qo===void 0?{}:{cloudAgentTurn:qo},pipelinePersistDir:oy(),enablePortForwardWatch:!0,initialForwardPorts:Je,portForwardWatcher:_Y({rootPid:F,start:e.portForwardWatcher,commanderBoundPids:g.commanderBoundPids,commanderBoundPorts:g.commanderBoundPorts}),suppressedForwardPorts:Oe,onForwardPortApproved:(Ee,pn)=>(ge.add(Ee),an(Ee,{...pn,agentProvider:"codex"}),q()),onForwardPortRevoked:Ee=>(ge.delete(Ee),$(Ee),q()),channelSession:{workspaceSlug:me,channelSlug:ke,kandanThreadId:Ke,rootSeq:Y(x.rootSeq),codexThreadId:A,linzumiContext:x.linzumiContext,developerPrompt:x.developerPrompt,agentNickname:cy(x),listenUser:Yn,linzumiAgentSession:x.linzumiAgent!==void 0||e.threadProcess?.role==="thread"&&e.linzumiAgentMcpToken!==void 0,modelProvider:Bn.modelProvider,modelTransportCatalogStatus:Bn.modelTransportCatalogStatus,model:Bn.model,reasoningEffort:Bn.reasoningEffort,...Bn.collaborationMode===void 0?{}:{collaborationMode:Bn.collaborationMode},sandbox:Bn.sandbox,approvalPolicy:Bn.approvalPolicy,sandboxedApprovalNeverDefault:Bn.sandboxedApprovalNeverDefault,allowPortForwardingByDefault:Bn.allowPortForwardingByDefault},developerInstructions:v1({cwd:C,control:x,options:e,runtimeSettings:Bn})},log:n});return nr.set(A,lu),na.set(A,I),bl.reconcile(X_()),ea.note(A,"attached"),Ele(A,lu),Be.upsert({workspace:me,channel:ke,kandanThreadId:Ke,codexThreadId:A,cwd:C,agentProvider:"codex",control:tee({workspaceSlug:me,channelSlug:ke,kandanThreadId:Ke,codexThreadId:A,cwd:C,rootSeq:Y(x.rootSeq),agentNickname:cy(x),runtimeSettings:Bn}),updatedAtMs:Date.now()}),I!==xt&&I.onNotification(Ee=>{JC.value+=1;let pn=Ee.params??{};n("codex.notification",dM(Ee.method,pn)),T(Ee.method,pn),WC(I).observeNotification(Ee.method,pn),kd(lu,Ee.method,pn,n)}),lu})();au.set(A,$o);try{let Yn=await $o;return Yn===void 0&&Y_(A,new Error(`attach for codex thread ${A} resolved without a live session`)),Yn}catch(Yn){let Bn=Yn instanceof Error?Yn.message:String(Yn);throw ea.fail(A,Bn),Y_(A,Yn instanceof Error?Yn:new Error(Bn)),Yn}finally{au.delete(A)}},YC=async(g,x,C)=>{if(xt===void 0)throw new Error("cannot attach a thread session without a codex app-server connection");return await l6({control:g,cwd:x,codexThreadId:C,sessionCodex:xt,portForwardWatcherRootPid:ao?.process.pid})},p6=g=>{let x=Oo(g.channel,g.kandanThreadId),C=Cs(Zr(),g.channel,g.kandanThreadId),A=qn.initial(C),I=ts.get(g.kandanThreadId)??[],F=Zg(A,I)??A,me="";try{me=Ps(zl(oy(),Vh({workspaceSlug:g.workspace,channelSlug:g.channel},g.kandanThreadId,Xe)),"utf8")}catch{}return{pendingInboundSeqs:x.entries().map(ke=>ke.sourceSeq),ackedInboundSeqs:x.ackedEntries().map(ke=>ke.sourceSeq),inboundHighWaterSeq:x.highWaterSourceSeq(),appliedFloorSeq:F,outboxTurnSignals:TQ(me)}},Fle=g=>{try{return PD(p6(g),{nowMs:Date.now()}).unfinished}catch(x){return n("runner.resume_scan_inspect_failed",{thread_id:g.kandanThreadId,phase:"rehydration_retire_guard",message:x instanceof Error?x.message:String(x)}),!0}},f6=(async()=>{let g=Be.list();if(g.length===0)return;let x=await BJ({records:g,nowMs:Date.now(),maxAgeMs:qR,pendingDurableRowCount:C=>Hx(zl(oy(),Vh({workspaceSlug:C.workspace,channelSlug:C.channel},C.kandanThreadId,Xe)),n).pendingEntries.length,hasUnfinishedWork:Fle,attach:async C=>{if(t.closePromise!==void 0)return n("session_registry.rehydrate_aborted_shutdown",{thread_id:C.kandanThreadId}),"failed";let A=yo(C.cwd,he.value);return A.ok?await YC(tf(C),A.cwd,C.codexThreadId)!==void 0?"attached":"failed":(n("session_registry.rehydrate_cwd_rejected",{thread_id:C.kandanThreadId,cwd:C.cwd,reason:A.reason}),"retire")},retire:C=>Be.remove(C.kandanThreadId),log:n});n("session_registry.rehydrate_complete",{records:g.length,rehydrated:x.rehydrated,retired_drained:x.retiredDrained,retired_stale:x.retiredStale,retired_unattachable:x.retiredUnattachable,kept_unfinished:x.keptUnfinished,failed:x.failed})})().catch(g=>{n("session_registry.rehydrate_failed",{message:g instanceof Error?g.message:String(g)})});t.actions.push(()=>f6);let m6=Promise.resolve(),eT=g=>{let x=m6.then(g,g);return m6=x,x},nT=async(g,x)=>{if(e.threadProcess?.role==="thread")return;let C=of(g);if(C.type!=="ok"||C.provider!=="codex")return;let A=bn(g,"workspace"),I=bn(g,"channel"),F=bn(g,"threadId");if(A===void 0||I===void 0||F===void 0)return;let me=j0(g);(g.modelProvider!==void 0||g.llmProxy!==void 0||g.linzumiAgent!==void 0)&&ZC.set(F,{...g.modelProvider===void 0?{}:{modelProvider:g.modelProvider},...g.llmProxy===void 0?{}:{llmProxy:g.llmProxy},...g.linzumiAgent===void 0?{}:{linzumiAgent:g.linzumiAgent}});let ke=GY(me);if(ke!==void 0)return{instanceId:Xe,controlType:g.type,ok:!1,error:ke,kandanThreadId:F,cwd:x};if(wm.has(F))return n("runner.reconnect_absorbed_by_reclaim_fence",{kandanThreadId:F,control_type:g.type,at:"preflight"}),{instanceId:Xe,controlType:g.type,ok:!0,delegated:!0,threadProcess:"already_started",kandanThreadId:F,cwd:x};if(ex.has(F))return n("runner.reconnect_absorbed_by_stop_retirement_fence",{kandanThreadId:F,control_type:g.type}),{instanceId:Xe,controlType:g.type,ok:!0,delegated:!0,threadProcess:"already_started",kandanThreadId:F,cwd:x};let Ke=_n.get(F);if(Ke!==void 0){let et=ry(Ke);if(et!=="dead")return{instanceId:Xe,controlType:g.type,ok:!0,delegated:!0,threadProcess:"already_started",kandanThreadId:F,cwd:x,adoptedLiveWorker:et==="live"};n("runner.thread_process_stale_entry_evicted",{kandanThreadId:F,codex_thread_id:g.type==="reconnect_thread"?y(g.codexThreadId)??null:null,prior_kind:Ke.kind,pid:Ke.kind==="running"?Ke.handle.processPid??null:null,control_type:g.type}),_n.get(F)===Ke&&_n.delete(F),lc(Ke).catch(()=>{})}let ze=fee(e.allowedCwds);ze.missing.length>0&&n("runner.stale_allowed_cwd_roots_pruned",{kandanThreadId:F,control_type:g.type,pruned_roots:ze.missing,remaining_root_count:ze.existing.length}),$e("thread_process_spawn",{kandanThreadId:F})&&Xo();let ot=K9(be,x);if(ot!==void 0)throw n("runner.cwd_stillbirth_circuit_open_start_refused",{kandanThreadId:F,cwd:x,control_type:g.type,consecutive_stillbirths:ot.count,last_stillbirth_at:ot.lastAt}),new Error(Z9(x,ot));let jn=e.spawnThreadRunner??wze,$o=dee(e);n("runner.thread_process_starting",{kandanThreadId:F,cwd:x,readyTimeoutMs:$o});let Yn=dze({options:ze.missing.length>0?{...e,allowedCwds:ze.existing}:e,control:g,cwd:x,workspaceSlug:A,channelSlug:I,kandanThreadId:F});if(wa(Yn)){let et=await Dt(),tr=WLe(e.runnerId),rr=await c4e({dependencyStatusRef:m,connectTimeStatus:e.dependencyStatus,machineVmUnready:et!==void 0&&!et.ready,cwd:x});rr.confirmation!=="not_needed"&&n("runner.vm_preflight_host_codex_reverified",{kandanThreadId:F,confirmed_available:rr.hostCodexAvailable,probe_failure:rr.probedCodex?.failure??null,probe_detail:rr.probedCodex?.failureDetail??null});let qt=d4e({vmRouted:!0,readiness:et,hostCodexAvailable:rr.hostCodexAvailable,hostCodexProbeDetail:rr.probedCodex?.failureDetail,explicitLocalVmOptIn:Yn.executionMode==="local_vm",freshStart:g.type==="start_instance",lastNoticedReadinessFingerprint:GLe(tr,n)});if(qt.route==="vm"&&et?.ready===!0&&WX(tr,void 0,n),qt.route==="host_fallback"){if(Yn={...Yn,executionMode:"raw"},n("runner.local_vm_unready_host_fallback",{kandanThreadId:F,control_type:g.type,blockers:[...qt.blockers],notice_posted:qt.postThreadNotice,readiness_fingerprint:qt.readinessFingerprint}),qt.postThreadNotice)try{await Ce.push(G,"session:post_thread_message",{workspace:A,channel:I,thread_id:F,body:qt.notice,client_message_id:`local-vm-host-fallback-${F}`,payload:{metadata:{local_codex_runner:{event_type:"local_vm_host_fallback_notice"}}}}),WX(tr,qt.readinessFingerprint,n)}catch(qo){n("runner.local_vm_unready_notice_post_failed",{kandanThreadId:F,message:qo instanceof Error?qo.message:String(qo)})}}else if(qt.route==="fail_loud")throw n("runner.local_vm_unready_start_refused",{kandanThreadId:F,control_type:g.type,blockers:[...qt.blockers]}),new Error(qt.reason)}let Bn=await eT(async()=>{if(wm.has(F))return n("runner.reconnect_absorbed_by_reclaim_fence",{kandanThreadId:F,control_type:g.type,at:"registration"}),{type:"already_started",response:{instanceId:Xe,controlType:g.type,ok:!0,delegated:!0,threadProcess:"already_started",kandanThreadId:F,cwd:x}};if(_n.get(F)!==void 0)return{type:"already_started",response:{instanceId:Xe,controlType:g.type,ok:!0,delegated:!0,threadProcess:"already_started",kandanThreadId:F,cwd:x}};let tr=Yn.multiAgentJobsEligible===!0,rr=Yn.multiAgentJobs===!0;if(tr&&rr!==Dr.value)return n("runner.thread_process_start_stale_multi_agent_authority",{kandanThreadId:F,control_type:g.type,configured:rr,live_enabled:Dr.value}),{type:"superseded",response:{instanceId:Xe,controlType:g.type,ok:!1,error:"thread worker start superseded by multi-agent authority",kandanThreadId:F,cwd:x}};let qt=Yn.linzumiAgentMcpToken!==void 0||Yn.codingJobMcpToken!==void 0,qo=eY(Yn);if(qt&&qo!==_m.value)return n("runner.thread_process_start_stale_document_surfaces_authority",{kandanThreadId:F,control_type:g.type,configured:qo,live_enabled:_m.value}),{type:"superseded",response:{instanceId:Xe,controlType:g.type,ok:!1,error:"thread worker start superseded by document surfaces authority",kandanThreadId:F,cwd:x}};let ta={kind:"starting",promise:Rze(jn(Yn),{kandanThreadId:F,timeoutMs:$o}),multiAgentJobs:{eligible:Yn.multiAgentJobsEligible===!0,configured:Yn.multiAgentJobs===!0},documentSurfaces:{eligible:qt,configured:qo}};return _n.set(F,ta),{type:"registered",entry:ta}});if(Bn.type==="already_started"||Bn.type==="superseded")return Bn.response;let uo=Bn.entry,Gt;try{if(Gt=await uo.promise,_n.get(F)!==uo)return n("runner.thread_process_start_superseded_by_authority",{kandanThreadId:F,control_type:g.type,eligible:uo.multiAgentJobs?.eligible??null,configured:uo.multiAgentJobs?.configured??null,live_enabled:Dr.value}),{instanceId:Xe,controlType:g.type,ok:!1,error:"thread worker start superseded by multi-agent authority",kandanThreadId:F,cwd:x}}catch(et){if(_n.get(F)===uo&&_n.delete(F),n("runner.thread_process_start_failed",{kandanThreadId:F,cwd:x,message:et instanceof Error?et.message:String(et)}),$e("thread_process_start_failed",{kandanThreadId:F})&&Xo(),vY(et)){let tr=B9(be,x,et,Date.now());n("runner.cwd_stillbirth_recorded",{kandanThreadId:F,cwd:x,consecutive_stillbirths:tr.count,circuit_open:tr.tripped})}throw et}J9(be,x)&&n("runner.cwd_stillbirth_counter_cleared",{kandanThreadId:F,cwd:x});for(let et of Gt.commanderManagedPorts??[])V(et.port,{processName:et.processName,processIconKey:et.processIconKey,agentProvider:et.agentProvider});try{let et=Gt.codex,tr=K0(()=>et.close());Gt.onExit?.(tr),Gt.onExit?.(()=>{t.closePromise===void 0&&WC(et).failActiveTurns("codex thread worker exited")}),Gt.onExit?.(()=>{Vt.clearThread(Cs(Zr(),I,F))});let rr={...Gt,close:async()=>{tr(),await Gt.close()},closeWithOutcome:async()=>(tr(),Gt.closeWithOutcome!==void 0?Gt.closeWithOutcome():(await Gt.close(),"already_exited"))},qt={kind:"running",handle:rr,...uo.multiAgentJobs===void 0?{}:{multiAgentJobs:uo.multiAgentJobs},...uo.documentSurfaces===void 0?{}:{documentSurfaces:uo.documentSurfaces}},qo,ta=pn=>(qo??=(async()=>{ex.add(F),_n.get(F)===qt&&_n.delete(F),n("runner.thread_process_stop_retirement_started",{kandanThreadId:F,reason:pn,pid:rr.processPid??null});try{let yn=await lc(qt);switch(yn){case"abandoned":throw rr.onExit?.(()=>{ex.delete(F),n("runner.thread_process_stop_retirement_late_exit",{kandanThreadId:F,reason:pn,pid:rr.processPid??null})}),n("runner.thread_process_stop_retirement_abandoned",{kandanThreadId:F,reason:pn,pid:rr.processPid??null}),new Error(`dynamic thread worker ${F} could not be confirmed retired after Stop`);case"already_exited":case"exited_after_sigint":case"exited_after_sigkill":ex.delete(F),n("runner.thread_process_stop_retirement_completed",{kandanThreadId:F,reason:pn,outcome:yn,pid:rr.processPid??null});return}}catch(yn){throw yn}})(),qo);_n.get(F)===uo&&_n.set(F,qt),Gt.onExit?.(()=>{_n.get(F)===qt&&_n.delete(F)}),Gt.onExit?.(()=>{if(t.closePromise===void 0)for(let[pn,yn]of Array.from(na.entries()))yn===et&&QC(pn,et)}),n("runner.thread_process_started",{kandanThreadId:F,cwd:x});let lu=(pn,yn,Yo)=>l6({control:pn,cwd:yn,codexThreadId:Yo,sessionCodex:et,portForwardWatcherRootPid:Gt.processPid,reapOwnedHarnessAfterStop:ta,commanderBoundPids:(Gt.commanderManagedPorts??[]).flatMap(In=>In.pid===void 0?[]:[In.pid]),commanderBoundPorts:(Gt.commanderManagedPorts??[]).map(In=>In.port)}),Ee=async pn=>{if(pn!==void 0&&pn.ok!==!1)return pn;let yn=_n.get(F);return(yn===uo||yn?.kind==="running")&&_n.delete(F),await(yn?.kind==="running"?yn.handle.close():Gt.close()).catch(()=>{}),pn};switch(g.type){case"start_instance":{let pn=await ZY({codex:et,kandan:Ce,topic:G,control:g,options:e,instanceId:Xe,cwd:x,matchedRoot:x,onStartedThread:lu,setStartupStage:()=>{},setStartedCodexThreadId:()=>{}});return await Ee(pn.controlResponse)}case"reconnect_thread":return await Ee(await e1(et,Ce,G,Xe,e,R(),pe,he,Ze,xe,vr,vm,vl,BC,Q_,g,KC,a,lu,void 0,void 0,pn=>Zs.current(pn),ou,iu,Na,ns,void 0,void 0,GC))}}catch(et){let tr=_n.get(F);throw(tr===uo||tr?.kind==="running")&&_n.delete(F),await(tr?.kind==="running"?tr.handle.close():Gt.close()).catch(()=>{}),et}},Sm=new Map,tT=new Map,h6=async(g,x,C)=>{try{n("runner.spawn_on_miss_replay_on_sibling",{kandanThreadId:g.threadId??null,codex_thread_id:x.codexThreadId,seq:g.seq});let A=await VC({codexThreadId:x.codexThreadId,kandanThreadId:g.threadId,wait:XC(x.codexThreadId,{waitForSiblingSpawn:!0})});if(A===void 0)throw new Error(`spawn-on-miss could not resolve a live session for codex thread ${x.codexThreadId}`);let I=A.currentKandanThreadId();if(g.threadId!==void 0&&I!==void 0&&I!==g.threadId)throw new Lu({codexThreadId:x.codexThreadId,ownerKandanThreadId:I,requestingKandanThreadId:g.threadId});return await A.startThreadMessageTurn({seq:g.seq,body:g.body,actorSlug:g.actorSlug,actorUserId:g.actorUserId,attachments:g.attachments,boundStartTimeout:!0,adtStream:C.adtStream}),"dispatched"}catch(A){return n("runner.spawn_on_miss_failed",{kandanThreadId:g.threadId??null,codex_thread_id:x.codexThreadId,seq:g.seq,message:A instanceof Error?A.message:String(A)}),await za(C,"failed",`could not resume the thread's coding session: ${A instanceof Error?A.message:String(A)}`,x.codexThreadId,{failureClass:"resume_transient"}),"transient_failed"}},g6=async g=>{let x=g.threadId;if(!Sd(e)||x===void 0)return"ignored";let C=`${x}:${g.seq}`,A=tT.get(C);if(A!==void 0){let F=await A;return F==="spawned"?"spawned_deduped":F}let I=jle(g,x);tT.set(C,I);try{return await I}finally{tT.delete(C)}},jle=async(g,x)=>{let C=_n.get(x);if((C===void 0?void 0:ry(C))==="live")return"ignored";let I=Be.list().find(ze=>ze.kandanThreadId===x);if(I===void 0){let ze=rs();if(ze===void 0||!Qs())return"ignored";let jn=Oo(ze,x).enqueue(g.seq,g.localRunnerEventType===void 0?"live":"replay",Tl(g),Date.now());return n("runner.spawn_on_miss_enqueued_without_local_record",{kandanThreadId:x,channel:ze,seq:g.seq,enqueued:jn.accepted}),await Vle(ze,g),"spawned"}let F=I.channel,me=Cs(Zr(),F,x),ke=Oo(F,x);if(!Qs()){let ze=ke.enqueue(g.seq,g.localRunnerEventType===void 0?"live":"replay",Tl(g),Date.now());return n("runner.spawn_on_miss_drain_in_progress",{kandanThreadId:x,seq:g.seq,enqueued:ze.accepted}),"spawned"}return await jX({queue:ke,store:qn,lock:Hs,leases:Zs,threadId:x,watermarkKey:me,sourceSeq:g.seq,kind:g.localRunnerEventType===void 0?"live":"replay",payload:Tl(g),leaseEpoch:OX(g),dispatch:async(ze,ot)=>{let jn=PT(ot);return jn===void 0?(n("runner.spawn_on_miss_bad_payload",{kandanThreadId:x,seq:ze}),"permanent_failed"):await w6(jn,I)},serverRows:ts.get(x)??[],onDeadLetter:C6(I),inFlightGuard:Vt,log:n})==="ignored"?"ignored":"spawned"},nx=async(g,x=[])=>{if(!Qs())return;let C=g.kandanThreadId,A=g.channel,I=Cs(Zr(),A,C),F=Oo(A,C);await LX({queue:F,store:qn,lock:Hs,threadId:C,watermarkKey:I,serverRows:x,log:n,onlyDispatchUnattempted:x.length===0,onDeadLetter:C6(g),inFlightGuard:Vt,onTornTailUnrecoverable:async me=>{let ke=tf(g);await za(ke,"failed","a message may have been lost during an unexpected shutdown (power loss). Please resend your last message to continue this job.",g.codexThreadId,{failureClass:"resume_torn_tail"}),n("runner.inbound_torn_tail_resend_published",{kandanThreadId:me})},dispatch:async(me,ke)=>{let Ke=PT(ke);return Ke===void 0?(n("runner.inbound_drain_bad_payload",{kandanThreadId:C,seq:me}),"permanent_failed"):await w6(Ke,g)}})},Lle=async(g,x)=>{if(x!==void 0&&x.ok===!1||!Qs())return;let C=Be.list().find(I=>I.kandanThreadId===g);if(C===void 0)return;let A=Oo(C.channel,g);A.entries().length!==0&&(n("runner.inbound_drain_after_spawn",{kandanThreadId:g,channel:C.channel,pending:A.entries().length}),await nx(C,ts.get(g)??[]).catch(I=>{n("runner.inbound_drain_after_spawn_failed",{kandanThreadId:g,message:I instanceof Error?I.message:String(I)})}))},Nle=async(g,x)=>{let C=await nT(g,x),A=bn(g,"threadId");return A!==void 0&&await Lle(A,C),g.type==="reconnect_thread"&&ZD(C)&&C!==void 0?await zle(g,C):C},zle=async(g,x)=>{let C=bo(g.workDescription),A=Y(g.sourceSeq)??Y(g.rootSeq),I=bn(g,"threadId"),F=bn(g,"channel"),me=y(g.codexThreadId),ke=y(g.transportCeilingRecoveryRequestId);if(C===void 0||A===void 0||I===void 0||me===void 0)return x;try{let Ke=await VC({codexThreadId:me,kandanThreadId:I,wait:XC(me,{waitForSiblingSpawn:!0})});if(Ke===void 0)throw new Error(`no live session attached for codex thread ${me}`);let ze=Ke.currentKandanThreadId();if(ze!==void 0&&ze!==I)throw new Lu({codexThreadId:me,ownerKandanThreadId:ze,requestingKandanThreadId:I});let ot=await MLe({retryPendingSettlement:()=>Ke.retryPendingSourceSettlement(A),sourceSeqAlreadyApplied:()=>F===void 0?(n("runner.reconnect_follow_up_missing_channel",{kandanThreadId:I,codex_thread_id:me,source_seq:A}),!1):ns({channel:F,threadId:I,sourceSeq:A,transportCeilingRecoveryRequestId:ke})});switch(ot.type){case"duplicate":return ot.reason==="already_applied"&&n("runner.reconnect_follow_up_already_applied",{kandanThreadId:I,codex_thread_id:me,source_seq:A}),{...x,followUp:"duplicate",sourceSeq:A};case"route":break}let jn=ei(e.token),$o=await Ke.startThreadMessageTurn({seq:A,body:C,actorSlug:jn.actorUsername,actorUserId:jn.actorUserId,attachments:Mi(je(g.attachments)??[]),boundStartTimeout:!0,reclaimOnStartTimeout:x.adoptedLiveWorker===!0,dedupBySeq:ke===void 0,transportCeilingRecoveryRequestId:ke,adtStream:g.adtStream});return n("runner.reconnect_follow_up_routed_to_live_worker",{kandanThreadId:I,codex_thread_id:me,source_seq:A,outcome:$o}),{...x,followUp:$o,sourceSeq:A}}catch(Ke){let ze=Ke instanceof Error?Ke.message:String(Ke);return n("runner.reconnect_follow_up_route_failed",{kandanThreadId:I,codex_thread_id:me,source_seq:A,message:ze}),{...x,followUp:"route_failed",followUpError:ze,sourceSeq:A}}},y6=g=>{let x=new Map,C=SQ(g);for(let A of C){A.leaseEpoch!==void 0&&Zs.adopt(A.threadId,A.leaseEpoch)&&n("runner.resume_reconcile_lease_adopted",{kandanThreadId:A.threadId,leaseEpoch:A.leaseEpoch});let I=kQ(A);x.set(A.threadId,I),ts.set(A.threadId,I)}return C.length>0&&n("runner.resume_reconcile_consumed",{threadCount:C.length}),x},_6=async()=>{let g=SD(),x;try{x=IY(g).filter(I=>I.endsWith(".log"))}catch(I){if(I?.code==="ENOENT")return;n("runner.inbound_orphan_scan_failed",{message:I instanceof Error?I.message:String(I)});return}let C=Zr(),A=new Set(Be.list().map(I=>kD(C,I.channel,I.kandanThreadId)));for(let I of x){let F=ht(g,I);if(!A.has(F))try{let me=wD(F,n),ke=me.entries();if(ke.length===0)continue;for(let Ke of ke)me.deadLetter(Ke.sourceSeq);me.compact(),n("runner.inbound_orphan_dead_lettered",{path:F,strandedCount:ke.length,strandedSeqs:ke.map(Ke=>Ke.sourceSeq)})}catch(me){n("runner.inbound_orphan_drain_failed",{path:F,message:me instanceof Error?me.message:String(me)})}}},x6=async g=>{if(!Qs())return;let x=Be.list();await Promise.all(x.map(C=>nx(C,g?.get(C.kandanThreadId)??[]).catch(A=>{n("runner.inbound_drain_failed",{kandanThreadId:C.kandanThreadId,message:A instanceof Error?A.message:String(A)})}))),await _6()},Ule=g=>g==="accepted_never_framed"?"this message was accepted but a runner restart killed it before it ran. Resend it (or press retry) to run it now.":"interrupted by a runner restart before it finished. Resend your last message (or press retry) to continue this job.",Ble=async g=>{let x=Date.now()+g;for(;;){if(t.closePromise!==void 0)return;let C=x-Date.now();if(C<=0)return;await new Promise(A=>setTimeout(A,Math.min(500,C)))}},Jle=async()=>{!Qs()||t.closePromise!==void 0||(await PQ({records:Be.list(),threadId:g=>g.kandanThreadId,inspect:p6,resumePendingInbound:async g=>(await nx(g,ts.get(g.kandanThreadId)??[]),Oo(g.channel,g.kandanThreadId).entries().length===0?"clear":"retry"),respawnWorker:async g=>{if(t.closePromise!==void 0)return!1;let x=yo(g.cwd,he.value);return x.ok?await YC(tf(g),x.cwd,g.codexThreadId)!==void 0:(n("runner.resume_respawn_cwd_rejected",{thread_id:g.kandanThreadId,cwd:g.cwd,reason:x.reason}),!1)},seqInFlight:(g,x)=>Vt.has(Cs(Zr(),g.channel,g.kandanThreadId),x),publishInterruptedTurnState:async(g,x,C)=>{await za({...tf(g),sourceSeq:x},"failed",Ule(C),g.codexThreadId,{failureClass:"resurrection_interrupted"})},shuttingDown:()=>t.closePromise!==void 0||!Qs(),sleep:Ble,log:n}),await _6())};y6(M(Qo)?.resume_reconcile);let Kle=f6.then(()=>Jle()).catch(g=>{n("runner.inbound_boot_drain_failed",{message:g instanceof Error?g.message:String(g)})});t.actions.push(()=>Kle),Ce.onReconnect(g=>{let x=g.get(G),C=y6(x===void 0?void 0:x.resume_reconcile);x6(C).catch(A=>{n("runner.inbound_rejoin_drain_failed",{message:A instanceof Error?A.message:String(A)})})});let cu=new Map,b6=(g,x)=>`${g}:${x}`,v6={windowMs:cg(process.env),recordWedge:(g,x)=>{let C=b6(g,x),A=(cu.get(C)??0)+1;if(cu.delete(C),cu.size>=256){let I=cu.keys().next().value;I!==void 0&&cu.delete(I)}return cu.set(C,A),A},clear:(g,x)=>{cu.delete(b6(g,x))},killAndRespawn:async({threadId:g,claudeSessionId:x,reason:C})=>{let A=Ts(vr,[x],[g]);if(A!==void 0){n("claude_code.dispatch_supervisor_killing_session",{linzumi_thread_id:g,claude_session_id:x,reason:C}),A.abortController.abort(new Error(C));let F=A.sessionWork();F!==void 0&&await Promise.race([F.catch(()=>{}),new Promise(me=>{setTimeout(me,1e4).unref?.()})])}let I=Be.list().find(F=>F.kandanThreadId===g);return I===void 0?(n("claude_code.dispatch_supervisor_no_registry_record",{linzumi_thread_id:g,claude_session_id:x}),"no_replay_path"):(await nx(I,ts.get(g)??[]),"respawn_dispatched")}},w6=async(g,x)=>{let C=x.kandanThreadId,A=tf(x),I=ZC.get(C),F={...A,sourceSeq:g.seq,workDescription:g.body,...g.attachments.length===0?{}:{attachments:px(g.attachments)},...I?.modelProvider===void 0?{}:{modelProvider:I.modelProvider},...I?.llmProxy===void 0?{}:{llmProxy:I.llmProxy},...I?.linzumiAgent===void 0?{}:{linzumiAgent:I.linzumiAgent}},me=yo(x.cwd,he.value);if(!me.ok)return n("runner.spawn_on_miss_cwd_rejected",{kandanThreadId:C,cwd:x.cwd,reason:me.reason,seq:g.seq}),await za(F,"failed",`could not resume the thread's coding session: working directory ${x.cwd} is not an allowed root (${me.reason})`,x.codexThreadId,{failureClass:"resume_cwd_not_allowed"}),"permanent_failed";let ke=me.cwd,Ke=Sm.get(C);if(Ke!==void 0)return n("runner.spawn_on_miss_resuming",{kandanThreadId:C,codex_thread_id:x.codexThreadId,provider_session_key:x.codexThreadId,seq:g.seq,decision:"await_in_flight_spawn"}),await Ke==="no_session"?(await za(F,"failed","could not resume the thread's coding session: no live session after spawn",x.codexThreadId,{failureClass:"resume_transient"}),"transient_failed"):await h6(g,x,F);n("runner.spawn_on_miss_resuming",{kandanThreadId:C,codex_thread_id:x.codexThreadId,provider_session_key:x.codexThreadId,seq:g.seq,decision:"spawned_resume"}),ea.note(x.codexThreadId,"spawn_requested");let ze=()=>{},ot=new Promise(jn=>{ze=jn});Sm.set(C,ot);try{let jn=await nT(F,ke);if(ZD(jn))return ze("spawned"),await h6(g,x,F);if(jn===void 0||jn.ok===!1){ze("no_session");let $o=jn!==void 0&&typeof jn.error=="string"?jn.error:"the thread could not be resumed (no resumable codex session)";return ea.fail(x.codexThreadId,$o),Y_(x.codexThreadId,new Error($o)),n("runner.spawn_on_miss_failed",{kandanThreadId:C,codex_thread_id:x.codexThreadId,seq:g.seq,message:$o}),await za(F,"failed",`could not resume the thread's coding session: ${$o}`,x.codexThreadId,{failureClass:"resume_transient"}),"transient_failed"}return ze("spawned"),"dispatched"}catch(jn){return ze("no_session"),ea.fail(x.codexThreadId,jn instanceof Error?jn.message:String(jn)),Y_(x.codexThreadId,jn instanceof Error?jn:new Error(String(jn))),n("runner.spawn_on_miss_failed",{kandanThreadId:C,codex_thread_id:x.codexThreadId,seq:g.seq,message:jn instanceof Error?jn.message:String(jn)}),await za(F,"failed",`could not resume the thread's coding session: ${jn instanceof Error?jn.message:String(jn)}`,x.codexThreadId,{failureClass:"resume_transient"}),"transient_failed"}finally{ze("spawned"),Sm.get(C)===ot&&Sm.delete(C)}},za=async(g,x,C,A,I={})=>{let F=Td(g,x,C,{instanceId:Xe,codexThreadId:A,...jl(I.failureClass)});if(F!==void 0)try{await Ce.push(G,"message_state",F)}catch(me){n("runner.spawn_on_miss_state_push_failed",{thread_id:bn(g,"threadId")??null,status:x,message:me instanceof Error?me.message:String(me)})}},S6=async(g,x)=>{let{reason:C,failureClass:A}=gze(x),I=Td(g,"failed",C,{instanceId:Xe,...jl(A)});if(I===void 0){n("runner.stillborn_worker_failed_state_unpublishable",{thread_id:bn(g,"threadId")??null,control_type:g.type,reason:C,cause:"missing_source_seq"});return}try{await Ce.push(G,"message_state",I),n("runner.stillborn_worker_failed_state_published",{thread_id:bn(g,"threadId")??null,control_type:g.type,reason:C})}catch(F){n("runner.stillborn_worker_failed_state_push_failed",{thread_id:bn(g,"threadId")??null,control_type:g.type,message:F instanceof Error?F.message:String(F)})}},k6=async(g,x)=>{let C=f.refusalReason(x),A=!1;switch(n("runner.execution_health_claim_refused",{control_type:g.type,thread_id:xo(g)??null,source_seq:g.type==="start_turn"?null:Y(g.sourceSeq)??Y(g.rootSeq)??null,reason:C,adapter:x}),g.type){case"start_instance":case"reconnect_thread":{if((Y(g.sourceSeq)??Y(g.rootSeq))===void 0)A=!0,n("runner.execution_health_failed_state_unpublishable",{control_type:g.type,thread_id:xo(g)??null,reason:C,cause:"missing_source_seq"});else try{await kr(Ce,G,g,"failed",C,{instanceId:Xe,failureClass:"stillborn_worker"})}catch(F){A=!0,n("runner.execution_health_failed_state_push_failed",{control_type:g.type,thread_id:xo(g)??null,reason:C,message:F instanceof Error?F.message:String(F)})}break}case"start_turn":break}if(await Ce.push(G,"codex_error",{instanceId:Xe,message:C}),A)throw new Error(`runner execution-health refusal was not durably published: ${C}`)},Vle=async(g,x)=>{if(x.threadId===void 0)return;let C={workspace:Zr(),channel:g,thread_id:x.threadId,instance_id:Xe,seq:x.seq,status:"queued",reason:"queued for durable resume"};try{await Ce.push(G,"message_state",C)}catch(A){n("runner.spawn_on_miss_state_push_failed",{thread_id:x.threadId,status:"queued",message:A instanceof Error?A.message:String(A)})}},tx=[],rT=qQ(process.env),Wle=async g=>{try{let x=bn(g,"threadId"),C=YNe({control:g,hasRegistryRecord:x!==void 0&&Be.list().some(F=>F.kandanThreadId===x),runtimeSettings:gc(e,g),identity:ei(e.token),nowMs:Date.now()});if(C===void 0)return!1;let A=Td(g,"queued",OQ,{instanceId:Xe,...C.codexThreadId===void 0?{}:{codexThreadId:C.codexThreadId}}),I=await eze({plan:C,queuedStatePayload:A,queue:Oo(C.channel,C.threadId),upsertRegistryRecord:F=>Be.upsert(F),pushQueuedState:async F=>{await Ce.push(G,"message_state",F)},trackHeld:F=>{tx.push({control:g,...F})},log:n,nowMs:Date.now()});return I.held?(n("runner.update_restart_drain_start_held",{control_type:g.type,thread_id:C.threadId,source_seq:C.sourceSeq,enqueued:I.enqueuedFresh,registry_record_synthesized:C.registryRecord!==void 0,max_wait_ms:rT}),!0):!1}catch(x){return n("runner.update_restart_drain_hold_failed",{control_type:g.type,thread_id:bn(g,"threadId")??null,message:x instanceof Error?x.message:String(x)}),!1}},Gle=async()=>{let g=Date.now();for(let x of[...tx]){if(g-x.heldAtMs<rT)continue;let C=tx.indexOf(x);C!==-1&&tx.splice(C,1);let A=Oo(x.channel,x.threadId);A.entries().find(F=>F.sourceSeq===x.sourceSeq)!==void 0&&(A.deadLetter(x.sourceSeq),n("runner.update_restart_drain_held_turn_expired",{thread_id:x.threadId,source_seq:x.sourceSeq,held_for_ms:g-x.heldAtMs,max_wait_ms:rT}),await S6(x.control,new Error(ED)))}},km,Hle=()=>{km===void 0&&(km=setInterval(()=>{Gle().catch(g=>{n("runner.update_restart_drain_held_sweep_failed",{message:g instanceof Error?g.message:String(g)})})},$Q))};t.actions.push(()=>{km!==void 0&&(clearInterval(km),km=void 0)});let C6=g=>async({sourceSeq:x,reason:C,attempts:A,alreadyPublished:I})=>{n("runner.inbound_dead_lettered",{kandanThreadId:g.kandanThreadId,seq:x,reason:C,attempts:A,alreadyPublished:I}),!I&&await za(tf(g),"failed",QNe(C),g.codexThreadId,{failureClass:XNe(C)})},oT=()=>{if(lr!==void 0)return!1;for(let g of uu.values())if(g.activeTurnCount()>0)return!1;for(let g of vr.values())if(g.hasActiveTurn())return!1;for(let g of _n.values())if(g.kind==="starting")return!1;return!(Sm.size>0||xe.size>0)},Zle=()=>{if(!oT())return!1;for(let g of Zo.values())if(g.entries().length>0)return!1;return!0},T6=GG(process.env),iT=HG({currentVersion:jt,strategy:zG({env:process.env,entrypointPath:process.argv[1]}),isIdle:Zle,...T6===void 0?{}:{drain:{timing:T6,hooks:{begin:()=>{gl=!0},end:({redispatchHeldWork:g})=>{gl=!1,g&&x6().catch(x=>{n("runner.update_drain_requeue_failed",{message:x instanceof Error?x.message:String(x)})})},isQuiescent:oT,isEligible:()=>lr===void 0}}},performRestart:WG({currentVersion:jt,argv:process.argv.slice(2),cwd:e.cwd,close:r,exit:g=>process.exit(g),log:n}),log:n,restartAttemptStore:Xw(UG())});t.actions.push(()=>iT.stop()),i.beginDraining=()=>{if(d?.outgoingDrainActive()===!0){n("runner.generation_outgoing_gate_open",{pinned:d.outgoingPins.size()});return}J_=!0,gl=!0,Hle()},i.onTurnCompleted=g=>{if(!(d===void 0||!d.outgoingDrainActive())&&d.outgoingPins.release(g.threadId)){let x=d.sendToSupervisor({type:"generation_pin_released",epoch:d.epoch,threadId:g.threadId});n("runner.generation_pin_released_sent",{threadId:g.threadId,remaining:d.outgoingPins.size(),delivered:x})}},i.isQuiescent=oT,i.isWaitEligible=()=>lr===void 0,i.inFlightTurns=()=>[...Array.from(uu.values()).flatMap(g=>g.activeTurns().map(x=>({threadId:x.threadId,turnId:x.turnId,engine:"codex"}))),...Array.from(vr.values()).filter(g=>g.hasActiveTurn()).map(g=>({threadId:g.threadId,engine:"claude_code"}))],i.lastActivityAtMs=()=>{let g;for(let x of uu.values()){let C=x.lastActivityAtMs();C!==void 0&&(g===void 0||C>g)&&(g=C)}for(let x of vr.values()){let C=x.lastSdkActivityMs();C>0&&(g===void 0||C>g)&&(g=C)}return g},i.publishForcedKillTerminalStates=g=>{n("runner.drain_forced_kill_states_publishing",{turn_count:g.length,thread_ids:g.map(A=>A.threadId)});let x=new Set(g.filter(A=>A.engine==="codex").map(A=>A.threadId)),C=new Set([lr,...nr.values()].filter(A=>A!==void 0).flatMap(A=>A.pendingApprovalTurnIds()));for(let A of uu.values())A.activeTurns().some(I=>x.has(I.threadId))&&A.failActiveTurns(I=>C.has(I.turnId)?NQ:LQ);return Promise.resolve()};let Qle=()=>({instanceId:Xe,clientId:Ne,...os===void 0?{}:{codexUrl:os},cwd:e.cwd,hostname:vn,workspace:Kn(e)??null,channel:e.channelSession?.channelSlug??null,threadId:lr?.currentKandanThreadId()??null,codexThreadId:lr?.currentCodexThreadId()??null,codexThreads:bm.value,model:xl.model??null,reasoningEffort:xl.reasoningEffort??null,allowPortForwardingByDefault:xl.allowPortForwardingByDefault??null,fast:e.fast??!1,capabilities:q(),updateNudge:iT.status()??null}),Cm=g=>Ce.push(G,"heartbeat",{...Qle(),...g===void 0?{}:tN(g)}).then(()=>{Ie.recordServerAck();for(let x of vr.values())x.resumeOutbox()}),Xo=()=>Cm().catch(g=>{n("kandan.heartbeat_push_failed",{message:g instanceof Error?g.message:String(g)})}),Xle=g=>{for(let x of uu.values())if(x.activeTurns().some(C=>C.threadId===g))return!0;for(let x of vr.values())if(x.threadId===g)return!0;return!1},Yle=setInterval(()=>{for(let g of X_()){let x=g.adtStallHeartbeatCandidate();if(x===void 0)continue;let{threadId:C,session:A}=x;Ce.push(G,M4,{session_id:A.binding.sessionId,lease_epoch:A.binding.leaseEpoch,harness_alive:Xle(C)}).catch(I=>{n("adt.stall_heartbeat_push_failed",{session_id:A.binding.sessionId,message:I instanceof Error?I.message:String(I)})})}},3e4);t.actions.push(()=>clearInterval(Yle));let epe=setInterval(()=>{Ie.check(),ee.check(()=>{Xo()}),fe.check(()=>{Xo()}),Xo()},15e3);if(t.actions.push(()=>clearInterval(epe)),Ce.onReconnect(()=>Xo().then(()=>{})),Xo(),e.threadProcess?.role!=="thread"&&Zv()){let g=TW(PW({kandanUrl:e.kandanUrl,token:e.token,computeKey:yw(e.kandanUrl),query:bw({kandanUrl:e.kandanUrl,token:e.token}),log:x=>n("vm.golden_gc",{line:x})}));t.actions.push(g)}let P6=rG(Ce,G,()=>Array.from(ge));t.actions.push(()=>P6.close());let Ua=lr?.currentCodexThreadId();if(e.launchTui&&xt===void 0)throw new Error("Codex TUI requires a Codex app-server connection");if(e.launchTui&&xt!==void 0&&Ua!==void 0){let g=e.channelSession;if(g===void 0)throw new Error("Codex TUI persisted-thread resume requires channel session context");if(g.kandanThreadId===void 0)throw new Error("Codex TUI persisted-thread resume requires a Linzumi thread identity");let x={workspace:g.workspaceSlug,channel:g.channelSlug,threadId:g.kandanThreadId},C=await tNe(xt,Ua,{log:n,buildRehydrationItems:async A=>{let I=await Wh(Ce,G,x,n);if(I===void 0||I.nodes.length===0){n("linzumi.tui_thread_rehydration_ir_unavailable",{codex_thread_id:Ua,linzumi_thread_id:g.kandanThreadId??null,reason:I===void 0?"transcript_unavailable":"no_nodes",resume_failure:A,degraded_to:"text_leg"});return}let F=Wl({nodes:I.nodes,budget:I.budget,resumeFailure:A,threadTitle:I.threadTitle,linzumiContext:void 0});return n("linzumi.tui_thread_rehydration_ir_emitted",{codex_thread_id:Ua,linzumi_thread_id:g.kandanThreadId??null,emitted_nodes:F.emittedNodeCount,omitted_nodes:F.omittedNodeCount,redacted_reasoning:F.redactedReasoningCount,emitted_token_estimate:F.emittedTokenEstimate,max_emission_tokens:F.maxEmissionTokens}),F.items},buildRehydrationText:async A=>hh({messages:await cv(Ce,G,x,n),resumeFailure:A})});if(C.mode==="rehydrated"){n("linzumi.tui_thread_rehydrated",{codex_thread_id:Ua,linzumi_thread_id:g.kandanThreadId??null,resume_failure:C.resumeFailure});try{await KY({kandan:Ce,topic:G,workspace:g.workspaceSlug,channel:g.channelSlug,threadId:g.kandanThreadId,provider:"codex",providerSessionId:Ua,resumeFailure:C.resumeFailure})}catch(A){n("linzumi.tui_thread_rehydration_notice_failed",{codex_thread_id:Ua,linzumi_thread_id:g.kandanThreadId??null,message:A instanceof Error?A.message:String(A)})}}}let I6=e.launchTui&&os!==void 0?Z6e(e.codexBin,os,e.cwd,Ua,e.channelSession,e.fast):void 0;I6!==void 0&&t.actions.push(()=>{I6.kill("SIGINT")});let sT=xt===void 0?void 0:WC(xt);if(xt?.onNotification(g=>{JC.value+=1;let x=g.params??{},C=dM(g.method,x);if(g.method==="account/rateLimits/updated"&&e.channelSession?.kandanThreadId!==void 0){let A=zW(x);Ce.push(G,"codex_rate_limit_state",{workspace:e.channelSession.workspaceSlug,channel:e.channelSession.channelSlug,thread_id:e.channelSession.kandanThreadId,agent_provider:"codex",rate_limit_type:"account",status:A.status,utilization_percent:A.utilizationPercent,summary:A.summary}).catch(I=>{n("linzumi.codex_rate_limit_state_push_failed",{thread_id:e.channelSession?.kandanThreadId??null,message:I instanceof Error?I.message:String(I)})})}lr===void 0&&Ce.push(G,"codex_notification",{instanceId:Xe,seq:JC.value,method:g.method,params:x,metadata:C.metadata,receivedAt:new Date().toISOString()}).catch(A=>{n("kandan.codex_notification_push_failed",{message:A instanceof Error?A.message:String(A)})}),n("codex.notification",C),T(g.method,x),sT?.observeNotification(g.method,x),bl.dispatch(X_(),g.method,x)}),sT!==void 0){let g={handled:!1},x=C=>{if(t.closePromise!==void 0)return;p?n("runner.shared_codex_connection_lost_worker_launcher_retained",{runnerId:e.runnerId,cause:C}):h(C,"codex");let A=Cm().catch(I=>{n("linzumi.required_failed_health_heartbeat_push_failed",{message:I instanceof Error?I.message:String(I)})});if(n("codex.app_server_connection_lost",{cause:C}),sT.failActiveTurns(C),ao?.stop(),r6&&!p&&!g.handled){g.handled=!0;let I=E6e(I6e(HX(e.runnerId),ze=>{n("runner.app_server_exit_loop_stamp_write_failed",{message:ze,statePath:HX(e.runnerId)}),console.error(`Warning: could not persist the app-server crash-loop stamp (${ze}); the exit-code-${QD} give-up bound cannot take effect across restarts until the state path is writable.`)}),Date.now()),F=I.crashLoop?QD:75,me=R6e(e.cwd),ke=me===void 0?"":` Likely trigger: ${me}.`;if(I.crashLoop){let ze=e.logFile??Sx();n("runner.app_server_crash_loop_gave_up",{cause:C,exitsInWindow:I.count,windowMs:BY,exitCode:F,cwd_missing_diagnosis:me??null}),console.error(`The Codex app-server has died ${I.count} times in rapid succession (latest cause: ${C}).${ke} Restarting the runner is not fixing it, so this exit uses code ${QD} (instead of the restart-requesting 75) to stop the crash loop. Diagnose before reconnecting: the runner log is at ${ze} and the CLI audit log at ${JT()} (look for the app-server's exit reason/stderr). Once resolved, run \`linzumi connect\` to reconnect.`)}else console.error(`Codex app-server connection was lost (${C}); exiting so a fresh runner can relaunch it.${ke} Run \`linzumi connect\` to reconnect.`);let Ke=[...lr!==void 0?[lr]:[],...nr.values()].map(ze=>ze.close().catch(ot=>{n("codex.app_server_lost_session_drain_failed",{message:ot instanceof Error?ot.message:String(ot)})}));T6e({pushes:[...s6,...Ke],requiredHealthPublication:A,exit:()=>process.exit(F),safetyCapMs:5e3})}};xt?.onClose?.(C=>x(C.message)),ao?.process.once("exit",(C,A)=>x(`codex app-server process exited (${C??A??"unknown"})`))}let npe=g=>{let x=yw(e.kandanUrl),C=g.cwd!==void 0&&g.cwd.trim()!==""?g.cwd:e.cwd;if(i4e(C)){let I=`cwd_dangerous: golden build refused - resolved build cwd ${JSON.stringify(C)} is not a safe project directory (empty, filesystem root, or non-absolute). Re-run from the project's repository checkout.`;return n("vm.golden_build_failed",{runnerId:e.runnerId,goldenImagePublicId:g.goldenImagePublicId,projectPublicId:g.projectPublicId??null,computeKey:x,cwdDangerous:!0,failureReason:I}),Ce.push(G,"golden_image_build_result",{golden_image_public_id:g.goldenImagePublicId,build_claim_token:g.buildClaimToken,project_public_id:g.projectPublicId??null,status:"failed",checksum:null,size_bytes:null,artifact_ref:null,source_commits:{},lockfile_hashes:{},toolchain_versions:{},compute_key:x,failure_reason:I})}n("vm.golden_build_started",{runnerId:e.runnerId,goldenImagePublicId:g.goldenImagePublicId,projectPublicId:g.projectPublicId??null,computeKey:x,sourceThreadId:g.sourceThreadId??null,cwd:C});try{N7(EA({projectPublicId:g.projectPublicId??void 0,computeKey:x,cwd:C}))}catch(I){n("vm.golden_build_register_failed",{goldenImagePublicId:g.goldenImagePublicId,message:I instanceof Error?I.message:String(I)})}let A=g.sourceThreadId===void 0?void 0:{threadId:g.sourceThreadId,sourceMachineName:Qv({cwd:C,kandanThreadId:g.sourceThreadId})};return MV({cwd:C,projectPublicId:g.projectPublicId??void 0,computeKey:x,name:g.name,...A===void 0?{}:{sourceThread:A},log:I=>n("vm.golden_build",{line:I})}).then(I=>(n("vm.golden_build_ready",{runnerId:e.runnerId,goldenImagePublicId:g.goldenImagePublicId,checksum:I.checksum,sizeBytes:I.sizeBytes,artifactRef:I.artifactRef,artifactKind:I.artifactKind,snapshotFallbackReason:I.snapshotFallbackReason??null}),Ce.push(G,"golden_image_build_result",{golden_image_public_id:g.goldenImagePublicId,build_claim_token:g.buildClaimToken,project_public_id:g.projectPublicId??null,status:"ready",checksum:I.checksum,size_bytes:I.sizeBytes,artifact_ref:I.artifactRef,artifact_kind:I.artifactKind,source_commits:I.sourceCommits,lockfile_hashes:I.lockfileHashes,toolchain_versions:I.toolchainVersions,compute_key:x,failure_reason:null,metadata:I.snapshotFallbackReason===void 0?{}:{snapshot_fallback_reason:I.snapshotFallbackReason}}))).catch(I=>{let F=I instanceof qp||I instanceof Error?I.message:String(I);return n("vm.golden_build_failed",{runnerId:e.runnerId,goldenImagePublicId:g.goldenImagePublicId,captureUnavailable:I instanceof qp,failureReason:F}),Ce.push(G,"golden_image_build_result",{golden_image_public_id:g.goldenImagePublicId,build_claim_token:g.buildClaimToken,project_public_id:g.projectPublicId??null,status:"failed",checksum:null,size_bytes:null,artifact_ref:null,source_commits:{},lockfile_hashes:{},toolchain_versions:{},compute_key:x,failure_reason:F})}).catch(I=>{throw n("vm.golden_build_result_push_failed",{goldenImagePublicId:g.goldenImagePublicId,message:I instanceof Error?I.message:String(I)}),I})},aT=new WeakSet,R6=async(g,x,C)=>{let A=xt!==void 0&&e.channelSession===void 0&&e.threadProcess?.role!=="thread",I=g&&A&&Ys.value.type==="pending";switch(g){case!1:bm.value=[],Ys.value={type:"pending"};break;case!0:switch(A){case!1:break;case!0:{if(xt===void 0)throw new Error("multi-agent history discovery requires a Codex app server");switch(Ys.value.type){case"complete":break;case"discovering":await Ys.value.request;return;case"pending":{let F=ZX(xt),me={type:"discovering",request:F};Ys.value=me;try{let ke=await F;switch(Ys.value===me&&Dr.value){case!0:bm.value=ke,Ys.value={type:"complete"};break;case!1:return}}catch(ke){throw Ys.value===me&&(Ys.value={type:"pending"}),ke}break}}break}}break}switch(C||I){case!1:return;case!0:n("runner.multi_agent_jobs_authority_changed",{source:x,workspace:Kn(e)??null,enabled:g}),await Xo();return}},E6=async(g,x,C)=>{if(C.type==="after_control_replay")return R6(g,x,C.authorityChangedBeforeReplay);let A=Dr.value;if(A!==g){let I=Array.from(_n.entries()).filter(([,ke])=>ke.multiAgentJobs?.eligible===!0&&ke.multiAgentJobs.configured!==g),F=[],me=!1;try{for(let[ke,Ke]of I)if(_n.get(ke)===Ke){switch(_n.delete(ke),n("runner.multi_agent_jobs_worker_rebind_started",{source:x,workspace:Kn(e)??null,kandanThreadId:ke,previous_enabled:Ke.multiAgentJobs?.configured??null,enabled:g}),Ke.kind){case"running":try{await Ke.handle.close()}catch(ze){throw me=!0,_n.has(ke)||_n.set(ke,Ke),n("runner.multi_agent_jobs_worker_rebind_failed",{source:x,workspace:Kn(e)??null,kandanThreadId:ke,enabled:g,message:ze instanceof Error?ze.message:String(ze)}),ze}break;case"starting":{let ze=await Ke.promise.catch(ot=>{throw n("runner.multi_agent_jobs_worker_rebind_failed",{source:x,workspace:Kn(e)??null,kandanThreadId:ke,enabled:g,message:ot instanceof Error?ot.message:String(ot)}),ot});try{await ze.close()}catch(ot){throw me=!0,_n.has(ke)||_n.set(ke,Ke),n("runner.multi_agent_jobs_worker_rebind_failed",{source:x,workspace:Kn(e)??null,kandanThreadId:ke,enabled:g,message:ot instanceof Error?ot.message:String(ot)}),ot}break}}F.push(ke),n("runner.multi_agent_jobs_worker_rebind_completed",{source:x,workspace:Kn(e)??null,kandanThreadId:ke,enabled:g})}}catch(ke){switch(F.length>0){case!1:{if(!me)throw ke;let Ke=Ce.forceReconnect?.("multi_agent_jobs_zero_completed_authority_rebind_failed")??!1;switch(Ke){case!0:{let ze=typeof ke=="object"&&ke!==null?ke:new Error(String(ke));throw aT.add(ze),n("runner.multi_agent_jobs_zero_completed_rebind_resync_requested",{runner_id:e.runnerId,source:x,workspace:Kn(e)??null,enabled:g,method:"force_reconnect"}),ze}case!1:throw n("runner.multi_agent_jobs_zero_completed_rebind_resync_failed",{runner_id:e.runnerId,source:x,workspace:Kn(e)??null,enabled:g,force_reconnect_initiated:Ke,message:ke instanceof Error?ke.message:String(ke)}),ke}}case!0:{let Ke=Ce.forceReconnect?.("multi_agent_jobs_partial_authority_rebind_failed")??!1;switch(Ke){case!0:{let ze=typeof ke=="object"&&ke!==null?ke:new Error(String(ke));throw aT.add(ze),n("runner.multi_agent_jobs_partial_rebind_resync_requested",{runner_id:e.runnerId,source:x,workspace:Kn(e)??null,enabled:g,completed_worker_rebinds:F,method:"force_reconnect"}),ze}case!1:throw n("runner.multi_agent_jobs_partial_rebind_resync_failed",{runner_id:e.runnerId,source:x,workspace:Kn(e)??null,enabled:g,completed_worker_rebinds:F,force_reconnect_initiated:Ke,message:ke instanceof Error?ke.message:String(ke)}),ke}}}}}if(Dr.value=g,bl.setEnabled(g),C.type!=="before_control_replay")return R6(g,x,A!==g)},A6=(g,x)=>eT(async()=>{if(_m.value===g)return;let A=[];for(let[I,F]of Array.from(_n.entries()))if(!(F.documentSurfaces?.eligible!==!0||F.documentSurfaces.configured===g)&&_n.get(I)===F){_n.delete(I);try{await lc(F)}catch(me){_n.has(I)||_n.set(I,F),n("runner.document_surfaces_worker_rebind_failed",{source:x,workspace:Kn(e)??null,kandanThreadId:I,enabled:g,message:me instanceof Error?me.message:String(me)});let ke=Ce.forceReconnect?.(A.length===0?"document_surfaces_zero_completed_authority_rebind_failed":"document_surfaces_partial_authority_rebind_failed")??!1;throw n("runner.document_surfaces_rebind_resync_requested",{source:x,workspace:Kn(e)??null,enabled:g,completed_worker_rebinds:A,force_reconnect_initiated:ke}),me}A.push(I),n("runner.document_surfaces_worker_rebind_completed",{source:x,workspace:Kn(e)??null,kandanThreadId:I,enabled:g})}_m.value=g,await Xo()}),dT=(g,x,C={type:"full"})=>{switch(C.type){case"after_control_replay":return E6(g,x,C);case"full":case"before_control_replay":return eT(()=>E6(g,x,C))}},M6=(g,x)=>{try{let C=ty(g);return dT(C,"rejoin",x.type==="reconnect_notification"?{type:"after_control_replay",authorityChangedBeforeReplay:x.authorityChangedBeforeReplay}:{type:"before_control_replay"}).catch(A=>{if(n("runner.multi_agent_jobs_rejoin_apply_failed",{runner_id:e.runnerId,workspace:Kn(e)??null,enabled:C,phase:x.type,message:A instanceof Error?A.message:String(A)}),x.type==="before_control_replay")throw A;switch(typeof A=="object"&&A!==null&&aT.has(A)){case!0:return;case!1:break}let I=Ce.forceReconnect?.("multi_agent_jobs_rejoin_authority_apply_failed")??!1;switch(I){case!0:n("runner.multi_agent_jobs_rejoin_resync_requested",{runner_id:e.runnerId,workspace:Kn(e)??null,enabled:C,method:"force_reconnect"});return;case!1:{let F=new Error(`multi-agent authority rejoin resync could not start for runner ${e.runnerId}`);throw n("runner.multi_agent_jobs_rejoin_resync_failed",{runner_id:e.runnerId,workspace:Kn(e)??null,enabled:C,force_reconnect_initiated:I,message:F.message}),F}}})}catch(C){throw n("runner.multi_agent_jobs_rejoin_invalid",{runner_id:e.runnerId,workspace:Kn(e)??null,phase:x.type,message:C instanceof Error?C.message:String(C)}),C}},uT={value:void 0};GL.value=g=>{let x=ty(g),C=Dr.value!==x;return A6(YD(g),"rejoin").then(()=>M6(g,{type:"before_control_replay"})?.then(()=>{uT.value={enabled:x,changed:C}}))},Ce.onReconnect(g=>(()=>{let x=uT.value,C=g.get(G),A=ty(C);if(x===void 0||x.enabled!==A){let I=`missing matching pre-replay multi-agent authority for rejoin enabled=${String(A)}`;throw n("runner.multi_agent_jobs_rejoin_pre_replay_missing",{runner_id:e.runnerId,workspace:Kn(e)??null,enabled:A,applied_enabled:x?.enabled??null,message:I}),new Error(I)}return uT.value=void 0,M6(C,{type:"reconnect_notification",authorityChangedBeforeReplay:x.changed})})());let rx=FC.value;FC.value=void 0,rx!==void 0&&(bl.setEnabled(rx.enabled),await dT(rx.enabled,"rejoin",{type:"after_control_replay",authorityChangedBeforeReplay:rx.changed}));let cT=new Map,tpe=g=>{let x=w6e(g);if(n("kandan.control",{control:x}),a?.record("kandan","control.received",{controlType:g.type,control:x}),g.type==="coding_account_credential"){cT.set(g.grantId,g);return}if((g.type==="start_instance"||g.type==="reconnect_thread")&&g.codingAccount!==void 0){let I=cT.get(g.codingAccount.grantId);if(I===void 0||I.accountId!==g.codingAccount.accountId||I.generation!==g.codingAccount.generation)return Promise.reject(new Error("coding account credential reply missing or mismatched"));cT.delete(g.codingAccount.grantId),g={...g,codingAccount:{...g.codingAccount,credential:I.credential}}}if(!g6e(e,g)&&!y6e(e,g,vl)&&!_6e(e,g,lr,nr,au)){let I=xo(g)??null,F=e.threadProcess?.kandanThreadId??null;n("kandan.control_ignored",{reason:"thread_process_mismatch",controlType:g.type,controlThreadId:I,threadProcessId:F}),a?.record("kandan","control.ignored",{reason:"thread_process_mismatch",controlType:g.type,controlThreadId:I,threadProcessId:F});return}switch(g.type){case"start_instance":case"reconnect_thread":{let I=of(g);if(I.type==="ok"&&!f.canClaimWork(I.provider))return k6(g,I.provider);break}case"start_turn":{let I=xNe(vr,g.threadId);if(!f.canClaimWork(I))return k6(g,I);break}}if(g.type==="authorize_coding_account")return v6e(g,{codexBin:e.codexBin,push:(I,F)=>Ce.push(G,I,F)}).catch(async()=>{await Ce.push(G,"coding_account_authorization_state",{attemptId:g.attemptId,status:"failed",reason:"authorization_runner_failure"})});if(g.type==="replace_runner"){n("runner.replaced",{runnerId:e.runnerId,reason:g.reason,replacementRunnerId:g.replacementRunnerId,replacementVersion:g.replacementVersion}),r().catch(I=>{n("runner.replace_close_failed",{message:I instanceof Error?I.message:String(I)})});return}if(g.type==="update_available"){iT.handleUpdateAvailable(g);return}if(g.type==="stop_process")return n("runner.stop_process_control",{kandanThreadId:g.threadId}),c6(g.threadId,"manual");if(g.type==="set_commander_impl"){let I=g.impl,F=I==="ts"||I==="rescript"?I:void 0;if(F===void 0){n("runner.commander_impl_control_ignored",{impl:typeof I=="string"?I:null,reason:"unknown_impl_value"});return}let me=FY(F),ke=F!==m1,Ke=process.env.LINZUMI_SUPERVISED==="1"&&process.platform!=="win32";if(n("runner.commander_impl_persisted",{impl:F,persisted:me,runningImpl:m1,restart:ke?Ke?"graceful_drain":"deferred_to_next_launch":"not_needed"}),ke&&Ke)try{process.kill(process.pid,"SIGUSR2")}catch(ze){n("runner.commander_impl_restart_failed",{message:ze instanceof Error?ze.message:String(ze)})}return}let C=b6e(g);if(C!==void 0)return npe(C);if(!p6e(g,Xe)){n("kandan.control_ignored",{reason:"instance_id_mismatch",instanceId:Xe,controlInstanceId:f6e(g),controlType:g.type});return}if(nG(g)){eG(g,Array.from(ge)).then(I=>(n("kandan.forward_response",{requestId:g.requestId,port:g.port,path:g.path,status:I.status,ok:I.ok,location:X6e(I.headers,"location")}),Ce.push(G,"forward:http_response",I))).catch(I=>Ce.push(G,"forward:http_response",{requestId:g.requestId,ok:!1,error:I instanceof Error?I.message:String(I)})).catch(I=>{n("kandan.forward_response_push_failed",{message:I instanceof Error?I.message:String(I)})});return}if(tG(g)){P6.handle(g);return}if(uG(g)){lG(g,{codeServerBin:e.codeServerBin,editorRuntime:e.editorRuntime,allowedCwds:he.value,currentState:Ue.value,browserBaseUrl:g.browserBaseUrl??process.env.KANDAN_LOCAL_RUNNER_PUBLIC_BASE_URL,runnerId:e.runnerId,platform:e.localEditorPlatform}).then(I=>{if(I.ok){Qe.value+=1;let F=Qe.value,me=Ue.value.status==="running"?[Ue.value.port,...Ue.value.collaboration===void 0?[]:[Ue.value.collaboration.serverPort],...YL("editor_restarted")]:[];Ue.value.status==="running"&&(ge.delete(Ue.value.port),ie.delete(Ue.value.port),Ue.value.collaboration!==void 0&&(ge.delete(Ue.value.collaboration.serverPort),ie.delete(Ue.value.collaboration.serverPort))),Ue.value=I.state,ge.add(I.event.port),ie.add(I.event.port),I.event.collaboration!==void 0&&(ge.add(I.event.collaboration.serverPort),ie.add(I.event.collaboration.serverPort));let ke=Ce.push(G,"local_editor_status",{instanceId:Xe,requestId:g.requestId,ok:!0,capabilities:{...q(),...me.length===0?{}:{revokedPorts:me}},...I.event});return I.state.status==="running"&&(Cle(I.state),Ile(I.state,F,ke)),ke}return Ue.value=I.state,Ce.push(G,"local_editor_status",{instanceId:Xe,requestId:g.requestId,ok:!1,reason:I.reason,capabilities:q()})}).catch(I=>Ce.push(G,"local_editor_status",{instanceId:Xe,requestId:g.requestId,ok:!1,reason:Dh(I),capabilities:q()})).catch(I=>{n("kandan.local_editor_status_push_failed",{message:I instanceof Error?I.message:String(I)})});return}if(y4e(g)){let I=Kn(e),F=y(g.workspace)?.trim();if(I===void 0||F===void 0||F===""||F!==I){n("runner.multi_agent_jobs_state_invalid",{runner_id:e.runnerId,expected_workspace:I??null,control_workspace:F??null,enabled:g.enabled??null});return}return typeof g.enabled!="boolean"?(n("runner.multi_agent_jobs_state_invalid",{runner_id:e.runnerId,expected_workspace:I,control_workspace:F,enabled:g.enabled??null}),Promise.reject(new Error(`multi_agent_jobs_state enabled must be boolean for workspace ${I}`))):dT(g.enabled,"control")}if(_4e(g)){let I=Kn(e),F=y(g.workspace)?.trim();if(I===void 0||F===void 0||F===""||F!==I){n("runner.document_surfaces_state_invalid",{runner_id:e.runnerId,expected_workspace:I??null,control_workspace:F??null,enabled:g.enabled??null});return}return typeof g.enabled!="boolean"?(n("runner.document_surfaces_state_invalid",{runner_id:e.runnerId,expected_workspace:I,control_workspace:F,enabled:g.enabled??null}),Promise.reject(new Error(`document_surfaces_state enabled must be boolean for workspace ${I}`))):A6(g.enabled,"control")}if(g4e(g)){ue({allowedCwds:g.allowedCwds,configVersion:g.configVersion??null},{includeStartupAllowedCwds:!0,source:"control"}),Xo();return}if(x4e(g)){let I=E5(g);n("runner.fleet_breaker_state",{source:"control",outcome:I.outcome,state:I.snapshot?.state??null,fate:I.snapshot?.fate??null,version:I.snapshot?.version??null});return}if(b4e(g)){let I=A5(g);n("runner.route_outage_state",{source:"control",outcome:I.outcome,routes:I.snapshot===void 0?null:I.snapshot.routes.length,version:I.snapshot?.version??null});return}if(v4e(g)){let I=u.applyServerDefault(g);n("runner.stream_idle_timeout_default",{source:"control",outcome:I.outcome,changed:I.changed,effectiveMs:u.effectiveMs(),effectiveSource:u.effectiveSource()}),I.changed&&Xo();return}if(S4e(g)){let I=kle(g);if(I!==void 0){Ce.push(G,"codex_response",I).catch(me=>{n("kandan.control_response_push_failed",{message:me instanceof Error?me.message:String(me)})});return}let F=Ple(g);if(F!==void 0){Ce.push(G,"codex_response",F).catch(me=>{n("kandan.control_response_push_failed",{message:me instanceof Error?me.message:String(me)})});return}}if(w4e(g)){switch(g.enabled){case!0:ge.add(g.port);break;case!1:ge.delete(g.port),ie.delete(g.port),$(g.port),Se.approvedPorts.delete(g.port),Se.approvedTargets.delete(g.port),Ce.push(G,"forward_port_revoked",{instanceId:Xe,port:g.port,reason:"user_disabled",capabilities:nd(q(),g.port)}).catch(I=>{n("kandan.forward_port_revoked_push_failed",{message:I instanceof Error?I.message:String(I)})});break}Xo();return}if(g.type==="import_onboarding_conversations")return $ze(e,n,g).catch(I=>{throw n("onboarding.conversation_import_failed",{runnerId:e.runnerId,message:I instanceof Error?I.message:String(I)}),I});if(g.type==="scan_onboarding_projects"){let I=Lze(g.paths);return cee(e,n,{workspaceSlug:y(g.workspace),selectedScanRoots:I,sourceRoots:I,workerId:"projects-selected-folders",workerLabel:"Selected folders",startingMessage:"Checking selected folders",emptyMessage:"No Git projects found in selected folders",foundMessage:"Selected folder projects found",failedMessage:"Selected folder project scan failed",currentPlace:I[0]??e.cwd,deadlineAt:y(g.deadline_at),requireTerminalStatusWrite:!0,includeRuntimeCwdHint:!1}).catch(F=>{throw n("onboarding.project_scan_failed",{runnerId:e.runnerId,message:F instanceof Error?F.message:String(F)}),F})}if(g.type==="start_instance"){if(XLe(g,F=>Be.list().some(me=>me.kandanThreadId===F)))return V_+=1,n("kandan.start_instance_skipped_known_session",{threadId:xo(g)??null,controlSeq:g.control_seq??null,issuedAt:iy(g)??null,reason:"thread_already_has_known_session",skippedStaleStartInstances:V_}),Ce.push(G,"codex_response",{instanceId:Xe,controlType:g.type,threadId:xo(g)??null,ok:!1,skipped:!0,error:"start_instance_thread_already_has_session",issuedAt:iy(g)??null}).catch(F=>{n("kandan.control_response_push_failed",{message:F instanceof Error?F.message:String(F)})});let I=QLe(g,Date.now());if(I!==void 0)return V_+=1,n("kandan.start_instance_stale_skipped",{threadId:xo(g)??null,controlSeq:g.control_seq??null,issuedAt:iy(g)??null,ageMs:I,staleWindowMs:jY,skippedStaleStartInstances:V_}),Ce.push(G,"codex_response",{instanceId:Xe,controlType:g.type,threadId:xo(g)??null,ok:!1,skipped:!0,error:"stale_start_instance",issuedAt:iy(g)??null,ageMs:I}).catch(F=>{n("kandan.control_response_push_failed",{message:F instanceof Error?F.message:String(F)})})}let A;if(g.type==="start_turn"){let I=g.control_seq;if(I!==void 0){let F=ZLe(G,g.threadId),me=nn.initial(F);if(YLe(me,I))return VL+=1,n("kandan.start_turn_replay_skipped",{controlType:g.type,threadId:g.threadId,controlSeq:I,appliedControlSeq:me,skippedReplayedStartTurns:VL}),{instanceId:Xe,controlType:g.type,threadId:g.threadId,skipped:!0};A=()=>e6e(nn,F,I)}}return n6e(()=>{if(J_&&(g.type==="start_instance"||g.type==="reconnect_thread")){let I=bn(g,"threadId"),F=g.type==="reconnect_thread"?bo(g.codexThreadId):void 0,me=I!==void 0?_n.get(I):void 0,ke=g.type==="reconnect_thread"&&(F!==void 0&&vr.has(F)||me!==void 0&&ry(me)!=="dead");if(g.type==="start_instance"||g.type==="reconnect_thread"&&!ke)return Wle(g).then(ze=>{if(ze)return{instanceId:Xe,controlType:g.type,threadId:I??null,held:!0,reason:"runner_updating_queued"};throw n("runner.update_restart_drain_start_refused",{control_type:g.type,thread_id:I??null}),new Error(ED)})}return k6e(lr,nr,au,g,qC).then(I=>I!==void 0?I:e1(xt,Ce,G,Xe,e,R(),pe,he,Ze,xe,vr,vm,vl,BC,Q_,g,KC,a,YC,Sd(e)?Nle:void 0,s?.playCodex,F=>Zs.current(F),ou,iu,Na,ns,v6,a6,GC,(F,me)=>{qC.set(F,me)}))},A).then(async I=>{let F=g.type==="compact_thread"&&I.compactTerminalFallbackRequired===!0,me=qC.get(I);try{let ke=await Ce.push(G,"codex_response",I);if(!F)return ke;let Ke=S6e(ke);switch(Ke.type){case"durable":{let ze=y(I.requestId)?.trim();if(ze===void 0||ze===""||me===void 0||!me.acknowledgeCompactTerminalFallback(ze,Ke.durability))throw new Error("compact fallback durability acknowledgement had no matching owning session");return ke}case"invalid":throw new Error(Ke.reason)}}catch(ke){throw F&&(await me?.close(),await Ce.close()),ke}}).catch(async I=>((g.type==="start_instance"||g.type==="reconnect_thread")&&(vY(I)||sE(I)||AD(I))&&await S6(g,I),Ce.push(G,"codex_error",{instanceId:Xe,message:Dh(I)}))).catch(I=>{n("kandan.control_response_push_failed",{message:I instanceof Error?I.message:String(I)})})},rpe=E9({store:R9(P9(uf(),e.runnerId),g=>n("runner.control_quarantine_state_write_failed",{message:g})),quarantineFilePath:I9(uf(),e.runnerId),currentEpoch:()=>gm.current(G),log:n,emitRunnerEvent:g=>{Ce.push(G,"runner.control_quarantined",g).catch(x=>{n("runner.control_quarantined_event_push_failed",{message:x instanceof Error?x.message:String(x)})})}}),D6=(g,x)=>{r6e(g.type,()=>tpe(g),x,n,C=>rpe.onControlRejected(g,C))},ox=d===void 0?void 0:vH({runtime:d,threadIdOf:g=>xo(g),controlTypeOf:g=>g.type,dispatch:D6,log:n});d!==void 0&&ox!==void 0&&(d.hooks.onOverlapDrain=g=>{let x=[...new Set(i.inFlightTurns().map(A=>A.threadId).filter(A=>A!==""))];d.beginOutgoingDrain(x);let C=d.sendToSupervisor({type:"generation_pin_snapshot",epoch:d.epoch,threadIds:x});n("runner.generation_outgoing_drain_started",{incomingEpoch:g,pinned:x.length,threadIds:x,snapshotDelivered:C}),d.requestUpdateDrain("generation_overlap")},d.hooks.onOverlapAbort=()=>{let g=d.cancelUpdateDrain("generation_overlap_abort"),x=ox.redispatchDeferredToIncoming();n("runner.generation_overlap_abort_applied",{drainCancelled:g,redispatched:x})},d.hooks.onPinsReleased=()=>{ox.dispatchUnpinned()},d.hooks.onPromote=()=>{let C;t.actions.push(()=>{C!==void 0&&(clearTimeout(C),C=void 0)});let A=I=>{if(C=void 0,d.promoteRunnerLock()){n("runner.generation_lock_promoted",{attempt:I});return}if(I>=10){n("runner.generation_lock_promote_gave_up",{attempts:I});return}C=setTimeout(()=>A(I+1),5e3),C.unref()};A(1)});let lT=xt?.isClosed?.()===!0,ope=lT&&!p?h("codex app-server websocket closed before runner startup completed","codex"):void 0;if(lT&&p&&n("runner.shared_codex_closed_worker_launcher_retained",{runnerId:e.runnerId,reason:"codex app-server websocket closed before runner startup completed"}),(!lT||p)&&(xt!==void 0||p)&&f.markReady("codex"),D.value!=="logged_in"&&h(r1("startup",D.value,e.claudeCodeAuthProbeDetail),"claude-code"),D.value==="logged_in"&&f.markReady("claude-code"),!f.canClaimWork()){let g=ope??t6.reason??h("no Codex app-server, Codex thread-worker launcher, or ready Claude Code harness is available",e.agentReplay?.provider==="claude-code"?"claude-code":"codex");try{let x=await cNe(f,ym,C=>Cm(C));n("runner.terminal_startup_failure_published",{runnerId:e.runnerId,pendingReplayTurnControlSeqs:x})}catch(x){throw n("runner.terminal_startup_failure_publish_failed",{runnerId:e.runnerId,message:x instanceof Error?x.message:String(x)}),x}throw new Error(`runner execution readiness failed: ${g}`)}let O6=()=>OLe(e4e(e,he.value,Pe.value,dn.value),n,ym,WL,ox?.dispatch??D6,async()=>{await j(),await H(),D.value==="probe_failed"&&await te()});if(d===void 0)O6(),await Cm();else{let g=await lNe({health:f,activateDispatch:O6,publishReadyHealth:Cm,signalGenerationReady:()=>d.sendToSupervisor({type:"generation_ready",epoch:d.epoch})});n("runner.generation_ready_sent",{epoch:d.epoch,delivered:g.delivered})}return n("runner.execution_health_ready",{runnerId:e.runnerId,health:f.snapshot()}),{instanceId:Xe,codexUrl:os,close:r,fatal:Re}}function OLe(e,n,t,r,o,i){let s=()=>{r.value=o,t.splice(0).forEach(({control:d,ack:u})=>o(d,u)),Mze(e,n,i)};switch(b1(e,n).hasPending()){case!1:s();return;case!0:$Y(e,n,"startup").then(s).catch(d=>{n("onboarding.terminal_status_outbox_startup_drain_failed",{runner_id:e.runnerId,file_path:DY(e),message:d instanceof Error?d.message:String(d)})});return}}function WD(e,n,t){Sa(Is(e.filePath),{recursive:!0});let r;try{r=qLe()(e.filePath,{lockfilePath:`${e.filePath}.write-lock`,realpath:!1,retries:0,stale:1e4,update:5e3,onCompromised:o=>{throw e.log("onboarding.terminal_status_outbox_lock_compromised",{file_path:e.filePath,operation:n,message:o.message}),o}})}catch(o){throw e.log("onboarding.terminal_status_outbox_lock_acquire_failed",{file_path:e.filePath,operation:n,message:o instanceof Error?o.message:String(o)}),new Error(`failed to acquire onboarding terminal status outbox transaction lock during ${n}`,{cause:o})}try{return t()}finally{try{r()}catch(o){throw e.log("onboarding.terminal_status_outbox_lock_release_failed",{file_path:e.filePath,operation:n,message:o instanceof Error?o.message:String(o)}),new Error(`failed to release onboarding terminal status outbox transaction lock during ${n}`,{cause:o})}}}function FLe(e){let n=e.now??(()=>new Date),t=e.uuid??Cd,r=e.ownerLifetimeId??$Le,o=e.ownerLifetimeId===void 0?process.pid:void 0,i=Fg()&&jM()!==void 0?LM():void 0,s=e.handoffOwnerPid??i,a=()=>jLe(e.filePath,e.log),d=(l,p)=>zLe(e.filePath,l,p,e.log),u=l=>{WD(e,"remove",()=>{let p=a(),f=p.obligations.filter(h=>h.id!==l);if(f.length===p.obligations.length){e.log("onboarding.terminal_status_outbox_already_removed",{file_path:e.filePath,obligation_id:l});return}d(f,"remove")})},c=async(l,p)=>{let f;try{f=await p(l)}catch(h){return e.log("onboarding.terminal_status_outbox_delivery_failed",{file_path:e.filePath,obligation_id:l.id,runner_id:l.runnerId,workspace:l.workspaceSlug,status:l.status,reason:"sender_threw",message:h instanceof Error?h.message:String(h)}),!1}if(!f)return e.log("onboarding.terminal_status_outbox_delivery_failed",{file_path:e.filePath,obligation_id:l.id,runner_id:l.runnerId,workspace:l.workspaceSlug,status:l.status,reason:"sender_returned_false"}),!1;try{u(l.id)}catch(h){return e.log("onboarding.terminal_status_outbox_delivery_commit_failed",{file_path:e.filePath,obligation_id:l.id,runner_id:l.runnerId,workspace:l.workspaceSlug,status:l.status,message:h instanceof Error?h.message:String(h)}),!1}return e.log("onboarding.terminal_status_outbox_delivered",{obligation_id:l.id,runner_id:l.runnerId,workspace:l.workspaceSlug,status:l.status}),!0};return{arm:l=>WD(e,"arm",()=>{let p=a(),f=t(),h={id:f,ownerLifetimeId:r,...o===void 0?{}:{ownerPid:o},deliveryState:"armed",workspaceSlug:l.workspaceSlug,runnerId:l.runnerId,phase:l.phase,status:"failed",placesSearched:0,workerId:l.workerId,...l.workerLabel===void 0?{}:{workerLabel:l.workerLabel},message:l.message,lastError:l.lastError,...l.currentPlace===void 0?{}:{currentPlace:l.currentPlace},...l.currentSource===void 0?{}:{currentSource:l.currentSource},...l.selectedScanRoots===void 0?{}:{selectedScanRoots:l.selectedScanRoots},...l.deadlineAt===void 0?{}:{deadlineAt:l.deadlineAt},metadata:l.metadata??{},armedAt:n().toISOString()};return d([...p.obligations,h],"arm"),e.log("onboarding.terminal_status_outbox_armed",{obligation_id:f,runner_id:l.runnerId,workspace:l.workspaceSlug,worker_id:l.workerId}),f}),settle:async(l,p,f)=>{let h=WD(e,"settle",()=>{let m=a(),_=m.obligations.find(v=>v.id===l);if(_===void 0)throw e.log("onboarding.terminal_status_outbox_settle_missing",{file_path:e.filePath,obligation_id:l}),new Error(`onboarding terminal obligation ${l} is missing`);let b={..._,deliveryState:"settled",status:p.status,placesSearched:p.placesSearched,message:p.message,...p.lastError===void 0?{lastError:void 0}:{lastError:p.lastError},...p.currentPlace===void 0?{currentPlace:void 0}:{currentPlace:p.currentPlace},...p.currentSource===void 0?{currentSource:void 0}:{currentSource:p.currentSource},metadata:p.metadata},k=m.obligations.map(v=>v.id===l?b:v);return d(k,"settle"),b});return c(h,f)},drain:async l=>{let p=a().obligations,f=0;for(let h of p){let m=h.ownerLifetimeId===r&&h.deliveryState==="armed",_=h.ownerPid??s,b=h.ownerPid===void 0&&s!==void 0,k=!1;if(h.ownerLifetimeId!==r&&_!==void 0&&h.deliveryState==="armed")if(e.isPidAlive!==void 0)k=e.isPidAlive(_);else try{process.kill(_,0),k=!0}catch(S){switch(S instanceof Error&&"code"in S?String(S.code):void 0){case"ESRCH":k=!1;break;case"EPERM":k=!0;break;default:k=!0,e.log("onboarding.terminal_status_outbox_owner_liveness_probe_failed",{file_path:e.filePath,obligation_id:h.id,owner_lifetime_id:h.ownerLifetimeId,owner_pid:_,probing_lifetime_id:r,probing_pid:process.pid,owner_source:b?"generation_handoff":"obligation",message:S instanceof Error?S.message:String(S)});break}}if(m||k){e.log("onboarding.terminal_status_outbox_live_obligation_retained",{file_path:e.filePath,obligation_id:h.id,runner_id:h.runnerId,workspace:h.workspaceSlug,owner_lifetime_id:h.ownerLifetimeId,owner_pid:_,probing_lifetime_id:r,probing_pid:process.pid,reason:m?"same_process_lifetime":b?"live_generation_handoff_owner":"live_owner_process"});continue}let v=await c(h,l);f+=v?1:0}return{delivered:f,remaining:a().obligations.length}},hasPending:()=>a().obligations.length>0}}function jLe(e,n){if(!Rd(e))return{version:E0,obligations:[]};try{let t=JSON.parse(Ps(e,"utf8"));if(!X(t)||t.version!==E0)throw new Error("unsupported or malformed outbox envelope");if(!Array.isArray(t.obligations))throw new Error("outbox obligations must be an array");return{version:E0,obligations:t.obligations.map((r,o)=>LLe(r,o))}}catch(t){throw n("onboarding.terminal_status_outbox_read_failed",{file_path:e,message:t instanceof Error?t.message:String(t)}),new Error(`failed to read onboarding terminal status outbox ${e}`,{cause:t})}}function LLe(e,n){if(!X(e))throw new Error(`outbox obligation ${n} must be an object`);let t=vd(e,"id",n),r=ci(e,"ownerLifetimeId",n),o=NLe(e,"ownerPid",n),i=ci(e,"deliveryState",n),s=vd(e,"workspaceSlug",n),a=vd(e,"runnerId",n),d=vd(e,"phase",n),u=vd(e,"status",n),c=e.placesSearched,l=vd(e,"workerId",n),p=vd(e,"message",n),f=vd(e,"armedAt",n);if(d!=="projects")throw new Error(`outbox obligation ${n} has invalid phase ${d}`);if(u!=="completed"&&u!=="failed")throw new Error(`outbox obligation ${n} has invalid status ${u}`);if(i!==void 0&&i!=="armed"&&i!=="settled")throw new Error(`outbox obligation ${n} has invalid deliveryState ${i}`);if(!Number.isSafeInteger(c)||Number(c)<0)throw new Error(`outbox obligation ${n} has invalid placesSearched`);if(!X(e.metadata))throw new Error(`outbox obligation ${n} has invalid metadata`);return{id:t,...r===void 0?{}:{ownerLifetimeId:r},...o===void 0?{}:{ownerPid:o},...i===void 0?{}:{deliveryState:i},workspaceSlug:s,runnerId:a,phase:d,status:u,placesSearched:Number(c),workerId:l,...ci(e,"workerLabel",n)===void 0?{}:{workerLabel:ci(e,"workerLabel",n)},message:p,...ci(e,"lastError",n)===void 0?{}:{lastError:ci(e,"lastError",n)},...ci(e,"currentPlace",n)===void 0?{}:{currentPlace:ci(e,"currentPlace",n)},...ci(e,"currentSource",n)===void 0?{}:{currentSource:ci(e,"currentSource",n)},...KX(e,"selectedScanRoots",n)===void 0?{}:{selectedScanRoots:KX(e,"selectedScanRoots",n)},...ci(e,"deadlineAt",n)===void 0?{}:{deadlineAt:ci(e,"deadlineAt",n)},metadata:e.metadata,armedAt:f}}function vd(e,n,t){let r=e[n];if(typeof r!="string"||r==="")throw new Error(`outbox obligation ${t} has invalid ${n}`);return r}function ci(e,n,t){let r=e[n];if(r!==void 0){if(typeof r!="string"||r==="")throw new Error(`outbox obligation ${t} has invalid ${n}`);return r}}function KX(e,n,t){let r=e[n];if(r!==void 0){if(!Array.isArray(r)||r.some(o=>typeof o!="string"||o===""))throw new Error(`outbox obligation ${t} has invalid ${n}`);return r}}function NLe(e,n,t){let r=e[n];if(r!==void 0){if(!Number.isSafeInteger(r)||Number(r)<=0)throw new Error(`outbox obligation ${t} has invalid ${n}`);return Number(r)}}function zLe(e,n,t,r){let o=Is(e),i=`${e}.tmp.${process.pid}.${Cd()}`;try{Sa(o,{recursive:!0});let s=F0(i,"wx",384);try{df(s,`${JSON.stringify({version:E0,obligations:n})}
|
|
1671
1671
|
`,"utf8"),q0(s)}finally{$0(s)}dy(i,e);let a=F0(o,"r");try{q0(a)}finally{$0(a)}}catch(s){try{mc(i,{force:!0})}catch(a){r("onboarding.terminal_status_outbox_tmp_cleanup_failed",{file_path:i,operation:t,message:a instanceof Error?a.message:String(a)})}throw r("onboarding.terminal_status_outbox_persistence_failed",{file_path:e,operation:t,message:s instanceof Error?s.message:String(s)}),new Error(`failed to persist onboarding terminal status outbox during ${t}`,{cause:s})}}function DY(e){let n=e.onboardingTerminalStatusOutboxPath?.trim();if(n!==void 0&&n!=="")return n;let t=process.env.LINZUMI_ONBOARDING_TERMINAL_OUTBOX_PATH?.trim();if(t!==void 0&&t!=="")return t;let r=Id("sha256").update(`${e.kandanUrl}\0${e.runnerId}`).digest("hex");return ht(lf(),".linzumi","onboarding-terminal-status",`${r}.json`)}function b1(e,n){return FLe({filePath:DY(e),log:n,...e.onboardingTerminalStatusOutboxOwnerId===void 0?{}:{ownerLifetimeId:e.onboardingTerminalStatusOutboxOwnerId}})}async function OY(e,n,t){return t.runnerId!==e.runnerId?(n("onboarding.terminal_status_outbox_runner_mismatch",{obligation_id:t.id,obligation_runner_id:t.runnerId,connected_runner_id:e.runnerId,workspace:t.workspaceSlug}),!1):Ui(e,n,{workspaceSlug:t.workspaceSlug,phase:t.phase,status:t.status,placesSearched:t.placesSearched,message:t.message,...t.currentPlace===void 0?{}:{currentPlace:t.currentPlace},...t.currentSource===void 0?{}:{currentSource:t.currentSource},...t.lastError===void 0?{}:{lastError:t.lastError},metadata:t.metadata})}async function $Y(e,n,t){let o=await b1(e,n).drain(i=>OY(e,n,i));return(o.delivered>0||o.remaining>0)&&n("onboarding.terminal_status_outbox_drain_finished",{runner_id:e.runnerId,trigger:t,delivered:o.delivered,remaining:o.remaining}),o}function oy(){let e=process.env.LINZUMI_COMMANDER_OUTBOX_DIR?.trim();return e!==void 0&&e!==""?e:ht(lf(),".linzumi","commander-outbox")}function uf(){let e=process.env.LINZUMI_CONTROL_CURSOR_DIR?.trim();return e!==void 0&&e!==""?e:ht(lf(),".linzumi","control-cursors")}function qY(){return ht(lf(),".linzumi","commanderImpl")}function ULe(){return ht(lf(),".linzumi","commanderImplFallback.json")}function BLe(){try{let e=Ps(qY(),"utf8").trim();return e==="ts"||e==="rescript"?e:void 0}catch{return}}function FY(e){let n=qY(),t=`${n}.tmp.${process.pid}.${Math.random().toString(16).slice(2,8)}`;try{Sa(Is(n),{recursive:!0}),df(t,`${e}
|
|
1672
1672
|
`),dy(t,n)}catch{try{mc(t,{force:!0})}catch{}return!1}if(e==="ts")try{mc(ULe(),{force:!0})}catch{}return!0}function JLe(e){try{let n=globalThis.__linzumiCommanderChooserMarkJoined;if(n===void 0)return;let t=n();t!==void 0&&e("commander.chooser.fallback_reported",{...t})}catch{}}function VX(e,n){let t=e!==null&&typeof e=="object"&&!Array.isArray(e)?e.commander_impl:void 0;if(typeof t!="string")return;let r=t.trim()==="rescript"?"rescript":"ts",o=BLe();if(o===r)return;let i=FY(r);n("runner.commander_impl_assigned",{impl:r,previousCache:o??null,persisted:i,runningImpl:m1})}function KLe(e){let n=e.replace(/[^A-Za-z0-9._-]+/g,"-").replace(/^[-.]+|[-.]+$/g,"").slice(0,80),t=Id("sha256").update(e).digest("hex").slice(0,8),r=n===""?"runner":n;return ht(uf(),`${r}.${t}.json`)}function VLe(e){let n=e.replace(/[^A-Za-z0-9._-]+/g,"-").replace(/^[-.]+|[-.]+$/g,"").slice(0,80),t=Id("sha256").update(e).digest("hex").slice(0,8),r=n===""?"runner":n;return ht(uf(),`${r}.${t}.start-turn.json`)}function WLe(e){let n=e.replace(/[^A-Za-z0-9._-]+/g,"-").replace(/^[-.]+|[-.]+$/g,"").slice(0,80),t=Id("sha256").update(e).digest("hex").slice(0,8),r=n===""?"runner":n;return ht(uf(),`${r}.${t}.vm-fallback-notice.json`)}function GLe(e,n){let t;try{if(!Rd(e))return;t=Ps(e,"utf8")}catch(r){n("vm_fallback_notice_store.read_failed",{path:e,message:r instanceof Error?r.message:String(r)});return}try{let r=JSON.parse(t);if(typeof r=="object"&&r!==null){let o=r.readinessFingerprint;if(typeof o=="string"&&o!=="")return o}}catch{}}function WX(e,n,t){try{if(n===void 0){mc(e,{force:!0});return}Sa(Is(e),{recursive:!0});let r=`${e}.tmp`;df(r,`${JSON.stringify({readinessFingerprint:n})}
|
|
1673
1673
|
`,"utf8"),dy(r,e)}catch(r){t("vm_fallback_notice_store.write_failed",{path:e,message:r instanceof Error?r.message:String(r)})}}function HLe(e){let n=e.replace(/[^A-Za-z0-9._-]+/g,"-").replace(/^[-.]+|[-.]+$/g,"").slice(0,80),t=Id("sha256").update(e).digest("hex").slice(0,8),r=n===""?"runner":n;return ht(uf(),`${r}.${t}.source-seq.json`)}function ZLe(e,n){return`${e} ${n}`}function iy(e){let n=e.issued_at;return typeof n=="string"&&n!==""?n:void 0}function LY(e){return e.replayed===!0}function QLe(e,n){if(!LY(e))return;let t=iy(e);if(t===void 0)return;let r=Date.parse(t);if(Number.isNaN(r))return;let o=n-r;return o>jY?o:void 0}function XLe(e,n){if(e.type!=="start_instance"||!LY(e))return!1;let t=xo(e);return t===void 0?!1:n(t)}function YLe(e,n){return e!==void 0&&n<=e}function e6e(e,n,t){e.onAdvance(n,t),e.flush()}function n6e(e,n){return e().then(t=>(n?.(),t))}function t6e(e){return"then"in e&&typeof e.then=="function"}function r6e(e,n,t,r,o){let i;try{i=n()}catch(s){r("kandan.control_handler_threw",{controlType:e,message:s instanceof Error?s.message:String(s)}),t();return}if(i===void 0||!t6e(i)){t();return}i.then(t,s=>{if(o?.(s)==="quarantine"){t();return}r("kandan.control_ack_withheld_on_failure",{controlType:e,message:s instanceof Error?s.message:String(s)})})}function a6e(e,n=Date.now,t=NY,r){let o=r?.afterMs??s6e,i=r?.forcedReconnectAfterMs??o6e,s=r?.forcedReconnectRetryMs??i6e,a=n(),d=!1,u,c=!1,l=0,p,f=0,h=0;return{recordServerAck:()=>{a=n(),u=void 0,c=!1,l=0,p=void 0,f=0,h=0,d&&(d=!1,e("kandan.connection_recovered",{staleThresholdMs:t}))},check:()=>{let m=n(),_=m-a;!d&&_>t&&(d=!0,u=m,e("kandan.connection_stale",{lastServerAckAgoMs:_,staleThresholdMs:t}));let b=u===void 0?0:m-u;if(d&&r?.onReconnectNeeded!==void 0&&u!==void 0&&b>=i&&(p===void 0||m-p>=s)&&(l+=1,p=m,e("kandan.connection_force_reconnect",{staleForMs:b,lastServerAckAgoMs:_,attempt:l,forcedReconnectAfterMs:i}),r.onReconnectNeeded({staleForMs:b,lastServerAckAgoMs:_,attempt:l})===!1?f+=1:f=0,r.onHardResetNeeded!==void 0&&f>=GD)){if(f=0,h>=GX)c||(c=!0,e("kandan.connection_hard_reset_exhausted",{staleForMs:b,lastServerAckAgoMs:_,attempt:l,hardResets:h,hardResetFailureLimit:GX}),r.onUnrecoverable({staleForMs:b,lastServerAckAgoMs:_}));else if(b<o){h+=1;let v=r.onHardResetNeeded({staleForMs:b,lastServerAckAgoMs:_,attempt:l,uninitiatedDispatches:GD,hardResets:h});e("kandan.connection_hard_reset",{staleForMs:b,lastServerAckAgoMs:_,attempt:l,uninitiatedDispatches:GD,hardResets:h,initiated:v!==!1})}}d&&!c&&r!==void 0&&u!==void 0&&b>=o&&(c=!0,e("kandan.connection_unrecoverable",{staleForMs:b,lastServerAckAgoMs:_,escalateAfterMs:o}),r.onUnrecoverable({staleForMs:b,lastServerAckAgoMs:_}))},isStale:()=>d}}function HD(e,n,t){let r=t?.discardSeqsOnFirstEpochAdoption===!0,o=t?.fsyncOnWrite===!0,{cursors:i,epoch:s}=l6e(e,n),a=s,d=!1,u,c=()=>{if(d){d=!1;try{Sa(Is(e),{recursive:!0});let f=`${e}.tmp`,h=`${JSON.stringify({...a===void 0?{}:{[zY]:a},...Object.fromEntries(i)})}
|
package/package.json
CHANGED