@kynver-app/runtime 0.2.122 → 0.2.129
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 +3 -3
- package/dist/cli.js +255 -188
- package/dist/daemon-tick-thread.js +114 -50
- package/dist/desktop-entry.js +208 -144
- package/dist/index.js +279 -212
- package/dist/local-run-store/index.js +73 -9
- package/dist/server/cleanup.js +78 -14
- package/dist/server/default-repo.js +65 -1
- package/dist/server/dispatch-routing.js +67 -3
- package/dist/server/memory-cost-enforce.js +2 -2
- package/dist/server/memory-cost.js +1 -1
- package/dist/server/model-routing.js +67 -3
- package/dist/server/monitor.js +71 -7
- package/dist/server/orchestration.js +65 -1
- package/dist/server/worker-policy.js +66 -2
- package/dist/worker-broker/index.js +4 -4
- package/package.json +1 -1
package/dist/server/cleanup.js
CHANGED
|
@@ -1,16 +1,80 @@
|
|
|
1
|
-
var
|
|
2
|
-
`),
|
|
1
|
+
var m=(e,r,t)=>()=>{if(t)throw t[0];try{return e&&(r=e(e=0)),r}catch(n){throw t=[n],n}};import{homedir as on}from"node:os";import sn from"node:path";function gi(e){return e==="~"?on():e.startsWith("~/")||e.startsWith("~\\")?sn.join(on(),e.slice(2)):e}function z(e){return sn.resolve(gi(e))}var oe=m(()=>{"use strict"});var an=m(()=>{"use strict"});import{existsSync as hi,mkdirSync as ki,readFileSync as un,readdirSync as Sc,renameSync as yi,rmSync as Ri,statSync as ln,writeFileSync as bi}from"node:fs";import{randomBytes as Si}from"node:crypto";import xi from"node:path";function Qe(e){console.error(e),process.exit(1)}function et(e){return process.platform!=="win32"?e:{windowsHide:!0,...e}}function er(e){try{return JSON.parse(e)}catch{return null}}function _(e,r){try{return JSON.parse(un(e,"utf8"))}catch(t){if(arguments.length>1)return r;Qe(`failed to read ${e}: ${t.message}`)}}function rt(e,r){ki(xi.dirname(e),{recursive:!0});let t=`${e}.${process.pid}.${Si(4).toString("hex")}.tmp`;try{bi(t,`${JSON.stringify(r,null,2)}
|
|
2
|
+
`),yi(t,e)}catch(n){try{Ri(t,{force:!0})}catch{}throw n}}function x(e){return String(e||"").toLowerCase().replace(/[^a-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"worker"}function rr(e){try{return ln(e).size}catch{return 0}}function tr(e){try{return ln(e).mtime.toISOString()}catch{return null}}function nr(e,r){return hi(e)?un(e,"utf8").split(`
|
|
3
3
|
`).slice(-r).join(`
|
|
4
|
-
`):""}function
|
|
5
|
-
`).map(r=>r.trim()).filter(Boolean)}function w(e,r){try{let t=an("git",r,Zr({cwd:e,encoding:"utf8"}));return{status:t.status,stdout:t.stdout||"",stderr:t.stderr||"",error:t.error?t.error.message:null}}catch(t){return{status:null,stdout:"",stderr:"",error:t.message}}}function sn(e,r,t){let n=w(e,["merge-base","--is-ancestor",r,t]);return n.status===0?{isAncestor:!0,error:null}:n.status===1?{isAncestor:!1,error:null}:{isAncestor:null,error:n.error||n.stderr||n.stdout||`git exited ${n.status}`}}function tr(e,r="origin/main"){let t=typeof r=="string"?{base:r}:r,n=t.baseCommit?.trim()||t.base?.trim()||"origin/main",o=t.baseCommit?.trim()||null;if(!e)return xe(n,"missing worktree path");let s=w(e,["rev-parse","HEAD"]);if(s.status!==0)return xe(n,s.error||s.stderr||s.stdout||"failed to resolve HEAD");let i;if(o)i=o;else{let p=w(e,["rev-parse",n]);if(p.status!==0)return xe(n,p.error||p.stderr||p.stdout||`failed to resolve ${n}`,s.stdout.trim());i=p.stdout.trim()}let a=s.stdout.trim();if(a===i)return{checked:!0,base:n,head:a,baseHead:i,baseIsAncestorOfHead:!0,headIsAncestorOfBase:!0,relation:"synced"};let u=sn(e,i,a),l=sn(e,a,i),c=u.error||l.error||void 0;if(u.isAncestor==null||l.isAncestor==null)return{checked:!1,base:n,head:a,baseHead:i,baseIsAncestorOfHead:u.isAncestor,headIsAncestorOfBase:l.isAncestor,relation:"unknown",...c?{error:c}:{}};let d=u.isAncestor?"ahead":l.isAncestor?"merged":"diverged";return{checked:!0,base:n,head:a,baseHead:i,baseIsAncestorOfHead:u.isAncestor,headIsAncestorOfBase:l.isAncestor,relation:d,...c?{error:c}:{}}}function xe(e,r,t=null){return{checked:!1,base:e,head:t,baseHead:null,baseIsAncestorOfHead:null,headIsAncestorOfBase:null,relation:"unknown",error:r}}var U=f(()=>{"use strict";re();b();on()});var rt=f(()=>{"use strict";U()});var nr=f(()=>{"use strict";U();re();rt()});var tt=f(()=>{"use strict";b()});function ae(e){let r=(e??"").trim().toLowerCase();return r==="ghost"||r==="forge"||r==="box"?r:r.includes("forge")?"forge":r.includes("ghost")||r.includes("openclaw")?"ghost":"box"}function or(e,r){return e[r]?.trim()||null}function un(e){let r=e?.split(":")[0]?.trim();return r?ae(r):null}function _e(e=process.env,r={}){let t=[],n=un(r.boxId),o=un(or(e,"KYNVER_BOX_ID")),s=r.boxKind?.trim();if(s)return n&&n!==ae(s)&&t.push(`config.boxId=${r.boxId} conflicts with boxKind=${s}; using explicit boxKind=${s}`),{boxKind:ae(s),source:"config",slugInferenceBlocked:!1,warnings:t};let i=or(e,"KYNVER_BOX_KIND");if(i)return o&&o!==ae(i)&&t.push(`KYNVER_BOX_ID=${or(e,"KYNVER_BOX_ID")} conflicts with KYNVER_BOX_KIND=${i}; using explicit KYNVER_BOX_KIND=${i}`),{boxKind:ae(i),source:"env",slugInferenceBlocked:!1,warnings:t};if(n)return{boxKind:n,source:"config",slugInferenceBlocked:!1,warnings:t};if(o)return{boxKind:o,source:"env",slugInferenceBlocked:!1,warnings:t};let a=or(e,"KYNVER_AGENT_OS_SLUG");return a&&t.push(`KYNVER_AGENT_OS_SLUG=${a} is a workspace slug, not box identity \u2014 operators set boxKind via \`kynver setup --box-kind forge|ghost\` or KYNVER_BOX_KIND; customers default to box`),{boxKind:"box",source:"default",slugInferenceBlocked:!!a,warnings:t}}var ue=f(()=>{"use strict"});function nt(e,r){return e==="forge"?4:Math.max(1,r)}function sr(e,r){return e==="forge"?Math.min(Math.max(1,r),4):Math.max(1,r)}var ir=f(()=>{"use strict"});var ln=f(()=>{"use strict"});import{existsSync as gi,readFileSync as hi,statfsSync as ki}from"node:fs";function ot(){if(process.platform!=="linux")return!1;for(let e of["/proc/sys/kernel/osrelease","/proc/version"])try{if(!gi(e))continue;let r=hi(e,"utf8");if(/microsoft|wsl/i.test(r))return!0}catch{}return!1}function cn(e={}){if(!(e.forceWsl===void 0?ot():e.forceWsl))return null;let t=e.wslHostMount?.trim()||process.env.KYNVER_WSL_HOST_MOUNT?.trim()||Ce,n=e.wslHostFreeWarnBytes??yi,o=e.wslHostFreeCriticalBytes??Ri,s=e.statfs??ki,i;try{i=s(t)}catch(y){return{ok:!1,path:t,freeBytes:0,totalBytes:0,usedPercent:100,warnBelowBytes:n,criticalBelowBytes:o,reason:`Windows host disk probe failed at ${t}: ${y.message}`,probeError:y.message}}let a=Number(i.bavail)*Number(i.bsize),u=Number(i.blocks)*Number(i.bsize),l=u>0?(u-a)/u*100:100,c=a<n,d=a<o,p=!c&&!d,g=(a/(1024*1024*1024)).toFixed(1),m=null;return p||(m=`Windows host disk ${t} at ${d?"critical":"warning"}: ${g} GiB free (<${(d?o:n)/1024/1024/1024} GiB); WSL VHDX cannot grow safely. ${bi()}`),{ok:p,path:t,freeBytes:a,totalBytes:u,usedPercent:l,warnBelowBytes:n,criticalBelowBytes:o,reason:m,probeError:null}}function bi(){return"Recovery: 1) free Windows C: (empty Recycle Bin / Storage Sense / clear %TEMP% and %LOCALAPPDATA%\\Temp\\wsl-crashes); 2) shut down WSL (`wsl --shutdown`) then compact the VHDX (`Optimize-VHD` or `diskpart compact vdisk`); 3) clear local node_modules / .next / harness worktrees before restarting workers; 4) disable recurring dumps via `%USERPROFILE%/.wslconfig` (`maxCrashDumpCount=-1`) or `kynver wsl-crashes --execute`. More help: https://www.kynver.com/help."}var yi,Ri,Ce,st=f(()=>{"use strict";yi=25*1024*1024*1024,Ri=12*1024*1024*1024,Ce="/mnt/c"});import{execFileSync as dn}from"node:child_process";import{existsSync as ur,readFileSync as pn,readdirSync as Si,statSync as xi}from"node:fs";import it from"node:path";function ar(e,r){let t=process.env[e];if(!t)return r;let n=Number(t);return Number.isFinite(n)?n:r}function mn(){let e=process.env.KYNVER_WSL_WIN_USER?.trim();if(e)return e;try{let n=dn("cmd.exe",["/c","echo","%USERNAME%"],{encoding:"utf8",timeout:5e3,stdio:["ignore","pipe","ignore"]}).trim();if(n&&n!=="%USERNAME%"&&!n.includes("%"))return n}catch{}let r=process.env.USER?.trim()||process.env.LOGNAME?.trim(),t=process.env.KYNVER_WSL_HOST_MOUNT?.trim()||Ce;return r&&ur(it.join(t,"Users",r))?r:null}function wi(e={}){let r=e.crashDumpDir?.trim()||process.env.KYNVER_WSL_CRASH_DUMP_DIR?.trim();if(r)return r;let t=e.hostMount?.trim()||process.env.KYNVER_WSL_HOST_MOUNT?.trim()||Ce,n=e.windowsUser??mn();return n?`${t.replace(/\\/g,"/").replace(/\/$/,"")}/Users/${n}/AppData/Local/Temp/wsl-crashes`:null}function Ai(e){let r=/^wsl-crash-\d+-(\d+)-(.+)-(\d+)\.dmp$/i.exec(e);if(!r)return{executableHint:null,signal:null,pid:null};let t=Number(r[1]),n=r[2]??"",o=Number(r[3]),s=n.split("_").filter(Boolean);return{executableHint:s.length>0?s[s.length-1]:null,signal:Number.isFinite(o)?o:null,pid:Number.isFinite(t)?t:null}}function Pi(){try{if(ur("/proc/sys/kernel/core_pattern"))return pn("/proc/sys/kernel/core_pattern","utf8").trim()}catch{}try{return dn("sysctl",["-n","kernel.core_pattern"],{encoding:"utf8",timeout:2e3,stdio:["ignore","pipe","ignore"]}).trim()||null}catch{return null}}function Ii(e){return!!(e&&/wsl-capture-crash/i.test(e))}function Oi(e,r=Ce){let t=it.join(r,"Users",e,".wslconfig");if(!ur(t))return{maxCrashDumpCount:null,crashDumpFolder:null};let n;try{n=pn(t,"utf8")}catch{return null}let o=null,s=null;for(let i of n.split(/\r?\n/)){let a=i.replace(/#.*$/,"").trim();if(!a||a.startsWith("["))continue;let u=a.indexOf("=");if(u<0)continue;let l=a.slice(0,u).trim().toLowerCase(),c=a.slice(u+1).trim();if(l==="maxcrashdumpcount"){let d=Number(c);o=Number.isFinite(d)?d:null}else l==="crashdumpfolder"&&(s=c.replace(/^["']|["']$/g,"")||null)}return{maxCrashDumpCount:o,crashDumpFolder:s}}function Ni(e){if(!ur(e))return[];let r=Si(e,{withFileTypes:!0}),t=[];for(let n of r){if(!n.isFile()||!n.name.toLowerCase().endsWith(".dmp"))continue;let o=it.join(e,n.name);try{let s=xi(o),i=Ai(n.name);t.push({name:n.name,path:o,bytes:s.size,mtimeMs:s.mtimeMs,executableHint:i.executableHint,signal:i.signal,pid:i.pid})}catch{}}return t.sort((n,o)=>o.mtimeMs-n.mtimeMs),t}function Ee(e={}){if(!(e.forceWsl===void 0?ot():e.forceWsl))return null;let t=e.hostMount?.trim()||process.env.KYNVER_WSL_HOST_MOUNT?.trim()||Ce,n=e.windowsUser??mn(),o=e.warnBelowBytes??ar("KYNVER_WSL_CRASH_DUMP_WARN_BYTES",vi),s=e.criticalBelowBytes??ar("KYNVER_WSL_CRASH_DUMP_CRITICAL_BYTES",_i),i=e.warnCount??ar("KYNVER_WSL_CRASH_DUMP_WARN_COUNT",Ci),a=e.criticalCount??ar("KYNVER_WSL_CRASH_DUMP_CRITICAL_COUNT",Ei),u=(e.readCorePattern??Pi)(),l=Ii(u),c=null;n&&(c=(e.readWslConfig??Oi)(n,t));let d=c?.maxCrashDumpCount??null,p=d===-1,g=wi({hostMount:t,windowsUser:n,crashDumpDir:e.crashDumpDir});if(!g)return{ok:!0,path:null,windowsUser:n,dumpCount:0,totalBytes:0,warnBelowBytes:o,criticalBelowBytes:s,warnCount:i,criticalCount:a,dumps:[],executables:[],corePattern:u,wslCaptureEnabled:l,maxCrashDumpCount:d,dumpsDisabledInWslConfig:p,reason:null,probeError:"windows_user_unresolved"};let m;try{m=(e.listDumps??Ni)(g)}catch(P){return{ok:!1,path:g,windowsUser:n,dumpCount:0,totalBytes:0,warnBelowBytes:o,criticalBelowBytes:s,warnCount:i,criticalCount:a,dumps:[],executables:[],corePattern:u,wslCaptureEnabled:l,maxCrashDumpCount:d,dumpsDisabledInWslConfig:p,reason:`WSL crash dump probe failed at ${g}: ${P.message}`,probeError:P.message}}let y=m.reduce((P,h)=>P+h.bytes,0),S=m.length,R=[...new Set(m.map(P=>P.executableHint).filter(P=>!!P))],A=y>=s,L=y>=o,B=S>=a,Je=S>=i,se=!(A||B||L||Je),ie=null;if(!se){let P=A||B?"critical":"warning",h=(y/1024**3).toFixed(1),Q=R.length>0?R.join(", "):"unknown";ie=`WSL crash dumps ${P}: ${S} file(s), ${h} GiB at ${g} (executables: ${Q}). `+Di({wslCaptureEnabled:l,dumpsDisabledInWslConfig:p})}return{ok:se,path:g,windowsUser:n,dumpCount:S,totalBytes:y,warnBelowBytes:o,criticalBelowBytes:s,warnCount:i,criticalCount:a,dumps:m,executables:R,corePattern:u,wslCaptureEnabled:l,maxCrashDumpCount:d,dumpsDisabledInWslConfig:p,reason:ie,probeError:null}}function Di(e={}){let r=["Recovery:","1) run `kynver wsl-crashes --execute` or scripts/cleanup-wsl-crashes.ps1 to prune old .dmp files;"];return e.dumpsDisabledInWslConfig||r.push("2) add `[wsl2]\\nmaxCrashDumpCount=-1` to %USERPROFILE%/.wslconfig then `wsl --shutdown` to disable future dumps;"),e.wslCaptureEnabled&&r.push("3) investigate crashing executables (node OOM/SIGBUS often follows Windows C: pressure);"),r.push("More help: https://www.kynver.com/help."),r.join(" ")}var vi,_i,Ci,Ei,lr=f(()=>{"use strict";st();vi=5*1024*1024*1024,_i=10*1024*1024*1024,Ci=2,Ei=4});import{statfsSync as Wi}from"node:fs";function cr(e={}){let r=e.diskPath?.trim()||"/",t=e.diskFreeWarnBytes??Ti,n=e.diskFreeCriticalBytes??Mi,o=e.diskMaxUsedPercent??Ki,s=e.diskHardMaxUsedPercent??Ui,i=Wi(r),a=Number(i.bavail)*Number(i.bsize),u=Number(i.blocks)*Number(i.bsize),l=u>0?(u-a)/u*100:100,c=a<t,d=a<n,p=a<t*2,g=p&&l>o,m=p&&l>s,y=!c&&!d&&!g&&!m,S=e.skipWslHostCheck?null:cn(e.wslHost),R=e.skipWslCrashDumpCheck?null:Ee(e.wslCrashDumps),A=y&&(S?S.ok:!0)&&(R?R.ok:!0),L=null;return A||(L=[d?`free space below critical ${n} bytes`:null,c?`free space below warning ${t} bytes`:null,m?`used percent above hard cap ${s}%`:null,g?`used percent above cap ${o}%`:null,S&&!S.ok?S.reason:null,R&&!R.ok?R.reason:null].filter(Boolean).join("; ")),Bi({ok:A,path:r,freeBytes:a,totalBytes:u,usedPercent:l,warnBelowBytes:t,criticalBelowBytes:n,maxUsedPercent:o,hardMaxUsedPercent:s,reason:L,wslHost:S,wslCrashDumps:R?{ok:R.ok,path:R.path,dumpCount:R.dumpCount,totalBytes:R.totalBytes,executables:R.executables,wslCaptureEnabled:R.wslCaptureEnabled,dumpsDisabledInWslConfig:R.dumpsDisabledInWslConfig,reason:R.reason,probeError:R.probeError}:null})}function Bi(e){let r=process.env.KYNVER_DISPATCH_DISK_GATE_FORCE?.trim().toLowerCase();return r?r==="ok"||r==="open"||r==="none"?e.ok?e:{...e,ok:!0,reason:`disk gate forced open by KYNVER_DISPATCH_DISK_GATE_FORCE (suppressed: ${e.reason??"no reason"})`}:r==="block"||r==="pressured"?{...e,ok:!1,reason:`disk gate forced closed by KYNVER_DISPATCH_DISK_GATE_FORCE${e.reason?` (underlying: ${e.reason})`:""}`}:e:e}var Ti,Mi,Ki,Ui,dr=f(()=>{"use strict";lr();st();Ti=30*1024*1024*1024,Mi=15*1024*1024*1024,Ki=80,Ui=90});import{existsSync as Fi,readdirSync as Hi,statSync as Li}from"node:fs";import at from"node:path";function pr(){return gn()}function ut(){let{runsDir:e}=pr();return fn(e)}function mr(e){return fn(V(e))}function $i(e){try{return Li(e).isDirectory()}catch{return!1}}function fn(e){if(!Fi(e))return[];let r=[];for(let t of Hi(e,{withFileTypes:!0})){if(t.name==="runs")continue;let n=at.join(e,t.name);if(!$i(n))continue;let o=v(at.join(n,"run.json"),void 0);o?.id&&r.push(o)}return r}function lt(e){let{runsDir:r}=pr();Qr(at.join(ct(r,e.id),"run.json"),e)}function Me(e){let{harnessRoot:r}=pr();return Ke(r,e)}function Ke(e,r){return ct(V(e),x(r))}var le=f(()=>{"use strict";z();b()});import{existsSync as ji,readdirSync as Gi}from"node:fs";import Yi from"node:path";function dt(e){let r=new Set;for(let n of Object.keys(e.workers||{}))r.add(x(n));let t=Yi.join(Me(e.id),"workers");if(!ji(t))return[...r];for(let n of Gi(t,{withFileTypes:!0}))n.isDirectory()&&r.add(x(n.name));return[...r]}var pt=f(()=>{"use strict";le();b()});function mt(e){let r=e.trim();if(!r.startsWith("{"))return null;try{let t=JSON.parse(r);if(t&&typeof t=="object"&&!Array.isArray(t))return t}catch{return null}return null}function hn(e){let r=e.trim();if(!r)return null;let t=mt(r);if(t)return t;let n=[],o=/```(?:json)?\s*([\s\S]*?)```/gi,s;for(;(s=o.exec(r))!==null;){let u=mt(s[1]??"");u&&n.push(u)}let i=r.indexOf("{"),a=r.lastIndexOf("}");if(i>=0&&a>i){let u=mt(r.slice(i,a+1));u&&n.push(u)}return n.length>0?n[n.length-1]:null}function kn(e){let r=e.finalResult??e.final_result;if(r!=null)return typeof r=="string"?hn(r)??(r.trim()||null):r;let t=typeof e.summary=="string"?e.summary.trim():"";if(!t)return null;let n=hn(t);return n||t}var yn=f(()=>{"use strict"});import{existsSync as Vi,readFileSync as zi}from"node:fs";function Rn(e){return e==="complete"}function bn(e){return Rn(e.lastHeartbeatPhase)?e.terminalFinalResult!==void 0&&e.terminalFinalResult!==null?e.terminalFinalResult:e.lastHeartbeatSummary?.trim()||"completed":null}function we(e){let r={heartbeatCount:0,lastHeartbeatAt:null,lastHeartbeatPhase:null,lastHeartbeatSummary:null,terminalFinalResult:null,heartbeatBlocker:null,timestampAnomalies:[],lastBoxResourceSnapshot:null,lastPrEvidence:[]};if(!Vi(e))return r;let t=Date.now()+Ji,n=new Date(t).toISOString(),o=zi(e,"utf8").split(`
|
|
6
|
-
`).filter(Boolean);for(let s of o){let i=
|
|
7
|
-
`).find(Boolean)??o,160):"npm audit failed"}function
|
|
8
|
-
${e.stderr}`.trim(),t=
|
|
9
|
-
`).filter(Boolean),n=null,o=Wn();for(let s of t){let i=Qe(s);if(!i||typeof i!="object"||Array.isArray(i))continue;if(i.type==="turn.started"&&(n=null,r.finalResult=null),i.type==="item.completed"){let p=i.item;if(p&&typeof p=="object"&&!Array.isArray(p)){let g=p;g.type==="agent_message"&&typeof g.text=="string"&&g.text.trim()&&(n=g.text)}}i.type==="turn.completed"&&n&&!r.providerTerminalError&&(r.finalResult=n,n=null);let a=Ea(i);if(a&&(r.firstEventAt||=a,r.lastEventAt=a),i.type==="stream_event"&&i.event&&typeof i.event=="object"&&i.event.type==="content_block_start"){let p=i.event.content_block;p?.type==="tool_use"&&(r.currentTool=String(p.name||"tool"))}if(i.type==="assistant"&&i.message&&typeof i.message=="object"){let p=i.message.content;if(Array.isArray(p)){let g=p.find(m=>m?.type==="tool_use");g&&(r.currentTool=String(g.name||r.currentTool))}}if(i.type==="tool_call"&&i.subtype==="started"){let p=i.tool_call&&typeof i.tool_call=="object"&&!Array.isArray(i.tool_call)?i.tool_call:void 0,g=wa(p);g&&(r.currentTool=g)}let u=Na(i);u&&Da(r,In({command:u.command,exitCode:u.exitCode,stdout:u.stdout,stderr:u.stderr,interleavedOutput:u.interleaved}));let l=Nn(i),c=l?null:Tn(i,o),d=l??c;if(d?.currentTool&&(r.currentTool=d.currentTool),d?.usage&&(r.usage={...r.usage??{},...d.usage}),d?.terminal?d.terminal.ok?r.finalResult=d.terminal.finalResult:(r.finalResult=null,r.providerTerminalError=!0,r.error=d.terminal.error):i.type==="result"&&Aa(r,i),i.type==="turn.failed"){n=null,r.finalResult=null,r.providerTerminalError=!0;let p=i.error;r.error=typeof p?.message=="string"?p.message:"provider turn failed"}Oa(r,i)}return r}var Un=f(()=>{"use strict";On();b();yr();Dn();Mn()});function Bn(e,r=240){let t=e.replace(/\s+/g," ").trim();return t.length>r?`${t.slice(0,r-1)}\u2026`:t}function Rt(e){let r=(e??"").trim();if(!r)return null;if(Fe(r))return{blocked:!0,reason:`provider authentication failed: ${Bn(r)}`};for(let t of Wa)if(t.test.test(r))return{blocked:!0,reason:`${t.label}: ${Bn(r)}`};return null}var Wa,Fn=f(()=>{"use strict";yr();Wa=[{test:/(?:claude provider refuses to spawn: worker prompt is empty after argv assembly|Input must be provided (?:either )?through stdin or as a prompt argument)/i,label:"provider prompt delivery failed"},{test:/\b(?:invalid|unknown|unsupported|unrecognized)\b[^.\n]*\bmodel\b/i,label:"provider rejected the requested model"},{test:/\bmodel\b[^.\n]*\b(?:not\s+(?:found|supported|available|recognized|valid)|is\s+not\s+valid|does\s+not\s+exist)/i,label:"provider rejected the requested model"},{test:/\b(?:did you mean|available models|choose (?:a|one of)|supported models)\b/i,label:"provider rejected the requested model"},{test:/model preflight failed/i,label:"model/provider preflight failed"},{test:/\b(?:command not found|ENOENT|is the .*CLI on PATH|executable not found|no such file or directory)\b/i,label:"provider CLI is missing or not on PATH"},{test:/\bfailed to spawn\b/i,label:"provider failed to spawn the worker process"},{test:/\b(?:not logged in|unauthorized|authentication (?:failed|required)|invalid api key|missing api key|401)\b/i,label:"provider authentication failed"},{test:/\b(?:out of usage|increase limits?|switch to auto|ask your admin to increase your limit|usage limits?|quota exceeded|insufficient_quota|credits? exhausted|billing|payment required)\b/i,label:"provider quota exhausted"}]});function Hn(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function Ta(e){return e==null?!1:typeof e=="string"?e.trim().length>0:typeof e=="boolean"?e:Array.isArray(e)?e.length>0:typeof e=="object"?Object.keys(e).length>0:!0}function Ma(e){return!e?.checked||e.headIsAncestorOfBase!==!1?null:Hn(e.head)}function Ka(e,r,t){let n=["exited_with_changes_salvage"];if((e==="uncommitted"||e==="both")&&n.push(`${r} uncommitted change${r===1?"":"s"} with no final result`),(e==="committed_ahead"||e==="both")&&t){let o=t.length>12?t.slice(0,12):t;n.push(`commit ${o} ahead of base with no final result`)}return n.push("review worktree \u2014 commit, open a PR, or run a salvage worker before discarding"),n.join(": ")}function Ln(e){if(e.alive||Ta(e.finalResult))return null;let r=(e.changedFiles??[]).filter(i=>i.trim()).length,t=Hn(e.headCommit)??Ma(e.gitAncestry),n=r>0,o=!!t;if(!n&&!o)return{kind:"none",salvageable:!1,uncommittedCount:0,headCommit:null,attentionReason:"process exited without a final result"};let s=n&&o?"both":n?"uncommitted":"committed_ahead";return{kind:s,salvageable:!0,uncommittedCount:r,headCommit:t,attentionReason:Ka(s,r,t)}}var $n=f(()=>{"use strict"});import{existsSync as Ua,readFileSync as Ba,statSync as Yn}from"node:fs";import Rr from"node:path";function $a(e,r=process.env){let t=e?Ha:Fa,n=r.KYNVER_WORKER_GIT_PROBE_CACHE_TTL_MS?.trim();if(!n)return t;let o=Number(n);return Number.isFinite(o)&&o>=0?Math.floor(o):t}function ja(e){return e.baseCommit?.trim()||e.base?.trim()||"origin/main"}function bt(e){try{return Yn(e).mtimeMs}catch{return-1}}function Ga(e){let r=Rr.join(e,".git");try{if(Yn(r).isDirectory())return r;let t=/^gitdir:\s*(.+)$/m.exec(Ba(r,"utf8"));return t?Rr.resolve(e,t[1].trim()):null}catch{return null}}function jn(e){let r=Ga(e);return[bt(e),r?bt(Rr.join(r,"HEAD")):-2,r?bt(Rr.join(r,"index")):-2].join(":")}function Gn(e,r){return{changedFiles:Te(e),gitAncestry:tr(e,{base:r.base,baseCommit:r.baseCommit})}}function Ya(e,r){for(te.delete(e),te.set(e,r);te.size>La;){let t=te.keys().next().value;if(t===void 0)break;te.delete(t)}}function Vn(e,r,t){let n=ja(r);if(!e||!e.trim())return He.missingWorktree++,{changedFiles:[],gitAncestry:xe(n,"missing worktree path")};let o=`${e}\0${n}`;if(!Ua(e))return te.delete(o),He.missingWorktree++,{changedFiles:[],gitAncestry:xe(n,`worktree no longer exists: ${e}`)};if(t.alive)return te.delete(o),He.liveProbes++,Gn(e,r);let s=t.ttlMs??$a(!!r.baseCommit?.trim()),i=t.now??Date.now(),a=jn(e),u=te.get(o);if(s>0&&u&&u.fingerprint===a&&i<u.expiresAt)return He.hits++,u.probe;He.misses++;let l=Gn(e,r);if(s>0){let c=.8+.4*(t.random??Math.random)();Ya(o,{fingerprint:jn(e),expiresAt:i+Math.round(s*c),probe:l})}return l}var Fa,Ha,La,te,He,zn=f(()=>{"use strict";U();Fa=10*6e4,Ha=60*6e4,La=2048,te=new Map,He={hits:0,misses:0,liveProbes:0,missingWorktree:0}});function Le(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function Va(e){return e==null?!1:typeof e=="string"?e.trim().length>0:typeof e=="boolean"?e:Array.isArray(e)?e.length>0:typeof e=="object"?Object.keys(e).length>0:!0}function za(e){if(Le(e.headCommit)||Le(e.prUrl)||Le(e.artifactBundlePath)||Le(e.patchPath))return!0;let r=e.gitAncestry;return!!(r?.checked&&r.headIsAncestorOfBase===!1&&Le(r.head))}function Pe(e){return Va(e.finalResult)?e.changedFiles.length===0?{blocked:!1}:za(e)?{blocked:!0,detail:`Worktree has ${e.changedFiles.length} uncommitted change(s); commit or discard before landing`}:{blocked:!0,reason:"dirty_worktree_no_pr",detail:`Worktree has ${e.changedFiles.length} uncommitted change(s) with no commit or PR; commit, open a PR, or discard before landing`}:{blocked:!1}}function Jn(e){if(e.blocked)return e.detail??e.reason??"dirty_worktree_no_pr"}var br=f(()=>{"use strict"});function St(e){let r=e.trim();if(!r.startsWith("{"))return null;try{let t=JSON.parse(r);if(t&&typeof t=="object"&&!Array.isArray(t))return t}catch{return null}return null}function Xn(e){let r=e.targetPrReconciliation??e.target_pr_reconciliation??e.targetPrs??e.target_prs;return Array.isArray(r)?r.length:0}function Sr(e){let r=e.trim();if(!r)return null;let t=St(r);if(t)return t;let n=[],o=/```(?:json)?\s*([\s\S]*?)```/gi,s;for(;(s=o.exec(r))!==null;){let c=St(s[1]??"");c&&n.push(c)}let i=r.indexOf("{"),a=r.lastIndexOf("}");if(i>=0&&a>i){let c=St(r.slice(i,a+1));c&&n.push(c)}if(n.length===0)return null;let u=n[n.length-1],l=Xn(u);for(let c of n){let d=Xn(c);d>l&&(u=c,l=d)}return u}var xt=f(()=>{"use strict"});function qn(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`https://github.com/${r[1]}/pull/${r[2]}`:e.trim()||null}function Zn(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`${r[1].toLowerCase()}/pull/${r[2]}`:e.trim().toLowerCase()}function Ja(e){return new Set(e.map(r=>Zn(qn(r)??r)).filter(Boolean))}function Qn(e,r,t){let n=qn(e)??e;if(!n)return"unrelated";let o=Zn(n);return Ja(r).has(o)?"contract":t?(t.outcome==="skipped"||t.outcome==="blocked")&&t.reason?.trim()?"support":(t.outcome==="merged","unrelated"):"unrelated"}var eo=f(()=>{"use strict"});function Ie(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function Xa(e){return e==null?!1:typeof e=="string"?e.trim().length>0:typeof e=="object"?Object.keys(e).length>0:!0}function ce(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`https://github.com/${r[1]}/pull/${r[2]}`:Ie(e)}function xr(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`${r[1].toLowerCase()}/pull/${r[2]}`:e.trim().toLowerCase()}function ro(e){let r=null;if(typeof e=="string"){let o=Sr(e);o&&(r=o)}else e&&typeof e=="object"&&!Array.isArray(e)&&(r=e);if(!r)return[];let t=r.targetPrReconciliation??r.target_pr_reconciliation;if(!Array.isArray(t))return[];let n=[];for(let o of t){if(!o||typeof o!="object"||Array.isArray(o))continue;let s=o,i=ce(String(s.prUrl??s.pr_url??"")),a=Ie(s.outcome);!i||a!=="merged"&&a!=="skipped"&&a!=="blocked"||n.push({prUrl:i,outcome:a,mergeCommit:Ie(s.mergeCommit??s.merge_commit),reason:Ie(s.reason)})}return n}function to(e,r){let t=[],n=ce(Ie(e.prUrl)??"");if(n&&t.push(n),r&&typeof r=="object"&&!Array.isArray(r)){let o=r,s=ce(String(o.prUrl??o.pr_url??""));s&&t.push(s)}return[...new Set(t)]}function no(e){let{contract:r,snapshot:t}=e,n=e.finalResult??t.finalResult;if(!r.landingOnly&&r.targetPrUrls.length===0&&!r.repairEnforceOriginalPr)return{blocked:!1};if(!Xa(n))return(r.requiresTargetPrReconciliation??(r.landingOnly||!!r.repairEnforceOriginalPr||r.targetPrUrls.length>0))&&r.targetPrUrls.length>0?{blocked:!0,reason:"missing_target_pr_reconciliation",detail:`Final result required to reconcile target PR(s): ${r.targetPrUrls.join(", ")}`}:{blocked:!1};if(!(r.requiresTargetPrReconciliation??(r.landingOnly||!!r.repairEnforceOriginalPr||r.targetPrUrls.length>0))&&!r.repairEnforceOriginalPr)return{blocked:!1};let s=r.repairEnforceOriginalPr?ce(Ie(r.targetPrUrl)??"")??(r.targetPrUrls.length===1?ce(r.targetPrUrls[0]):null):null;if(s){let d=to(t,n);if(!(n&&typeof n=="object"&&!Array.isArray(n)&&n.supersedesOriginalTargetPr===!0)){for(let y of d)if(y!==s)return{blocked:!0,reason:"duplicate_repair_pr",detail:`Repair worker opened or attached PR ${y} instead of canonical target ${s}`}}let m=ro(n).find(y=>y.prUrl===s);if(!m||m.outcome!=="merged"&&!(m.reason?.trim()&&(m.outcome==="skipped"||m.outcome==="blocked")))return{blocked:!0,reason:"missing_repair_target_reconciliation",detail:`Repair worker must reconcile target PR ${s}`}}let i=ro(n),a=new Map(i.map(d=>[xr(d.prUrl),d])),u=new Set(r.targetPrUrls.map(d=>xr(ce(d)??d)).filter(Boolean)),l=to(t,n);if(r.landingOnly)for(let d of l){let p=a.get(xr(d)),g=Qn(d,r.targetPrUrls,p);if(!(g==="contract"||g==="support"))return u.size>0?{blocked:!0,reason:"unrelated_implementation_pr",detail:`Landing-only worker attached unrelated PR ${d}`}:{blocked:!0,reason:"unrelated_implementation_pr",detail:"Landing-only worker must not open new implementation PRs"}}if(r.targetPrUrls.length===0)return{blocked:!1};let c=[];for(let d of r.targetPrUrls){let p=xr(ce(d)??d),g=a.get(p);if(!g){c.push(p);continue}g.outcome!=="merged"&&!g.reason?.trim()&&c.push(p)}return c.length>0?{blocked:!0,reason:c.every(d=>a.has(d))?"incomplete_target_pr_landing":"missing_target_pr_reconciliation",detail:`Target PR reconciliation incomplete: ${c.join(", ")}`}:{blocked:!1}}function oo(e){if(e.blocked)return e.detail??e.reason}var so=f(()=>{"use strict";xt();eo()});function Qa(e){let r=Date.now();if(e.providerTerminalError||kr(e.finalResult)||e.finalResult&&e.error?.trim()||Fe(e.error)||Fe(e.finalResult)){let o=e.error||(typeof e.finalResult=="string"?e.finalResult:"provider terminal error");return{state:"blocked",reason:Rt(o)?.reason??`provider terminal error: ${o}`}}if(e.completionBlocker&&!io(e.completionBlocker))return{state:"blocked",reason:e.completionBlocker};if(e.finalResult){if(e.localOnly&&ru(e.finalResult))return{state:"done",reason:"local-only worker superseded by merged PR"};let o={finalResult:e.finalResult,changedFiles:e.changedFiles??[],gitAncestry:e.gitAncestry??null,prUrl:e.prUrl??null},s=Pe(o);if(s.blocked){let i=Jn(s);return{state:"needs_attention",reason:s.reason?`landing blocked (${s.reason}): ${i}`:`landing blocked: ${i}`}}if(e.landingContract){let i=no({contract:e.landingContract,snapshot:o,finalResult:e.finalResult}),a=oo(i);if(a)return{state:"needs_attention",reason:i.reason?`landing contract (${i.reason}): ${a}`:`landing contract: ${a}`}}return{state:"done",reason:"final result recorded"}}if(!e.alive){if(eu(e))return{state:"done",reason:"empty abandoned worker record"};let o=Rt(e.error);if(o)return{state:"blocked",reason:o.reason};let s=Ln({alive:!1,finalResult:null,changedFiles:e.changedFiles,gitAncestry:e.gitAncestry});if(s?.salvageable){let a=e.error?.trim();return{state:"needs_attention",reason:a?`${s.attentionReason} (${a})`:s.attentionReason}}let i=e.error?.trim();return{state:"needs_attention",reason:i?`process exited without a final result: ${i}`:s?.attentionReason??"process exited without a final result"}}if(e.heartbeatBlocker)return{state:"blocked",reason:`worker heartbeat reported blocker: ${e.heartbeatBlocker}`};let t=e.startedAt?Date.parse(e.startedAt):NaN;if(!e.firstEventAt&&e.stdoutBytes===0&&e.heartbeatBytes===0&&Number.isFinite(t)&&r-t>qa)return{state:"needs_attention",reason:`no first stream event ${et(t)}s after start`};let n=e.lastActivityAt?Date.parse(e.lastActivityAt):NaN;return Number.isFinite(n)&&r-n>Za?{state:"stale",reason:`no log/event/heartbeat activity for ${et(n)}s`}:{state:"ok",reason:"recent activity"}}function io(e){let r=e?.trim();return r?/completion acknowledged but board not advanced/i.test(r)&&/task already terminal/i.test(r):!1}function eu(e){return e.finalResult||e.taskId||e.agentOsId||e.stdoutBytes>0||(e.stderrBytes??0)>0||e.heartbeatBytes>0||e.error?.trim()||(e.changedFiles??[]).some(r=>r.trim())?!1:/empty worker dir|marked abandoned/i.test(e.reconcileReason??"")}function ru(e){let r=null;if(typeof e=="string"?r=Sr(e):e&&typeof e=="object"&&!Array.isArray(e)&&(r=e),!r)return!1;let t=r.targetPrReconciliation??r.target_pr_reconciliation;return Array.isArray(t)?t.some(n=>!n||typeof n!="object"||Array.isArray(n)?!1:String(n.outcome??"").trim()==="merged"):!1}function tu(e,r,t){let n=e.completionSnapshot?.finalResult;return e.completionAckSource==="local-pr-merged-reconcile"&&n!==void 0&&n!==null?n:r||(n??bn(t))}function vr(e,r={}){let t=Kn(e.stdoutPath),n=we(e.heartbeatPath),o=typeof e.completionReportedAt=="string"&&e.completionReportedAt.trim().length>0,s=tu(e,t.finalResult,n),i=o?!1:Y(e.pid),a=er(e.stdoutPath),u=er(e.stderrPath),l=er(e.heartbeatPath),{changedFiles:c,gitAncestry:d}=Vn(e.worktreePath,{base:r.base,baseCommit:r.baseCommit},{alive:i}),p=nn([t.lastEventAt,n.lastHeartbeatAt,rr(e.stdoutPath),rr(e.stderrPath),rr(e.heartbeatPath)]),g=t.error||!i&&!s&&tn(e.stderrPath,10).trim()||void 0,m=typeof e.completionBlocker=="string"&&e.completionBlocker.trim()?e.completionBlocker.trim():null,y=io(m)?null:m,S=e.repairTargetPrUrl?{landingOnly:!1,targetPrUrls:[e.repairTargetPrUrl],targetPrUrl:e.repairTargetPrUrl,repairEnforceOriginalPr:!0}:null,R=Qa({alive:i,finalResult:s,firstEventAt:t.firstEventAt,stdoutBytes:a,stderrBytes:u,heartbeatBytes:l,lastActivityAt:p,heartbeatBlocker:n.heartbeatBlocker,startedAt:e.startedAt,error:g,providerTerminalError:t.providerTerminalError,changedFiles:c,gitAncestry:d,completionBlocker:y,landingContract:S,prUrl:e.repairTargetPrUrl??e.taskPrUrl??null,localOnly:e.localOnly===!0,taskId:e.taskId??null,agentOsId:e.agentOsId??null,reconcileReason:e.reconcileReason??null}),A=y||R.state==="blocked"?"blocked":o||R.state==="done"?"done":s?"exited":i?"running":"exited";return{runId:e.runId,worker:e.name,pid:e.pid,alive:i,status:A,attention:R,branch:e.branch,worktreePath:e.worktreePath,ownedPaths:e.ownedPaths,stdoutBytes:a,stderrBytes:u,heartbeatBytes:l,firstEventAt:t.firstEventAt,lastEventAt:t.lastEventAt,lastActivityAt:p,currentTool:o?null:t.currentTool,heartbeatCount:n.heartbeatCount,lastHeartbeatAt:n.lastHeartbeatAt,lastHeartbeatPhase:n.lastHeartbeatPhase,lastHeartbeatSummary:n.lastHeartbeatSummary,heartbeatBlocker:n.heartbeatBlocker,timestampAnomalies:n.timestampAnomalies,finalResult:s,error:g,providerTerminalError:t.providerTerminalError,changedFiles:c,gitAncestry:d,instructionPolicyFingerprint:e.instructionPolicyFingerprint??null,instructionPolicyEvidence:e.instructionPolicyEvidence??null,model:e.model??e.orchestrationAudit?.model??null,provider:e.provider??e.orchestrationAudit?.provider??null,usage:t.usage??null,boxKind:e.boxKind??null,boxId:e.boxId??null,runtimeId:e.runtimeId??null,personaSlug:e.personaSlug??null,dispatched:e.dispatched??null,localOnly:e.localOnly??null}}function de(e){return!!(e.finalResult||e.alive===!1||e.status==="exited"||e.status==="done")}function ao(e){return e.finalResult?e.attention.state==="needs_attention"||e.attention.state==="blocked":!1}var qa,Za,pe=f(()=>{"use strict";fr();Un();yr();Fn();$n();zn();br();so();xt();b();qa=18e4,Za=6e5});var uo=f(()=>{"use strict";pe();b()});function lo(e,r={}){let t=r.perWorkerMemBytes??vt,n=r.memReserveBytes??_t,o=r.memUtilization??Ct,s=Math.max(0,Math.floor(e*o)-n),i=Math.max(1,Math.floor(s/t));return Math.min(i,_r)}var vt,_t,Ct,_r,co=f(()=>{"use strict";ln();fe();ue();ir();Cr();dr();le();pt();uo();b();vt=500*1024*1024,_t=4*1024*1024*1024,Ct=.85,_r=64});function $e(e,r){let t=Number(e);return!Number.isFinite(t)||t<=0?r:Math.floor(t)}function Et(e){let r=e.config??{},t=e.env??process.env,n=$e(r.perWorkerMemBytes,vt),o=$e(r.memReserveBytes,_t),s=Math.min(1,Math.max(.1,Number(r.memUtilization)>0?Number(r.memUtilization):Ct)),i=lo(e.totalMemBytes,{perWorkerMemBytes:n,memReserveBytes:o,memUtilization:s});if(e.configuredMaxWorkersOverride!==void 0&&e.configuredMaxWorkersOverride!==null)return{configuredMaxWorkers:$e(e.configuredMaxWorkersOverride,i),autoCap:i,workerCapSource:"workspace_override"};if(r.maxConcurrentWorkers!==void 0&&r.maxConcurrentWorkers!==null){let l=$e(r.maxConcurrentWorkers,0)||null;if(l)return{configuredMaxWorkers:Math.min(l,_r),autoCap:i,workerCapSource:"config"}}let u=(t.KYNVER_MAX_WORKERS_INTENTIONAL==="1"||t.KYNVER_MAX_WORKERS_INTENTIONAL==="true")&&t.KYNVER_MAX_WORKERS&&$e(t.KYNVER_MAX_WORKERS,0)||null;return u?{configuredMaxWorkers:Math.min(u,_r),autoCap:i,workerCapSource:"env"}:{configuredMaxWorkers:null,autoCap:i,workerCapSource:"auto"}}var Cr=f(()=>{"use strict";co()});import{homedir as nu}from"node:os";import ou from"node:path";var po,wt=f(()=>{"use strict";po=ou.join(nu(),".kynver",".env")});var mo=f(()=>{"use strict"});var fo=f(()=>{"use strict";mo()});var go=f(()=>{"use strict"});var ho=f(()=>{"use strict";b()});var At=f(()=>{"use strict";fo();go();ho()});var ko=f(()=>{"use strict"});var yo=f(()=>{"use strict";ko()});var Er=f(()=>{"use strict";wt();re();fe();At();yo()});var So=f(()=>{"use strict";ue();ue()});var xo=f(()=>{"use strict";wt();At();Er()});var Pt=f(()=>{"use strict"});import{existsSync as J,mkdirSync as iu,readdirSync as wr,renameSync as vo,statSync as au}from"node:fs";import X from"node:path";function Co(e){try{return au(e).isDirectory()}catch{return!1}}function uu(e){if(!J(e))return!0;for(let r of _o){let t=X.join(e,r);if(J(t)&&(!Co(t)||wr(t).length>0))return!1}return!0}function lu(e){let r=X.join(e,"runs");if(!J(r)||!Co(r))return!1;for(let t of wr(r,{withFileTypes:!0})){if(!t.isDirectory()||t.name==="runs")continue;let n=X.join(r,t.name,"run.json");if(v(n,void 0)?.id)return!0}return!1}function cu(e){let r=X.join(e,"runs");if(!J(r))return!1;for(let t of wr(r,{withFileTypes:!0})){if(!t.isDirectory())continue;if(v(X.join(r,t.name,"run.json"),void 0)?.boxKind==="ghost")return!0}return!1}function du(e){let r=X.join(e,"ghost");return J(r)?!J(X.join(r,"runs")):cu(e)}function Eo(e){return lu(e.sharedRoot)?uu(e.forgeRoot)?du(e.sharedRoot)?{action:"blocked",blocker:"Forge legacy harness migration blocked: Ghost pool is co-hosted on this host (ghost namespace or ghost-attributed runs under ~/.kynver/harness). Drain in-flight Ghost runs from the shared root, or get operator sign-off for a fresh Forge cutover before enabling box-scoped isolation."}:{action:"migrate"}:{action:"none"}:{action:"none"}}function wo(e,r){iu(r,{recursive:!0});for(let t of _o){let n=X.join(e,t),o=X.join(r,t);if(J(n)){if(J(o)&&wr(o).length>0)throw new Error(`Forge legacy harness migration failed: ${o} is not empty`);if(J(o)){vo(n,o);continue}vo(n,o)}}}var _o,Ao=f(()=>{"use strict";b();_o=["runs","worktrees"]});import{existsSync as E}from"node:fs";import{homedir as pu}from"node:os";import C from"node:path";function It(e=process.env){return e.HOME?.trim()||pu()}function Ot(e=process.env){return C.join(It(e),".kynver","harness")}function Ar(e){let r=C.resolve(G(e.trim()));for(;mu.has(C.basename(r));)r=C.dirname(r);return r}function fu(e,r=process.env){return C.join(Ot(r),e)}function gu(e=process.env){let r=Ot(e);if(E(C.join(r,"runs")))return!0;if(E(r)&&!E(C.join(r,"ghost"))&&!E(C.join(r,"forge")))return E(r);let t=C.join(It(e),Po);return E(t)}function Pr(e){let r=e.env??process.env,t=r.KYNVER_HARNESS_ROOT?.trim()||r.OPUS_HARNESS_ROOT?.trim();if(t)return{harnessRoot:Ar(t),source:"env"};let n=e.configuredHarnessRoot?.trim();if(n)return{harnessRoot:Ar(n),source:"config"};let o=fu(e.boxKind,r);if(E(C.join(o,"runs"))||E(o)&&!hu(o))return{harnessRoot:o,source:"box_scoped"};let i=Ot(r);if(e.boxKind==="forge"){let a=Eo({sharedRoot:i,forgeRoot:o});if(a.action==="blocked")return{harnessRoot:o,source:"box_scoped",migrationBlocker:a.blocker};if(a.action==="migrate")return e.allowForgeLegacyMigration!==!1&&wo(i,o),{harnessRoot:o,source:"legacy_migrated"}}if(e.boxKind==="ghost"&&gu(r)){if(E(C.join(i,"runs")))return{harnessRoot:i,source:"legacy_shared"};if(E(i)&&!E(C.join(i,"ghost"))&&!E(C.join(i,"forge")))return{harnessRoot:i,source:"legacy_shared"};let u=C.join(It(r),Po);if(E(u))return{harnessRoot:u,source:"legacy_shared"}}return{harnessRoot:o,source:"box_scoped"}}function hu(e){if(!E(e))return!0;for(let r of["runs","worktrees"]){let t=C.join(e,r);if(E(t))return!1}return!0}var Po,mu,Nt=f(()=>{"use strict";re();Ao();Po=C.join(".openclaw","harness");mu=new Set(["runs","worktrees"])});import Io from"node:os";function Ir(e){return e?.trim()?e.trim():null}function ku(e,r){let t=r.trim().toLowerCase()||"host";return`${e}-${t}`.replace(/[^a-z0-9._-]+/g,"-")}function yu(e){return e.KYNVER_DISPATCH_STRICT_IDENTITY==="1"||e.KYNVER_DISPATCH_STRICT_IDENTITY==="true"||e.KYNVER_DAEMON_STRICT_IDENTITY==="1"||e.KYNVER_DAEMON_STRICT_IDENTITY==="true"}function Or(e=me(),r=process.env,t={}){let n=_e(r,e),o=[...n.warnings],s=[],i=!!(e.boxKind?.trim()||Ir(r.KYNVER_BOX_KIND)),a=t.strict===!0||yu(r);if((t.requireExplicitBoxKind||a)&&!i&&s.push("boxKind is not persisted in ~/.kynver/config.json and KYNVER_BOX_KIND is unset \u2014 run `kynver setup` (customers: boxKind=box) or `kynver setup --box-kind forge|ghost` for operator pools before dispatch"),n.slugInferenceBlocked&&!i){let y="ambiguous box identity: KYNVER_AGENT_OS_SLUG is set without KYNVER_BOX_KIND or config.boxKind";a||t.requireExplicitBoxKind?s.push(y):o.push(`${y} \u2014 defaulting box kind to box (customer), not forge/ghost`)}let u=Ir(e.runnerId),l=Ir(r.KYNVER_RUNTIME_ID)??Ir(r.OPENCLAW_RUNTIME_ID),c=u??l??ku(n.boxKind,Io.hostname()),d=u?"config":l?"env":"derived";d==="derived"&&o.push(`runnerId not persisted \u2014 using derived id "${c}"; run \`kynver setup --box-kind ${n.boxKind}\` to persist runner identity`);let p=Et({config:e,env:r,totalMemBytes:Io.totalmem()}),g=sr(n.boxKind,p.configuredMaxWorkers??nt(n.boxKind,p.autoCap)),m=Pr({boxKind:n.boxKind,configuredHarnessRoot:e.harnessRoot,env:r});return m.migrationBlocker&&s.push(m.migrationBlocker),s.length>0?{ok:!1,identity:null,errors:s,warnings:o}:{ok:!0,identity:{boxKind:n.boxKind,boxKindSource:n.source,runnerId:c,runnerIdSource:d,maxConcurrentWorkers:g,workerCapSource:p.workerCapSource,harnessRoot:m.harnessRoot,harnessRootSource:m.source},errors:s,warnings:o}}var Nr=f(()=>{"use strict";fe();ue();ir();Cr();Nt()});var No=f(()=>{"use strict";nr();ue();So();fe();Er();xo();tt();Pt();Nr()});var xu,Em,Do=f(()=>{"use strict";xu=["claude","cursor","codex","gemini","gemini-api","openai-compatible"],Em=xu.join("|")});var Wo=f(()=>{"use strict";re()});var To=f(()=>{"use strict";Wo()});var Mo=f(()=>{"use strict"});var Ko=f(()=>{"use strict";Mo()});import{existsSync as _u,mkdirSync as Qm,readFileSync as Cu,writeFileSync as ef}from"node:fs";import{homedir as Eu,totalmem as tf}from"node:os";import Dt from"node:path";function wu(e){return{...e,...e.harnessRoot?.trim()?{harnessRoot:G(e.harnessRoot.trim())}:{},...e.defaultRepo?.trim()?{defaultRepo:G(e.defaultRepo.trim())}:{}}}function me(){if(!_u(Uo))return{};try{return wu(JSON.parse(Cu(Uo,"utf8")))}catch{return{}}}var Bo,Uo,Rf,bf,Sf,fe=f(()=>{"use strict";nr();re();tt();ue();ir();Cr();dr();Er();No();Do();Nr();To();Pt();Ko();Bo=Dt.join(Eu(),".kynver"),Uo=Dt.join(Bo,"config.json"),Rf=Dt.join(Bo,"credentials");bf=500*1024*1024,Sf=4*1024*1024*1024});import Wt from"node:path";function O(e){return Ar(e)}function ne(){let e=process.env.KYNVER_HARNESS_ROOT||process.env.OPUS_HARNESS_ROOT;if(e)return O(e);let r=me(),t=r.harnessRoot?.trim();if(t)return O(t);let n=Or(r,process.env);return n.identity?n.identity.harnessRoot:Pr({boxKind:"forge",configuredHarnessRoot:null}).harnessRoot}function V(e){return Wt.join(O(e),"runs")}function Oe(e){return Wt.join(O(e),"worktrees")}function gn(){let e=ne();return{harnessRoot:e,runsDir:V(e),worktreesDir:Oe(e)}}function ct(e,r){return Wt.join(e,x(r))}var z=f(()=>{"use strict";fe();Nt();Nr();b()});z();import T from"node:path";br();import Tr from"node:path";U();pe();var Tt=[".next",".turbo","dist","build",".cache","node_modules/.cache"];function Fo(e){let r=e.replace(/\\/g,"/").replace(/\/+$/,"");if(r==="node_modules"||r.startsWith("node_modules/"))return!0;for(let t of Tt)if(r===t||r.startsWith(`${t}/`))return!0;return!1}function N(e){return e.filter(r=>{let t=r.trim(),n=t.startsWith("??")?t.slice(2).trim():t.length>3?t.slice(3).trim():t;return!Fo(n)})}function ge(e){if(typeof e=="string")return e.match(/https:\/\/github\.com\/[^\s]+\/pull\/\d+/i)?.[0]??null;if(e&&typeof e=="object"){let r=e;for(let t of["prUrl","pr_url","pullRequestUrl"]){let n=r[t];if(typeof n=="string"&&n.trim())return n.trim()}}return null}function je(e){let r=e.gitAncestry?.relation;return r==="merged"||r==="synced"?N(e.changedFiles).length>0:!!(ge(e.finalResult)||r==="ahead"||r==="diverged"||e.changedFiles.length>0&&e.finalResult)}b();function Ge(e){return e.status||(e.status=vr(e.worker,{base:e.run.base,baseCommit:e.run.baseCommit})),e.status}function Mt(e,r){if(e.status)return N(e.status.changedFiles).length>0;let t=r?r.porcelain(e.worktreePath):Te(e.worktreePath);return N(t).length>0}function Au(e){let r=e.worker.completionSnapshot?.finalResult;return r??(e.worker.taskPrUrl?{prUrl:e.worker.taskPrUrl}:null)}function Kt(e,r){if(e.status)return e.status;let t=e.worker,n=typeof t.completionReportedAt=="string"&&t.completionReportedAt.trim().length>0,o=!!(t.status&&["done","exited","blocked","failed","abandoned"].includes(t.status))||n,s=Au(e);if(o&&!Y(t.pid)){let i=r?.gitStatusCache?r.gitStatusCache.porcelain(e.worktreePath):Te(e.worktreePath),a=e.run.baseCommit?.trim()||e.run.base?.trim()||"origin/main",l=r?.gitRevCache?.countAheadOfMain(e.worktreePath,a)===0?{checked:!0,base:a,relation:"synced"}:tr(e.worktreePath,{base:e.run.base,baseCommit:e.run.baseCommit}),c={runId:e.runId,worker:e.workerName,pid:t.pid,alive:!1,status:t.status??(n?"done":"exited"),attention:{state:n?"done":"stale"},branch:t.branch,worktreePath:e.worktreePath,ownedPaths:t.ownedPaths,stdoutBytes:0,stderrBytes:0,heartbeatBytes:0,firstEventAt:null,lastEventAt:null,lastActivityAt:t.completionReportedAt??null,currentTool:null,heartbeatCount:0,lastHeartbeatAt:null,lastHeartbeatPhase:null,lastHeartbeatSummary:null,heartbeatBlocker:null,changedFiles:i,gitAncestry:l,finalResult:s,completionBlocker:typeof t.completionBlocker=="string"&&t.completionBlocker.trim()||null,prUrl:t.repairTargetPrUrl??t.taskPrUrl??ge(s)};return e.status=c,c}return Ge(e)}pe();le();pt();pe();b();import Pu from"node:path";var Iu=new Set(["running","dispatching","pending","queued","needs_attention"]),he=new Set(["completed","failed","cancelled","done"]);function ke(e){let r=dt(e);if(r.length===0)return"failed";let t=!1,n=!1,o=!1,s=!1;for(let i of r){let a=v(Pu.join(Me(e.id),"workers",x(i),"worker.json"),void 0);if(!a)continue;let u=vr(a,{base:e.base,baseCommit:e.baseCommit});if(u.alive&&!u.finalResult){t=!0;break}typeof a.completionBlocker=="string"&&a.completionBlocker&&(o=!0),ao(u)&&(s=!0),u.finalResult&&u.attention.state==="done"&&(n=!0)}return t||o||s?null:n?"completed":"failed"}function Ho(){let e=[];for(let r of ut()){if(!Iu.has(r.status))continue;let t=ke(r);if(!t||t===r.status)continue;let n=r.status;r.status=t,lt(r),e.push({runId:r.id,from:n,to:t})}return e}pe();fr();import{existsSync as Dr,mkdirSync as ig,readdirSync as jo,renameSync as ag,statSync as Ou}from"node:fs";import ye from"node:path";fe();nr();re();rt();U();fr();z();le();z();b();import oe from"node:path";var rg=`${oe.sep}runs${oe.sep}runs${oe.sep}`;function Lo(e){return{workerJsonPath:oe.join(e,"worker.json"),stdoutPath:oe.join(e,"stdout.jsonl"),stderrPath:oe.join(e,"stderr.log"),heartbeatPath:oe.join(e,"heartbeat.jsonl"),lastStatusPath:oe.join(e,"last-status.json")}}b();var Ye=900*1e3,hg=3600*1e3;function Go(e,r){let t=ye.resolve(e),n=ye.resolve(V(r)),o=ye.relative(n,t);return o!==".."&&!o.startsWith("..")&&!ye.isAbsolute(o)}function Nu(e){if(!Dr(e))return[];try{return jo(e,{withFileTypes:!0}).filter(r=>r.isDirectory()&&r.name!=="runs").map(r=>r.name)}catch{return[]}}function Du(e){let r=ye.join(e,"workers");if(!Dr(r))return[];try{return jo(r,{withFileTypes:!0}).filter(t=>t.isDirectory()).map(t=>t.name)}catch{return[]}}function $o(e,r,t){if(!Dr(e))return!1;try{let n=r-Ou(e).mtimeMs;return Number.isFinite(n)&&n>=0&&n<t}catch{return!1}}function Wu(e,r=Date.now(),t=Ye){if(!Dr(e))return!1;let n=Lo(e),o=v(n.workerJsonPath,void 0);if(o?.status==="running"&&Y(o.pid))return!0;let s=we(n.heartbeatPath);if(s.lastHeartbeatAt){let i=r-Date.parse(s.lastHeartbeatAt);if(Number.isFinite(i)&&i>=0&&i<t)return!0}return!!($o(n.stdoutPath,r,t)||$o(n.heartbeatPath,r,t))}function Tu(e,r=Date.now(),t=Ye){for(let n of Du(e))if(Wu(ye.join(e,"workers",n),r,t))return!0;return!1}function Yo(e,r=Date.now()){let t=new Set,n=V(e);for(let o of Nu(n)){let s=ye.join(n,o);Tu(s,r)&&t.add(`${e}\0${o}`)}return t}b();function Mu(e,r=Date.now(),t=Ye){let n=we(e.heartbeatPath);if(!n.lastHeartbeatAt)return!1;let o=r-Date.parse(n.lastHeartbeatAt);return Number.isFinite(o)&&o>=0&&o<t}function Ne(e,r=Date.now(),t=Ye){return Y(e.pid)?!0:Mu(e,r,t)}function Ku(e,r){return r?r.runTerminalCache.derive(e.run):ke(e.run)}function q(e,r=Date.now()){return Ne(e.worker,r)}function Ut(e,r){return he.has(e.run.status)?!1:Ku(e,r)!==null}function Vo(e,r,t=Date.now()){if(q(e,t))return!0;if(he.has(e.run.status)||Ut(e,r))return!1;let n=Ge(e);return de(n)?!1:!!q(e,t)}br();pe();function zo(e,r){if(!(typeof e.worker.completionBlocker=="string"?e.worker.completionBlocker.trim():""))return!1;if(q(e))return!0;let n=r??Ge(e);return!!(!de(n)||je(n)||N(n.changedFiles).length>0||Pe({finalResult:n.finalResult,changedFiles:n.changedFiles,gitAncestry:n.gitAncestry,prUrl:ge(n.finalResult)}).blocked)}U();b();import{existsSync as Xo,mkdirSync as Uu,writeFileSync as Jo}from"node:fs";import Wr from"node:path";function qo(e,r,t){return Wr.join(e,"salvage",x(r),x(t))}function Zo(e){return Xo(Wr.join(qo(e.harnessRoot,e.runId,e.workerName),"evidence.json"))}function Qo(e){let r=qo(e.harnessRoot,e.indexed.runId,e.indexed.workerName);Uu(r,{recursive:!0});let t=Wr.join(r,"salvage.patch"),n=!1;if(Xo(e.indexed.worktreePath)){let s=w(e.indexed.worktreePath,["diff","HEAD"]),i=w(e.indexed.worktreePath,["diff","--cached"]),a=[s.stdout,i.stdout].filter(u=>u.trim()).join(`
|
|
10
|
-
|
|
4
|
+
`):""}function J(e){if(!e)return!1;try{return process.kill(e,0),!0}catch{return!1}}function cn(e){let r=null,t=-1/0;for(let n of e){if(!n)continue;let o=Date.parse(n);Number.isFinite(o)&&o>t&&(t=o,r=n)}return r}function tt(e){return Math.max(0,Math.round((Date.now()-e)/1e3))}var b=m(()=>{"use strict";an()});var _i,Cc,vi,wc,dn=m(()=>{"use strict";_i=["ANTHROPIC_API_KEY","ANALYST_API_KEY","RECRUITER_API_KEY","AUTH_SECRET","NEXTAUTH_SECRET","DATABASE_URL","PRODUCTION_DATABASE_URL","KYNVER_PRODUCTION_DATABASE_URL","REDIS_URL","GOOGLE_CLIENT_SECRET","GITHUB_CLIENT_SECRET","KYNVER_API_KEY","KYNVER_SERVICE_SECRET","KYNVER_RUNTIME_SECRET","KYNVER_CRON_SECRET","OPENCLAW_CRON_SECRET","QSTASH_TOKEN","QSTASH_CURRENT_SIGNING_KEY","QSTASH_NEXT_SIGNING_KEY","TOOL_SECRETS_KEK","TOOL_EXECUTOR_DISPATCH_SECRET","CLOUDFLARE_API_TOKEN","STRIPE_SECRET_KEY","STRIPE_WEBHOOK_SECRET","STRIPE_IDENTITY_WEBHOOK_SECRET","VOYAGE_API_KEY","PERPLEXITY_API_KEY","FRED_API_KEY","FMP_API_KEY","CURSOR_API_KEY","MEMORY_CONTENT_KEK","LLM_BYOK_KEK","KYNVER_COMMAND_AUTH_KEY","KYNVER_INSTRUCTION_BUNDLE_KEY","KYNVER_MEMORY_LEDGER_KEY","KYNVER_JWKS_PRIVATE_KEY_JWK"],Cc=new Set(_i),vi=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],wc=new Set(vi)});import{spawnSync as fn}from"node:child_process";function Ee(e,r,t={}){let n=fn("git",r,et({cwd:e,encoding:"utf8"}));if(n.status!==0&&!t.allowFailure){let o=Ei(e,r,n);if(t.throwError)throw new Error(o);Qe(o)}return n.stdout||""}function Ei(e,r,t){let n=typeof t.stderr=="string"&&t.stderr.trim()||typeof t.stdout=="string"&&t.stdout.trim()||t.error?.message||`exit ${t.status??"unknown"}`;return`git ${r.join(" ")} failed in ${e}: ${n}`}function Ue(e){return Ee(e,["status","--short"],{allowFailure:!0}).split(`
|
|
5
|
+
`).map(r=>r.trim()).filter(Boolean)}function P(e,r){try{let t=fn("git",r,et({cwd:e,encoding:"utf8"}));return{status:t.status,stdout:t.stdout||"",stderr:t.stderr||"",error:t.error?t.error.message:null}}catch(t){return{status:null,stdout:"",stderr:"",error:t.message}}}function pn(e,r,t){let n=P(e,["merge-base","--is-ancestor",r,t]);return n.status===0?{isAncestor:!0,error:null}:n.status===1?{isAncestor:!1,error:null}:{isAncestor:null,error:n.error||n.stderr||n.stdout||`git exited ${n.status}`}}function or(e,r="origin/main"){let t=typeof r=="string"?{base:r}:r,n=t.baseCommit?.trim()||t.base?.trim()||"origin/main",o=t.baseCommit?.trim()||null;if(!e)return ve(n,"missing worktree path");let s=P(e,["rev-parse","HEAD"]);if(s.status!==0)return ve(n,s.error||s.stderr||s.stdout||"failed to resolve HEAD");let i;if(o)i=o;else{let p=P(e,["rev-parse",n]);if(p.status!==0)return ve(n,p.error||p.stderr||p.stdout||`failed to resolve ${n}`,s.stdout.trim());i=p.stdout.trim()}let a=s.stdout.trim();if(a===i)return{checked:!0,base:n,head:a,baseHead:i,baseIsAncestorOfHead:!0,headIsAncestorOfBase:!0,relation:"synced"};let u=pn(e,i,a),l=pn(e,a,i),c=u.error||l.error||void 0;if(u.isAncestor==null||l.isAncestor==null)return{checked:!1,base:n,head:a,baseHead:i,baseIsAncestorOfHead:u.isAncestor,headIsAncestorOfBase:l.isAncestor,relation:"unknown",...c?{error:c}:{}};let d=u.isAncestor?"ahead":l.isAncestor?"merged":"diverged";return{checked:!0,base:n,head:a,baseHead:i,baseIsAncestorOfHead:u.isAncestor,headIsAncestorOfBase:l.isAncestor,relation:d,...c?{error:c}:{}}}function ve(e,r,t=null){return{checked:!1,base:e,head:t,baseHead:null,baseIsAncestorOfHead:null,headIsAncestorOfBase:null,relation:"unknown",error:r}}var H=m(()=>{"use strict";oe();b();dn()});var nt=m(()=>{"use strict";H()});var sr=m(()=>{"use strict";H();oe();nt()});var ot=m(()=>{"use strict";b()});function ce(e){let r=(e??"").trim().toLowerCase();return r==="ghost"||r==="forge"||r==="box"?r:r.includes("forge")?"forge":r.includes("ghost")||r.includes("openclaw")?"ghost":"box"}function ir(e,r){return e[r]?.trim()||null}function mn(e){let r=e?.split(":")[0]?.trim();return r?ce(r):null}function Ce(e=process.env,r={}){let t=[],n=mn(r.boxId),o=mn(ir(e,"KYNVER_BOX_ID")),s=r.boxKind?.trim();if(s)return n&&n!==ce(s)&&t.push(`config.boxId=${r.boxId} conflicts with boxKind=${s}; using explicit boxKind=${s}`),{boxKind:ce(s),source:"config",slugInferenceBlocked:!1,warnings:t};let i=ir(e,"KYNVER_BOX_KIND");if(i)return o&&o!==ce(i)&&t.push(`KYNVER_BOX_ID=${ir(e,"KYNVER_BOX_ID")} conflicts with KYNVER_BOX_KIND=${i}; using explicit KYNVER_BOX_KIND=${i}`),{boxKind:ce(i),source:"env",slugInferenceBlocked:!1,warnings:t};if(n)return{boxKind:n,source:"config",slugInferenceBlocked:!1,warnings:t};if(o)return{boxKind:o,source:"env",slugInferenceBlocked:!1,warnings:t};let a=ir(e,"KYNVER_AGENT_OS_SLUG");return a&&t.push(`KYNVER_AGENT_OS_SLUG=${a} is a workspace slug, not box identity \u2014 operators set boxKind via \`kynver setup --box-kind forge|ghost\` or KYNVER_BOX_KIND; customers default to box`),{boxKind:"box",source:"default",slugInferenceBlocked:!!a,warnings:t}}var de=m(()=>{"use strict"});function st(e,r){return e==="forge"?4:Math.max(1,r)}function ar(e,r){return e==="forge"?Math.min(Math.max(1,r),4):Math.max(1,r)}var ur=m(()=>{"use strict"});var gn=m(()=>{"use strict"});import{existsSync as Ci,readFileSync as wi,statfsSync as Ai}from"node:fs";function it(){if(process.platform!=="linux")return!1;for(let e of["/proc/sys/kernel/osrelease","/proc/version"])try{if(!Ci(e))continue;let r=wi(e,"utf8");if(/microsoft|wsl/i.test(r))return!0}catch{}return!1}function hn(e={}){if(!(e.forceWsl===void 0?it():e.forceWsl))return null;let t=e.wslHostMount?.trim()||process.env.KYNVER_WSL_HOST_MOUNT?.trim()||we,n=e.wslHostFreeWarnBytes??Pi,o=e.wslHostFreeCriticalBytes??Oi,s=e.statfs??Ai,i;try{i=s(t)}catch(y){return{ok:!1,path:t,freeBytes:0,totalBytes:0,usedPercent:100,warnBelowBytes:n,criticalBelowBytes:o,reason:`Windows host disk probe failed at ${t}: ${y.message}`,probeError:y.message}}let a=Number(i.bavail)*Number(i.bsize),u=Number(i.blocks)*Number(i.bsize),l=u>0?(u-a)/u*100:100,c=a<n,d=a<o,p=!c&&!d,g=(a/(1024*1024*1024)).toFixed(1),f=null;return p||(f=`Windows host disk ${t} at ${d?"critical":"warning"}: ${g} GiB free (<${(d?o:n)/1024/1024/1024} GiB); WSL VHDX cannot grow safely. ${Ii()}`),{ok:p,path:t,freeBytes:a,totalBytes:u,usedPercent:l,warnBelowBytes:n,criticalBelowBytes:o,reason:f,probeError:null}}function Ii(){return"Recovery: 1) free Windows C: (empty Recycle Bin / Storage Sense / clear %TEMP% and %LOCALAPPDATA%\\Temp\\wsl-crashes); 2) shut down WSL (`wsl --shutdown`) then compact the VHDX (`Optimize-VHD` or `diskpart compact vdisk`); 3) clear local node_modules / .next / harness worktrees before restarting workers; 4) disable recurring dumps via `%USERPROFILE%/.wslconfig` (`maxCrashDumpCount=-1`) or `kynver wsl-crashes --execute`. More help: https://www.kynver.com/help."}var Pi,Oi,we,at=m(()=>{"use strict";Pi=25*1024*1024*1024,Oi=12*1024*1024*1024,we="/mnt/c"});import{execFileSync as kn}from"node:child_process";import{existsSync as cr,readFileSync as yn,readdirSync as Ni,statSync as Wi}from"node:fs";import ut from"node:path";function lr(e,r){let t=process.env[e];if(!t)return r;let n=Number(t);return Number.isFinite(n)?n:r}function Rn(){let e=process.env.KYNVER_WSL_WIN_USER?.trim();if(e)return e;try{let n=kn("cmd.exe",["/c","echo","%USERNAME%"],{encoding:"utf8",timeout:5e3,stdio:["ignore","pipe","ignore"]}).trim();if(n&&n!=="%USERNAME%"&&!n.includes("%"))return n}catch{}let r=process.env.USER?.trim()||process.env.LOGNAME?.trim(),t=process.env.KYNVER_WSL_HOST_MOUNT?.trim()||we;return r&&cr(ut.join(t,"Users",r))?r:null}function Ui(e={}){let r=e.crashDumpDir?.trim()||process.env.KYNVER_WSL_CRASH_DUMP_DIR?.trim();if(r)return r;let t=e.hostMount?.trim()||process.env.KYNVER_WSL_HOST_MOUNT?.trim()||we,n=e.windowsUser??Rn();return n?`${t.replace(/\\/g,"/").replace(/\/$/,"")}/Users/${n}/AppData/Local/Temp/wsl-crashes`:null}function Bi(e){let r=/^wsl-crash-\d+-(\d+)-(.+)-(\d+)\.dmp$/i.exec(e);if(!r)return{executableHint:null,signal:null,pid:null};let t=Number(r[1]),n=r[2]??"",o=Number(r[3]),s=n.split("_").filter(Boolean);return{executableHint:s.length>0?s[s.length-1]:null,signal:Number.isFinite(o)?o:null,pid:Number.isFinite(t)?t:null}}function Fi(){try{if(cr("/proc/sys/kernel/core_pattern"))return yn("/proc/sys/kernel/core_pattern","utf8").trim()}catch{}try{return kn("sysctl",["-n","kernel.core_pattern"],{encoding:"utf8",timeout:2e3,stdio:["ignore","pipe","ignore"]}).trim()||null}catch{return null}}function Li(e){return!!(e&&/wsl-capture-crash/i.test(e))}function Hi(e,r=we){let t=ut.join(r,"Users",e,".wslconfig");if(!cr(t))return{maxCrashDumpCount:null,crashDumpFolder:null};let n;try{n=yn(t,"utf8")}catch{return null}let o=null,s=null;for(let i of n.split(/\r?\n/)){let a=i.replace(/#.*$/,"").trim();if(!a||a.startsWith("["))continue;let u=a.indexOf("=");if(u<0)continue;let l=a.slice(0,u).trim().toLowerCase(),c=a.slice(u+1).trim();if(l==="maxcrashdumpcount"){let d=Number(c);o=Number.isFinite(d)?d:null}else l==="crashdumpfolder"&&(s=c.replace(/^["']|["']$/g,"")||null)}return{maxCrashDumpCount:o,crashDumpFolder:s}}function $i(e){if(!cr(e))return[];let r=Ni(e,{withFileTypes:!0}),t=[];for(let n of r){if(!n.isFile()||!n.name.toLowerCase().endsWith(".dmp"))continue;let o=ut.join(e,n.name);try{let s=Wi(o),i=Bi(n.name);t.push({name:n.name,path:o,bytes:s.size,mtimeMs:s.mtimeMs,executableHint:i.executableHint,signal:i.signal,pid:i.pid})}catch{}}return t.sort((n,o)=>o.mtimeMs-n.mtimeMs),t}function Ae(e={}){if(!(e.forceWsl===void 0?it():e.forceWsl))return null;let t=e.hostMount?.trim()||process.env.KYNVER_WSL_HOST_MOUNT?.trim()||we,n=e.windowsUser??Rn(),o=e.warnBelowBytes??lr("KYNVER_WSL_CRASH_DUMP_WARN_BYTES",Di),s=e.criticalBelowBytes??lr("KYNVER_WSL_CRASH_DUMP_CRITICAL_BYTES",Ti),i=e.warnCount??lr("KYNVER_WSL_CRASH_DUMP_WARN_COUNT",Mi),a=e.criticalCount??lr("KYNVER_WSL_CRASH_DUMP_CRITICAL_COUNT",Ki),u=(e.readCorePattern??Fi)(),l=Li(u),c=null;n&&(c=(e.readWslConfig??Hi)(n,t));let d=c?.maxCrashDumpCount??null,p=d===-1,g=Ui({hostMount:t,windowsUser:n,crashDumpDir:e.crashDumpDir});if(!g)return{ok:!0,path:null,windowsUser:n,dumpCount:0,totalBytes:0,warnBelowBytes:o,criticalBelowBytes:s,warnCount:i,criticalCount:a,dumps:[],executables:[],corePattern:u,wslCaptureEnabled:l,maxCrashDumpCount:d,dumpsDisabledInWslConfig:p,reason:null,probeError:"windows_user_unresolved"};let f;try{f=(e.listDumps??$i)(g)}catch(A){return{ok:!1,path:g,windowsUser:n,dumpCount:0,totalBytes:0,warnBelowBytes:o,criticalBelowBytes:s,warnCount:i,criticalCount:a,dumps:[],executables:[],corePattern:u,wslCaptureEnabled:l,maxCrashDumpCount:d,dumpsDisabledInWslConfig:p,reason:`WSL crash dump probe failed at ${g}: ${A.message}`,probeError:A.message}}let y=f.reduce((A,h)=>A+h.bytes,0),S=f.length,R=[...new Set(f.map(A=>A.executableHint).filter(A=>!!A))],O=y>=s,B=y>=o,C=S>=a,xe=S>=i,Y=!(O||C||B||xe),N=null;if(!Y){let A=O||C?"critical":"warning",h=(y/1024**3).toFixed(1),te=R.length>0?R.join(", "):"unknown";N=`WSL crash dumps ${A}: ${S} file(s), ${h} GiB at ${g} (executables: ${te}). `+ji({wslCaptureEnabled:l,dumpsDisabledInWslConfig:p})}return{ok:Y,path:g,windowsUser:n,dumpCount:S,totalBytes:y,warnBelowBytes:o,criticalBelowBytes:s,warnCount:i,criticalCount:a,dumps:f,executables:R,corePattern:u,wslCaptureEnabled:l,maxCrashDumpCount:d,dumpsDisabledInWslConfig:p,reason:N,probeError:null}}function ji(e={}){let r=["Recovery:","1) run `kynver wsl-crashes --execute` or scripts/cleanup-wsl-crashes.ps1 to prune old .dmp files;"];return e.dumpsDisabledInWslConfig||r.push("2) add `[wsl2]\\nmaxCrashDumpCount=-1` to %USERPROFILE%/.wslconfig then `wsl --shutdown` to disable future dumps;"),e.wslCaptureEnabled&&r.push("3) investigate crashing executables (node OOM/SIGBUS often follows Windows C: pressure);"),r.push("More help: https://www.kynver.com/help."),r.join(" ")}var Di,Ti,Mi,Ki,dr=m(()=>{"use strict";at();Di=5*1024*1024*1024,Ti=10*1024*1024*1024,Mi=2,Ki=4});import{statfsSync as Gi}from"node:fs";function pr(e={}){let r=e.diskPath?.trim()||"/",t=e.diskFreeWarnBytes??Yi,n=e.diskFreeCriticalBytes??Vi,o=e.diskMaxUsedPercent??zi,s=e.diskHardMaxUsedPercent??Ji,i=Gi(r),a=Number(i.bavail)*Number(i.bsize),u=Number(i.blocks)*Number(i.bsize),l=u>0?(u-a)/u*100:100,c=a<t,d=a<n,p=a<t*2,g=p&&l>o,f=p&&l>s,y=!c&&!d&&!g&&!f,S=e.skipWslHostCheck?null:hn(e.wslHost),R=e.skipWslCrashDumpCheck?null:Ae(e.wslCrashDumps),O=y&&(S?S.ok:!0)&&(R?R.ok:!0),B=null;return O||(B=[d?`free space below critical ${n} bytes`:null,c?`free space below warning ${t} bytes`:null,f?`used percent above hard cap ${s}%`:null,g?`used percent above cap ${o}%`:null,S&&!S.ok?S.reason:null,R&&!R.ok?R.reason:null].filter(Boolean).join("; ")),Xi({ok:O,path:r,freeBytes:a,totalBytes:u,usedPercent:l,warnBelowBytes:t,criticalBelowBytes:n,maxUsedPercent:o,hardMaxUsedPercent:s,reason:B,wslHost:S,wslCrashDumps:R?{ok:R.ok,path:R.path,dumpCount:R.dumpCount,totalBytes:R.totalBytes,executables:R.executables,wslCaptureEnabled:R.wslCaptureEnabled,dumpsDisabledInWslConfig:R.dumpsDisabledInWslConfig,reason:R.reason,probeError:R.probeError}:null})}function Xi(e){let r=process.env.KYNVER_DISPATCH_DISK_GATE_FORCE?.trim().toLowerCase();return r?r==="ok"||r==="open"||r==="none"?e.ok?e:{...e,ok:!0,reason:`disk gate forced open by KYNVER_DISPATCH_DISK_GATE_FORCE (suppressed: ${e.reason??"no reason"})`}:r==="block"||r==="pressured"?{...e,ok:!1,reason:`disk gate forced closed by KYNVER_DISPATCH_DISK_GATE_FORCE${e.reason?` (underlying: ${e.reason})`:""}`}:e:e}var Yi,Vi,zi,Ji,fr=m(()=>{"use strict";dr();at();Yi=30*1024*1024*1024,Vi=15*1024*1024*1024,zi=80,Ji=90});import{existsSync as qi,readdirSync as Zi,statSync as Qi}from"node:fs";import lt from"node:path";function mr(){return Sn()}function ct(){let{runsDir:e}=mr();return bn(e)}function gr(e){return bn(X(e))}function ea(e){try{return Qi(e).isDirectory()}catch{return!1}}function bn(e){if(!qi(e))return[];let r=[];for(let t of Zi(e,{withFileTypes:!0})){if(t.name==="runs")continue;let n=lt.join(e,t.name);if(!ea(n))continue;let o=_(lt.join(n,"run.json"),void 0);o?.id&&r.push(o)}return r}function dt(e){let{runsDir:r}=mr();rt(lt.join(pt(r,e.id),"run.json"),e)}function Pe(e){let{harnessRoot:r}=mr();return Be(r,e)}function Be(e,r){return pt(X(e),x(r))}var se=m(()=>{"use strict";q();b()});import{existsSync as ra,readdirSync as ta}from"node:fs";import na from"node:path";function ft(e){let r=new Set;for(let n of Object.keys(e.workers||{}))r.add(x(n));let t=na.join(Pe(e.id),"workers");if(!ra(t))return[...r];for(let n of ta(t,{withFileTypes:!0}))n.isDirectory()&&r.add(x(n.name));return[...r]}var mt=m(()=>{"use strict";se();b()});function gt(e){let r=e.trim();if(!r.startsWith("{"))return null;try{let t=JSON.parse(r);if(t&&typeof t=="object"&&!Array.isArray(t))return t}catch{return null}return null}function xn(e){let r=e.trim();if(!r)return null;let t=gt(r);if(t)return t;let n=[],o=/```(?:json)?\s*([\s\S]*?)```/gi,s;for(;(s=o.exec(r))!==null;){let u=gt(s[1]??"");u&&n.push(u)}let i=r.indexOf("{"),a=r.lastIndexOf("}");if(i>=0&&a>i){let u=gt(r.slice(i,a+1));u&&n.push(u)}return n.length>0?n[n.length-1]:null}function _n(e){let r=e.finalResult??e.final_result;if(r!=null)return typeof r=="string"?xn(r)??(r.trim()||null):r;let t=typeof e.summary=="string"?e.summary.trim():"";if(!t)return null;let n=xn(t);return n||t}var vn=m(()=>{"use strict"});import{existsSync as oa,readFileSync as sa}from"node:fs";function En(e){return e==="complete"}function Cn(e){return En(e.lastHeartbeatPhase)?e.terminalFinalResult!==void 0&&e.terminalFinalResult!==null?e.terminalFinalResult:e.lastHeartbeatSummary?.trim()||"completed":null}function Oe(e){let r={heartbeatCount:0,lastHeartbeatAt:null,lastHeartbeatPhase:null,lastHeartbeatSummary:null,terminalFinalResult:null,heartbeatBlocker:null,timestampAnomalies:[],lastBoxResourceSnapshot:null,lastPrEvidence:[]};if(!oa(e))return r;let t=Date.now()+ia,n=new Date(t).toISOString(),o=sa(e,"utf8").split(`
|
|
6
|
+
`).filter(Boolean);for(let s of o){let i=er(s);if(!i||typeof i!="object"||Array.isArray(i))continue;let a=i;if(r.heartbeatCount++,a.ts){let u=String(a.ts),l=Date.parse(u);Number.isFinite(l)&&l>t?r.timestampAnomalies.push({kind:"future_heartbeat_timestamp",observedAt:u,clampedTo:n}):r.lastHeartbeatAt=u}a.phase!==void 0&&a.phase!==null&&(r.lastHeartbeatPhase=String(a.phase)),a.summary!==void 0&&a.summary!==null&&(r.lastHeartbeatSummary=String(a.summary)),En(r.lastHeartbeatPhase)&&(r.terminalFinalResult=_n(a)),r.heartbeatBlocker=a.blocker?String(a.blocker):null,a.boxResourceSnapshot&&typeof a.boxResourceSnapshot=="object"&&!Array.isArray(a.boxResourceSnapshot)&&(r.lastBoxResourceSnapshot=a.boxResourceSnapshot),Array.isArray(a.prEvidence)&&(r.lastPrEvidence=a.prEvidence.filter(u=>!!u&&typeof u=="object"&&typeof u.prUrl=="string"))}return r}var ia,hr=m(()=>{"use strict";vn();b();ia=6e4});function An(e){return e?(e.split("/").pop()??e).replace(/\.exe$/i,"").toLowerCase():null}function kr(e){if(!e)return[];let r=[],t="",n,o=!1;for(let s of e){if(o){t+=s,o=!1;continue}if(s==="\\"){o=!0;continue}if(n){s===n?n=void 0:t+=s;continue}if(s==='"'||s==="'"){n=s;continue}if(/\s/.test(s)){t&&(r.push(t),t="");continue}t+=s}return t&&r.push(t),r}function Pn(e){let r=An(e[0]);return!!(r&&aa.has(r))}function la(e){let r=e.trim();return r.includes("/")?r.split("/").pop()??r:r}function ca(e){if(!e||e.includes("*"))return null;let r=la(e);return!r||r.includes("/")?null:/\.(?:json|md|mjs|cjs|js|ts|tsx|yaml|yml)$/iu.test(r)?r:null}function On(e){return!e||e.includes("/")||e.includes("*")?!1:/\.(?:json|md|mjs|cjs|js|ts|tsx|yaml|yml)$/iu.test(e)}function ht(e){if(!e)return!1;let r=e.trim();return r.startsWith("!")&&!r.includes("/")&&!r.endsWith("/**")}function da(e){if(!e.startsWith("--glob="))return e;let r=e.slice(7);return r.startsWith("!")&&!r.includes("/")&&!r.endsWith("/**")?`--glob=${r}/**`:e}function pa(e){let r=[];for(let t=1;t<e.length;t+=1){let n=e[t];if(n){if(n==="--"){r.push(...e.slice(t+1));break}if(n.startsWith("-")){if(n.includes("="))continue;wn.has(n)&&(t+=1);continue}r.push(n)}}return r}function fa(e){let r=!1,t=e.map((o,s)=>{let i=da(o),a=e[s-1];return a&&wn.has(a)&&o.startsWith("!")&&!o.includes("/")&&!o.endsWith("/**")&&(i=`${o}/**`),i!==o&&(r=!0),i}),n=pa(t);if(n.length===2){let[o,s]=n;if(ht(s))return{argv:[t[0]??"rg",o,"-g",`${s}/**`,"."],changed:!0};let i=ca(s);if(i)return{argv:[t[0]??"rg","-g",i,o,"."],changed:!0}}return r&&n.length===1?{argv:[...t,"."],changed:!0}:{argv:t,changed:r}}function In(e){for(let r=1;r<e.length;r+=1){let t=e[r];if(t&&(t==="-c"||t==="-lc"||t==="-cl"||/^-[a-zA-Z]*c[a-zA-Z]*$/u.test(t)))return r+1}return-1}function yr(e){let r=e.trim();if(!r)return{command:r,wrapped:!1};let t=kr(r);if(!t.length)return{command:r,wrapped:!1};let n=An(t[0]);if(!n||!ua.has(n))return{command:r,wrapped:!1};let o=In(t);if(o<0||o>=t.length)return{command:r,wrapped:!1};let s=t.slice(o).join(" ").trim();return s?{command:s,wrapped:!0}:{command:r,wrapped:!1}}function ma(e,r){let t=e.trim(),n=kr(t),o=In(n);if(o<0)return r;let s=n.slice(0,o).join(" "),i=r.includes("'")?`"${r.replace(/"/g,'\\"')}"`:`'${r}'`;return`${s} ${i}`}function ga(e){let r=e.trim(),t=yr(r),n=kr(t.command);if(!n.length||!Pn(n))return{segment:r,changed:!1};let o=fa(n);if(!o.changed)return{segment:r,changed:!1};let s=o.argv.join(" ");return t.wrapped?{segment:ma(r,s),changed:!0}:{segment:s,changed:!0}}function kt(e){let r=e.trim();if(!r)return{command:r,changed:!1};let t=r.includes("&&")?" && ":r.includes("||")?" || ":"; ",n=r.split(/\s*(?:&&|\|\||;)\s*/u),o=!1,s=n.map(i=>{let a=ga(i);return a.changed&&(o=!0),a.segment});return o?{command:s.join(t),changed:!0}:{command:r,changed:!1}}function Nn(e){let r=yr(e).command,t=kr(r.trim());return t.length&&Pn(t)?!0:/\b(rg|ripgrep)\b/i.test(r)}function Wn(e){if(!e)return{};let r=e.match(/search\s+"(.+)"\s+in\s+([^()]+?)(?:\s*\(|$)/iu);if(r)return{pattern:r[1],target:r[2]?.trim()};let t=e.match(/^search\s+"(.+)"\s+in\s+(.+)$/iu);return t?{pattern:t[1],target:t[2]?.trim()}:{}}function ha(e){let{pattern:r,target:t}=Wn(e);return r?ht(t)?{kind:"rg_exclude_syntax",pattern:r,target:t}:On(t)?{kind:"bad_scope",pattern:r,target:t}:{kind:"not_repo_search",pattern:r,target:t}:{kind:"not_repo_search"}}function ka(e){let{pattern:r,target:t}=Wn(e);if(!r)return null;if(ht(t)){let n=`${t.trim()}/**`;return{command:`rg "${r}" -g '${n}' .`,changed:!0}}return t&&On(t)?{command:`rg -g ${t} "${r}" .`,changed:!0}:null}function ya(e){if(e.kind==="bad_scope"&&e.pattern&&e.target)return`Use \`rg -g '${e.target}' ${e.pattern} .\` from the repo root instead of treating ${e.target} as a folder.`;if(e.kind==="rg_exclude_syntax"&&e.pattern){let r=e.target?`${e.target.trim()}/**`:"!node_modules/**";return`Repo search scope \`${e.target??"!node_modules"}\` is not a valid ripgrep path. Use \`rg "${e.pattern}" -g '${r}' .\` from the repo root (exclude globs need a \`/**\` suffix).`}return e.kind==="no_matches"&&e.pattern?`No matches for "${e.pattern}". Try a broader pattern, drop overly short tokens, or search from the repo root with \`rg "${e.pattern}" .\`.`:null}function Ra(e){let r=e.match(/search\s+"(.+)"\s+in\s+([^()]+?)(?:\s*\(agent\)|\s*failed|$)/iu);return r?`search "${r[1]}" in ${r[2]?.trim()}`:null}function yt(e){let r=e.meta?.trim()||(e.command?Ra(e.command):null)||null;if(r){let t=ha(r),n=ya(t);if(n)return n;let o=ka(r);if(o?.changed)return`Repo search used an invalid scope. Retry with: \`${o.command}\`.`}if(e.command&&/\b(rg|ripgrep)\b/i.test(e.command)){let t=kt(e.command);if(t.changed)return`Ripgrep scope may be invalid. Retry with: \`${t.command}\`.`;if(e.exitCode===1)return"Ripgrep returned no matches (exit 1). Try a broader pattern or search from the repo root."}return null}var aa,ua,wn,Dn=m(()=>{"use strict";aa=new Set(["rg","ripgrep","grep"]),ua=new Set(["bash","sh","dash","zsh"]),wn=new Set(["-e","--regexp","-f","--file","-m","--max-count","-A","--after-context","-B","--before-context","-C","--context","-g","--glob","--iglob"])});function Fe(e,r=200){let t=e.replace(/\s+/g," ").trim();return t.length>r?`${t.slice(0,r-1)}\u2026`:t}function xa(e){let r=e.trim();if(!r)return null;if(r.startsWith("{"))try{return JSON.parse(r)}catch{}let t=r.indexOf("{"),n=r.lastIndexOf("}");if(t>=0&&n>t)try{return JSON.parse(r.slice(t,n+1))}catch{return null}return null}function Le(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function _a(e){let r=e.metadata;if(!Le(r))return null;let t=r.vulnerabilities;if(!Le(t))return null;let n=s=>typeof t[s]=="number"?t[s]:0,o={info:n("info"),low:n("low"),moderate:n("moderate"),high:n("high"),critical:n("critical"),total:n("total")};return typeof t.total!="number"&&!o.critical&&!o.high&&!o.moderate&&!o.low&&!o.info?null:o}function va(e){let r=[];e.critical&&r.push(`${e.critical} critical`),e.high&&r.push(`${e.high} high`),e.moderate&&r.push(`${e.moderate} moderate`),e.low&&r.push(`${e.low} low`),e.info&&r.push(`${e.info} info`);let t=r.length?r.join(", "):"see report";return`npm audit: ${e.total} vulnerabilit${e.total===1?"y":"ies"} (${t}) \u2014 remediation required`}function Ea(e,r){let t=e.error;if(Le(t)){let s=typeof t.summary=="string"?t.summary.trim():"",i=typeof t.code=="string"?t.code.trim():"";if(s)return i?`${i}: ${s}`:s;if(i)return i}let n=typeof e.message=="string"?e.message.trim():"";if(n)return n;let o=r.trim();return o?Fe(o.split(`
|
|
7
|
+
`).find(Boolean)??o,160):"npm audit failed"}function Ca(e){let r=`${e.stdout}
|
|
8
|
+
${e.stderr}`.trim(),t=xa(r);if(!t||!Le(t)){let o=Fe(r||`exit ${e.exitCode}`,180);return{kind:"command_failure",exitCode:e.exitCode,summary:`npm audit failed (invalid or missing JSON): ${o}`,parseError:"invalid_json"}}if(Le(t.error))return{kind:"command_failure",exitCode:e.exitCode,summary:`npm audit command failed: ${Ea(t,e.stderr)}`};let n=_a(t);return n?e.exitCode===0&&n.total===0?{kind:"success",exitCode:0,summary:"npm audit: no vulnerabilities reported",audit:n}:{kind:"audit_findings",exitCode:e.exitCode,summary:va(n),audit:n}:{kind:"command_failure",exitCode:e.exitCode,summary:"npm audit failed: JSON response missing vulnerability metadata",parseError:"missing_metadata"}}function wa(e){return ba.test(e)}function Aa(e){let r=yr(e).command;return Tn.test(e)||Tn.test(r)||Nn(e)}function Pa(e){let r=yt({command:e.command,exitCode:e.exitCode});if(e.exitCode===0)return{kind:"success",exitCode:0,summary:"ripgrep finished (exit 0)"};if(e.exitCode===1){let n=(e.stderr||e.interleaved).trim();if(n&&Sa.test(n)){let i=Fe(n,160);return{kind:"command_failure",exitCode:1,summary:r??`ripgrep failed (exit 1): ${i}`}}let o=kt(e.command),s=o.changed&&!r?` Retry with: \`${o.command}\`.`:"";return{kind:"search_no_matches",exitCode:1,summary:r??`ripgrep: no matches (exit 1).${s} Try a broader pattern or search from the repo root.`}}let t=Fe(e.interleaved||e.stdout||e.stderr||`exit ${e.exitCode}`,180);return{kind:"command_failure",exitCode:e.exitCode,summary:r??`ripgrep failed (exit ${e.exitCode}): ${t}`}}function Mn(e){let r=e.stdout??"",t=e.stderr??"",n=e.interleavedOutput??"";if(wa(e.command)){let i=r.trim()||n.trim()||t.trim();return Ca({exitCode:e.exitCode,stdout:i,stderr:t})}if(Aa(e.command))return Pa({command:e.command,exitCode:e.exitCode,stdout:r,stderr:t,interleaved:n});let o=yt({command:e.command,exitCode:e.exitCode});if(o&&e.exitCode!==0)return{kind:"command_failure",exitCode:e.exitCode,summary:o};if(e.exitCode===0)return{kind:"success",exitCode:0,summary:"command succeeded (exit 0)"};let s=Fe(n||r||t||`exit ${e.exitCode}`,180);return{kind:"command_failure",exitCode:e.exitCode,summary:`command failed (exit ${e.exitCode}): ${s}`}}var ba,Tn,Sa,Kn=m(()=>{"use strict";Dn();ba=/\bnpm\s+audit\b/i,Tn=/\b(rg|ripgrep)\b/i,Sa=/\b(error|invalid|unknown|panic|not found)\b/i});function He(e){return typeof e=="string"&&Oa.test(e.trim())}function Rr(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let r=e;return r.is_error===!0||r.providerTerminalError===!0||typeof r.subtype=="string"&&/^error(?:_|$)/.test(r.subtype)}var Oa,br=m(()=>{"use strict";Oa=/^(?:provider authentication failed:\s*)?(?:(?:Failed to authenticate|authentication (?:failed|error))(?::\s*[^\n.!?]+)?|OAuth session expired and could not be refreshed)[.!]?$/i});function Rt(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function Ia(e){if(!e)return;let r=typeof e.input_tokens=="number"?e.input_tokens:void 0,t=typeof e.output_tokens=="number"?e.output_tokens:void 0;if(!((r===void 0||r<0)&&(t===void 0||t<0)))return{...r!==void 0&&r>=0?{inputTokens:r}:{},...t!==void 0&&t>=0?{outputTokens:t}:{}}}function Un(e){if(e.event==="step_update"&&Rt(e.step_update)){let s=e.step_update,i=s.step_type==="tool"&&typeof s.tool_name=="string"&&s.tool_name.trim()?s.tool_name.trim():void 0,a=typeof s.text_delta=="string"?s.text_delta:void 0;return!i&&a===void 0?null:{...i?{currentTool:i}:{},...a!==void 0?{textDelta:a}:{}}}if(e.event!=="result"||!Rt(e.result))return null;let r=e.result,t=typeof r.status=="string"?r.status.toUpperCase():"";if(t!=="SUCCESS"&&t!=="ERROR")return null;let n=Rt(r.usage)?Ia(r.usage):void 0;if(t==="ERROR"){let s=typeof r.error=="string"&&r.error.trim()?r.error.trim():"antigravity cli result error";return{...n?{usage:n}:{},terminal:{ok:!1,finalResult:null,error:s}}}let o=typeof r.response=="string"?r.response.trim():"";return{...n?{usage:n}:{},terminal:{ok:!0,finalResult:o||"completed",error:null}}}var Bn=m(()=>{"use strict"});function bt(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function Fn(){return{assistantText:""}}function Na(e,r){if(!(r.role!=="assistant"||typeof r.content!="string")){if(r.delta===!0){e.assistantText+=r.content;return}e.assistantText=r.content}}function Wa(e){let r=typeof e.input_tokens=="number"?e.input_tokens:void 0,t=typeof e.output_tokens=="number"?e.output_tokens:void 0,o=(bt(e.models)?Object.keys(e.models):[]).find(s=>s.trim())?.trim();if(!(r===void 0&&t===void 0&&!o))return{...r!==void 0&&r>=0?{inputTokens:r}:{},...t!==void 0&&t>=0?{outputTokens:t}:{},...o?{model:o}:{}}}function Da(e){return e.type!=="result"||e.status!=="success"&&e.status!=="error"?!1:typeof e.result!="string"}function Ln(e,r){if(e.type==="message"&&(e.role==="assistant"||e.role==="user"))return Na(r,e),{};if(e.type==="tool_use"&&typeof e.tool_name=="string"&&e.tool_name.trim())return{currentTool:e.tool_name.trim()};if(!Da(e))return null;let t=bt(e.stats)?Wa(e.stats):void 0;if(e.status==="error"){let o=bt(e.error)&&typeof e.error.message=="string"?e.error.message:"gemini cli result error";return{...t?{usage:t}:{},terminal:{ok:!1,finalResult:null,error:o}}}let n=r.assistantText.trim();return{...t?{usage:t}:{},terminal:{ok:!0,finalResult:n||"completed",error:null}}}var Hn=m(()=>{"use strict"});import{existsSync as Ta,readFileSync as Ma}from"node:fs";function Ka(e){let r=e.timestamp_ms;return e.timestamp||e.ts||(r?new Date(r).toISOString():void 0)}function Ua(e){if(!e)return null;for(let r of Object.keys(e))if(r.endsWith("ToolCall")){let t=r.slice(0,-8);return t.length?t:r}return null}function Ba(e,r){e.finalResult=r.result||r.subtype||r.terminal_reason||"completed",Rr(r)&&(e.providerTerminalError=!0,e.error=String(r.result||r.api_error_status||"stream result error"))}function Ie(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:void 0}function Fa(e){let r=e.usage;return r&&typeof r=="object"&&!Array.isArray(r)?r:null}function La(e){if(typeof e.model=="string"&&e.model.trim())return e.model.trim();let r=e.modelUsage;if(r&&typeof r=="object"&&!Array.isArray(r)){let t=Object.keys(r)[0];if(t?.trim())return t.trim()}}function Ha(e,r){let t=Fa(r);if(!t)return;let n=Ie(t.input_tokens)??Ie(t.inputTokens)??Ie(t.prompt_tokens),o=Ie(t.output_tokens)??Ie(t.outputTokens)??Ie(t.completion_tokens);if(n===void 0&&o===void 0)return;let s=La(r)??e.usage?.model;e.usage={...n!==void 0?{inputTokens:n}:{},...o!==void 0?{outputTokens:o}:{},...s?{model:s}:{}}}function $a(e){if(e.type!=="tool_call"||e.subtype!=="completed")return null;let t=(e.tool_call&&typeof e.tool_call=="object"&&!Array.isArray(e.tool_call)?e.tool_call:null)?.shellToolCall;if(!t||typeof t!="object"||Array.isArray(t))return null;let n=t,o=n.args,s=o&&typeof o=="object"&&!Array.isArray(o)&&typeof o.command=="string"?String(o.command):"",i=n.result;if(!i||typeof i!="object"||Array.isArray(i))return null;let a=i.success??i.failure;if(!a||typeof a!="object"||Array.isArray(a))return null;let u=a,l=typeof u.exitCode=="number"?u.exitCode:0;return{command:s,exitCode:l,stdout:typeof u.stdout=="string"?u.stdout:"",stderr:typeof u.stderr=="string"?u.stderr:"",interleaved:typeof u.interleavedOutput=="string"?u.interleavedOutput:""}}function ja(e,r){r.kind==="success"||r.kind==="search_no_matches"||(e.lastShellOutcome=r)}function $n(e){let r={firstEventAt:null,lastEventAt:null,currentTool:null,finalResult:null,error:null,lastShellOutcome:null,usage:null};if(!Ta(e))return r;let t=Ma(e,"utf8").split(`
|
|
9
|
+
`).filter(Boolean),n=null,o=Fn();for(let s of t){let i=er(s);if(!i||typeof i!="object"||Array.isArray(i))continue;if(i.type==="turn.started"&&(n=null,r.finalResult=null),i.type==="item.completed"){let p=i.item;if(p&&typeof p=="object"&&!Array.isArray(p)){let g=p;g.type==="agent_message"&&typeof g.text=="string"&&g.text.trim()&&(n=g.text)}}i.type==="turn.completed"&&n&&!r.providerTerminalError&&(r.finalResult=n,n=null);let a=Ka(i);if(a&&(r.firstEventAt||=a,r.lastEventAt=a),i.type==="stream_event"&&i.event&&typeof i.event=="object"&&i.event.type==="content_block_start"){let p=i.event.content_block;p?.type==="tool_use"&&(r.currentTool=String(p.name||"tool"))}if(i.type==="assistant"&&i.message&&typeof i.message=="object"){let p=i.message.content;if(Array.isArray(p)){let g=p.find(f=>f?.type==="tool_use");g&&(r.currentTool=String(g.name||r.currentTool))}}if(i.type==="tool_call"&&i.subtype==="started"){let p=i.tool_call&&typeof i.tool_call=="object"&&!Array.isArray(i.tool_call)?i.tool_call:void 0,g=Ua(p);g&&(r.currentTool=g)}let u=$a(i);u&&ja(r,Mn({command:u.command,exitCode:u.exitCode,stdout:u.stdout,stderr:u.stderr,interleavedOutput:u.interleaved}));let l=Un(i),c=l?null:Ln(i,o),d=l??c;if(d?.currentTool&&(r.currentTool=d.currentTool),d?.usage&&(r.usage={...r.usage??{},...d.usage}),d?.terminal?d.terminal.ok?r.finalResult=d.terminal.finalResult:(r.finalResult=null,r.providerTerminalError=!0,r.error=d.terminal.error):i.type==="result"&&Ba(r,i),i.type==="turn.failed"){n=null,r.finalResult=null,r.providerTerminalError=!0;let p=i.error;r.error=typeof p?.message=="string"?p.message:"provider turn failed"}Ha(r,i)}return r}var jn=m(()=>{"use strict";Kn();b();br();Bn();Hn()});import{accessSync as Ud,constants as Bd,existsSync as Ga,readFileSync as Ya}from"node:fs";import Va from"node:path";function Ja(e){return Va.join(e,za)}function Xa(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function St(e){if(!e)return null;let r=Ja(e);if(!Ga(r))return null;try{let t=JSON.parse(Ya(r,"utf8")),n=t.oomEvidence;return{exitCode:Xa(t.exitCode),signal:typeof t.signal=="string"&&t.signal?t.signal:null,...typeof t.startedAt=="string"?{startedAt:t.startedAt}:{},...typeof t.endedAt=="string"?{endedAt:t.endedAt}:{},...typeof t.childPid=="number"?{childPid:t.childPid}:{},...typeof t.spawnError=="string"?{spawnError:t.spawnError}:{},oomEvidence:n&&(n.source==="cgroup"||n.source==="kernel_log")?{source:n.source,detail:String(n.detail??"").slice(0,300)}:null}}catch{return null}}function Gn(e){if(!e)return null;let r=e.oomEvidence?" (kernel out-of-memory kill)":"";return e.spawnError?`could not start: ${e.spawnError}`:e.signal?`killed by ${e.signal}${r}`:e.exitCode===null?null:`exited with code ${e.exitCode}${r}`}var za,Ld,xt=m(()=>{"use strict";za="exit.json";Ld=String.raw`"use strict";
|
|
10
|
+
const cp = require("child_process"), fs = require("fs");
|
|
11
|
+
const argv = process.argv.slice(1);
|
|
12
|
+
const exitFile = argv[0], cmd = argv[1], args = argv.slice(2);
|
|
13
|
+
const startedMs = Date.now();
|
|
14
|
+
function cgroupOomKills() {
|
|
15
|
+
try {
|
|
16
|
+
const line = fs.readFileSync("/proc/self/cgroup", "utf8").split("\n").find((l) => l.startsWith("0::"));
|
|
17
|
+
if (!line) return null;
|
|
18
|
+
const file = "/sys/fs/cgroup" + line.slice(3).trim().replace(/\/$/, "") + "/memory.events";
|
|
19
|
+
const m = /(?:^|\n)oom_kill (\d+)/.exec(fs.readFileSync(file, "utf8"));
|
|
20
|
+
return m ? Number(m[1]) : null;
|
|
21
|
+
} catch { return null; }
|
|
22
|
+
}
|
|
23
|
+
function kernelLog() {
|
|
24
|
+
const override = process.env.KYNVER_EXIT_CAPTURE_KERNEL_LOG_FILE;
|
|
25
|
+
if (override) { try { return fs.readFileSync(override, "utf8"); } catch { return ""; } }
|
|
26
|
+
const run = (bin, a) => {
|
|
27
|
+
try {
|
|
28
|
+
const r = cp.spawnSync(bin, a, { encoding: "utf8", timeout: 3000, maxBuffer: 8 * 1024 * 1024, stdio: ["ignore", "pipe", "ignore"] });
|
|
29
|
+
return r.status === 0 ? String(r.stdout || "") : "";
|
|
30
|
+
} catch { return ""; }
|
|
31
|
+
};
|
|
32
|
+
return run("journalctl", ["-k", "-q", "--no-pager", "--since", "@" + Math.floor(startedMs / 1000)]) || run("dmesg", []);
|
|
33
|
+
}
|
|
34
|
+
const oomBefore = cgroupOomKills();
|
|
35
|
+
let child, finished = false;
|
|
36
|
+
function write(rec) {
|
|
37
|
+
try { fs.writeFileSync(exitFile, JSON.stringify(rec, null, 2) + "\n"); } catch {}
|
|
38
|
+
}
|
|
39
|
+
function finish(code, signal, spawnError) {
|
|
40
|
+
if (finished) return;
|
|
41
|
+
finished = true;
|
|
42
|
+
const rec = { exitCode: code, signal: signal || null, startedAt: new Date(startedMs).toISOString(), endedAt: new Date().toISOString(), childPid: child && child.pid };
|
|
43
|
+
if (spawnError) rec.spawnError = spawnError;
|
|
44
|
+
if (signal === "SIGKILL" || code === 137 || (code !== 0 && code !== null)) {
|
|
45
|
+
const oomAfter = cgroupOomKills();
|
|
46
|
+
if (oomBefore !== null && oomAfter !== null && oomAfter > oomBefore) {
|
|
47
|
+
rec.oomEvidence = { source: "cgroup", detail: "memory.events oom_kill " + oomBefore + " -> " + oomAfter };
|
|
48
|
+
} else if (signal === "SIGKILL" || code === 137) {
|
|
49
|
+
const pid = child && child.pid;
|
|
50
|
+
const hit = kernelLog().split("\n").find((l) => pid && new RegExp("(?:Killed process|oom-kill:.*pid=|Memory cgroup out of memory: Killed process) ?" + pid + "\\b").test(l));
|
|
51
|
+
if (hit) rec.oomEvidence = { source: "kernel_log", detail: hit.trim().slice(0, 300) };
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
write(rec);
|
|
55
|
+
if (signal) {
|
|
56
|
+
const n = (require("os").constants.signals || {})[signal];
|
|
57
|
+
process.exit(128 + (n || 9));
|
|
58
|
+
}
|
|
59
|
+
process.exit(code === null ? 1 : code);
|
|
60
|
+
}
|
|
61
|
+
try {
|
|
62
|
+
child = cp.spawn(cmd, args, { stdio: "inherit" });
|
|
63
|
+
} catch (e) {
|
|
64
|
+
process.stderr.write("failed to spawn worker process: " + (e && e.message) + "\n");
|
|
65
|
+
finish(127, null, String(e && e.message));
|
|
66
|
+
}
|
|
67
|
+
for (const s of ["SIGTERM", "SIGINT", "SIGHUP"]) process.on(s, () => { try { child.kill(s); } catch {} });
|
|
68
|
+
child.on("error", (e) => {
|
|
69
|
+
process.stderr.write("failed to spawn worker process: " + (e && e.message) + "\n");
|
|
70
|
+
if (!child.pid) finish(127, null, String(e && e.message));
|
|
71
|
+
});
|
|
72
|
+
child.on("exit", (code, signal) => finish(code, signal));
|
|
73
|
+
`});function _t(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let r=e.handoffState;return typeof r=="string"&&Qa.has(r)}function vt(e){return!!(e&&Za.test(e))}function Vn(e){if(e.noRestartAt?.trim())return"stopped_by_hand";if(e.finalResult&&!_t(e.finalResult))return"finished";if(e.alive)return e.stale?"stuck":"running";let r=e.error?.trim()??"",t=e.exit??null;if(t?.oomEvidence||vt(r))return"oom";let n=e.reconcileReason??"";return/reconciled stale worker/i.test(n)?"stuck":Yn.test(r)||Yn.test(n)?"timed_out":t&&t.exitCode===0&&!t.signal&&!t.spawnError?"no_report":t&&(t.signal||t.spawnError||t.exitCode!==null&&t.exitCode!==0)||r?"crashed":"no_report"}function zn(e){let r=[eu(e.stopClass)],t=Gn(e.exit);t&&r.push(t),e.exit?.oomEvidence&&r.push(`evidence: ${e.exit.oomEvidence.detail}`),e.stopClass==="no_report"&&e.exit?.exitCode===0&&r.push("it exited normally but never sent a final report");let n=e.error?.replace(/\s+/g," ").trim();return n?r.push(`last output: ${n.length>300?`${n.slice(-300)}`:n}`):e.stopClass==="stuck"&&e.reconcileReason&&r.push(e.reconcileReason),r.join(" \u2014 ").slice(0,600)}function eu(e){switch(e){case"finished":return"finished";case"oom":return"ran out of memory";case"crashed":return"crashed";case"no_report":return"stopped without reporting";case"timed_out":return"timed out";case"stuck":return"stuck (no progress)";case"stopped_by_hand":return"stopped on purpose";default:return"running"}}var Za,Yn,Qa,Jn=m(()=>{"use strict";se();b();xt();Za=/javascript heap out of memory|reached heap limit|allocation failed - process out of memory|\bout of memory\b|\boom[- ]?kill(?:ed|er)?\b|std::bad_alloc|cannot allocate memory|\benomem\b|exit(?:ed)? (?:with )?(?:code|status) 137\b|killed process \d+/i,Yn=/\btimed? ?out\b|\btimeout\b|deadline exceeded/i,Qa=new Set(["exited_without_final_result","exited_without_complete_heartbeat","exit_failure"])});function Xn(e,r=240){let t=e.replace(/\s+/g," ").trim();return t.length>r?`${t.slice(0,r-1)}\u2026`:t}function Et(e){let r=(e??"").trim();if(!r)return null;if(He(r))return{blocked:!0,reason:`provider authentication failed: ${Xn(r)}`};for(let t of ru)if(t.test.test(r))return{blocked:!0,reason:`${t.label}: ${Xn(r)}`};return null}var ru,qn=m(()=>{"use strict";br();ru=[{test:/(?:claude provider refuses to spawn: worker prompt is empty after argv assembly|Input must be provided (?:either )?through stdin or as a prompt argument)/i,label:"provider prompt delivery failed"},{test:/\b(?:invalid|unknown|unsupported|unrecognized)\b[^.\n]*\bmodel\b/i,label:"provider rejected the requested model"},{test:/\bmodel\b[^.\n]*\b(?:not\s+(?:found|supported|available|recognized|valid)|is\s+not\s+valid|does\s+not\s+exist)/i,label:"provider rejected the requested model"},{test:/\b(?:did you mean|available models|choose (?:a|one of)|supported models)\b/i,label:"provider rejected the requested model"},{test:/model preflight failed/i,label:"model/provider preflight failed"},{test:/\b(?:command not found|ENOENT|is the .*CLI on PATH|executable not found|no such file or directory)\b/i,label:"provider CLI is missing or not on PATH"},{test:/\bfailed to spawn\b/i,label:"provider failed to spawn the worker process"},{test:/\b(?:not logged in|unauthorized|authentication (?:failed|required)|invalid api key|missing api key|401)\b/i,label:"provider authentication failed"},{test:/\b(?:out of usage|increase limits?|switch to auto|ask your admin to increase your limit|usage limits?|quota exceeded|insufficient_quota|credits? exhausted|billing|payment required)\b/i,label:"provider quota exhausted"}]});function Zn(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function tu(e){return e==null?!1:typeof e=="string"?e.trim().length>0:typeof e=="boolean"?e:Array.isArray(e)?e.length>0:typeof e=="object"?Object.keys(e).length>0:!0}function nu(e){return!e?.checked||e.headIsAncestorOfBase!==!1?null:Zn(e.head)}function ou(e,r,t){let n=["exited_with_changes_salvage"];if((e==="uncommitted"||e==="both")&&n.push(`${r} uncommitted change${r===1?"":"s"} with no final result`),(e==="committed_ahead"||e==="both")&&t){let o=t.length>12?t.slice(0,12):t;n.push(`commit ${o} ahead of base with no final result`)}return n.push("review worktree \u2014 commit, open a PR, or run a salvage worker before discarding"),n.join(": ")}function Qn(e){if(e.alive||tu(e.finalResult))return null;let r=(e.changedFiles??[]).filter(i=>i.trim()).length,t=Zn(e.headCommit)??nu(e.gitAncestry),n=r>0,o=!!t;if(!n&&!o)return{kind:"none",salvageable:!1,uncommittedCount:0,headCommit:null,attentionReason:"process exited without a final result"};let s=n&&o?"both":n?"uncommitted":"committed_ahead";return{kind:s,salvageable:!0,uncommittedCount:r,headCommit:t,attentionReason:ou(s,r,t)}}var eo=m(()=>{"use strict"});import{existsSync as su,readFileSync as iu,statSync as no}from"node:fs";import Sr from"node:path";function cu(e,r=process.env){let t=e?uu:au,n=r.KYNVER_WORKER_GIT_PROBE_CACHE_TTL_MS?.trim();if(!n)return t;let o=Number(n);return Number.isFinite(o)&&o>=0?Math.floor(o):t}function du(e){return e.baseCommit?.trim()||e.base?.trim()||"origin/main"}function Ct(e){try{return no(e).mtimeMs}catch{return-1}}function pu(e){let r=Sr.join(e,".git");try{if(no(r).isDirectory())return r;let t=/^gitdir:\s*(.+)$/m.exec(iu(r,"utf8"));return t?Sr.resolve(e,t[1].trim()):null}catch{return null}}function ro(e){let r=pu(e);return[Ct(e),r?Ct(Sr.join(r,"HEAD")):-2,r?Ct(Sr.join(r,"index")):-2].join(":")}function to(e,r){return{changedFiles:Ue(e),gitAncestry:or(e,{base:r.base,baseCommit:r.baseCommit})}}function fu(e,r){for(ie.delete(e),ie.set(e,r);ie.size>lu;){let t=ie.keys().next().value;if(t===void 0)break;ie.delete(t)}}function oo(e,r,t){let n=du(r);if(!e||!e.trim())return $e.missingWorktree++,{changedFiles:[],gitAncestry:ve(n,"missing worktree path")};let o=`${e}\0${n}`;if(!su(e))return ie.delete(o),$e.missingWorktree++,{changedFiles:[],gitAncestry:ve(n,`worktree no longer exists: ${e}`)};if(t.alive)return ie.delete(o),$e.liveProbes++,to(e,r);let s=t.ttlMs??cu(!!r.baseCommit?.trim()),i=t.now??Date.now(),a=ro(e),u=ie.get(o);if(s>0&&u&&u.fingerprint===a&&i<u.expiresAt)return $e.hits++,u.probe;$e.misses++;let l=to(e,r);if(s>0){let c=.8+.4*(t.random??Math.random)();fu(o,{fingerprint:ro(e),expiresAt:i+Math.round(s*c),probe:l})}return l}var au,uu,lu,ie,$e,so=m(()=>{"use strict";H();au=10*6e4,uu=60*6e4,lu=2048,ie=new Map,$e={hits:0,misses:0,liveProbes:0,missingWorktree:0}});function je(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function mu(e){return e==null?!1:typeof e=="string"?e.trim().length>0:typeof e=="boolean"?e:Array.isArray(e)?e.length>0:typeof e=="object"?Object.keys(e).length>0:!0}function gu(e){if(je(e.headCommit)||je(e.prUrl)||je(e.artifactBundlePath)||je(e.patchPath))return!0;let r=e.gitAncestry;return!!(r?.checked&&r.headIsAncestorOfBase===!1&&je(r.head))}function Ne(e){return mu(e.finalResult)?e.changedFiles.length===0?{blocked:!1}:gu(e)?{blocked:!0,detail:`Worktree has ${e.changedFiles.length} uncommitted change(s); commit or discard before landing`}:{blocked:!0,reason:"dirty_worktree_no_pr",detail:`Worktree has ${e.changedFiles.length} uncommitted change(s) with no commit or PR; commit, open a PR, or discard before landing`}:{blocked:!1}}function io(e){if(e.blocked)return e.detail??e.reason??"dirty_worktree_no_pr"}var xr=m(()=>{"use strict"});function wt(e){let r=e.trim();if(!r.startsWith("{"))return null;try{let t=JSON.parse(r);if(t&&typeof t=="object"&&!Array.isArray(t))return t}catch{return null}return null}function ao(e){let r=e.targetPrReconciliation??e.target_pr_reconciliation??e.targetPrs??e.target_prs;return Array.isArray(r)?r.length:0}function _r(e){let r=e.trim();if(!r)return null;let t=wt(r);if(t)return t;let n=[],o=/```(?:json)?\s*([\s\S]*?)```/gi,s;for(;(s=o.exec(r))!==null;){let c=wt(s[1]??"");c&&n.push(c)}let i=r.indexOf("{"),a=r.lastIndexOf("}");if(i>=0&&a>i){let c=wt(r.slice(i,a+1));c&&n.push(c)}if(n.length===0)return null;let u=n[n.length-1],l=ao(u);for(let c of n){let d=ao(c);d>l&&(u=c,l=d)}return u}var At=m(()=>{"use strict"});function uo(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`https://github.com/${r[1]}/pull/${r[2]}`:e.trim()||null}function lo(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`${r[1].toLowerCase()}/pull/${r[2]}`:e.trim().toLowerCase()}function hu(e){return new Set(e.map(r=>lo(uo(r)??r)).filter(Boolean))}function co(e,r,t){let n=uo(e)??e;if(!n)return"unrelated";let o=lo(n);return hu(r).has(o)?"contract":t?(t.outcome==="skipped"||t.outcome==="blocked")&&t.reason?.trim()?"support":(t.outcome==="merged","unrelated"):"unrelated"}var po=m(()=>{"use strict"});function We(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function ku(e){return e==null?!1:typeof e=="string"?e.trim().length>0:typeof e=="object"?Object.keys(e).length>0:!0}function pe(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`https://github.com/${r[1]}/pull/${r[2]}`:We(e)}function vr(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`${r[1].toLowerCase()}/pull/${r[2]}`:e.trim().toLowerCase()}function fo(e){let r=null;if(typeof e=="string"){let o=_r(e);o&&(r=o)}else e&&typeof e=="object"&&!Array.isArray(e)&&(r=e);if(!r)return[];let t=r.targetPrReconciliation??r.target_pr_reconciliation;if(!Array.isArray(t))return[];let n=[];for(let o of t){if(!o||typeof o!="object"||Array.isArray(o))continue;let s=o,i=pe(String(s.prUrl??s.pr_url??"")),a=We(s.outcome);!i||a!=="merged"&&a!=="skipped"&&a!=="blocked"||n.push({prUrl:i,outcome:a,mergeCommit:We(s.mergeCommit??s.merge_commit),reason:We(s.reason)})}return n}function mo(e,r){let t=[],n=pe(We(e.prUrl)??"");if(n&&t.push(n),r&&typeof r=="object"&&!Array.isArray(r)){let o=r,s=pe(String(o.prUrl??o.pr_url??""));s&&t.push(s)}return[...new Set(t)]}function go(e){let{contract:r,snapshot:t}=e,n=e.finalResult??t.finalResult;if(!r.landingOnly&&r.targetPrUrls.length===0&&!r.repairEnforceOriginalPr)return{blocked:!1};if(!ku(n))return(r.requiresTargetPrReconciliation??(r.landingOnly||!!r.repairEnforceOriginalPr||r.targetPrUrls.length>0))&&r.targetPrUrls.length>0?{blocked:!0,reason:"missing_target_pr_reconciliation",detail:`Final result required to reconcile target PR(s): ${r.targetPrUrls.join(", ")}`}:{blocked:!1};if(!(r.requiresTargetPrReconciliation??(r.landingOnly||!!r.repairEnforceOriginalPr||r.targetPrUrls.length>0))&&!r.repairEnforceOriginalPr)return{blocked:!1};let s=r.repairEnforceOriginalPr?pe(We(r.targetPrUrl)??"")??(r.targetPrUrls.length===1?pe(r.targetPrUrls[0]):null):null;if(s){let d=mo(t,n);if(!(n&&typeof n=="object"&&!Array.isArray(n)&&n.supersedesOriginalTargetPr===!0)){for(let y of d)if(y!==s)return{blocked:!0,reason:"duplicate_repair_pr",detail:`Repair worker opened or attached PR ${y} instead of canonical target ${s}`}}let f=fo(n).find(y=>y.prUrl===s);if(!f||f.outcome!=="merged"&&!(f.reason?.trim()&&(f.outcome==="skipped"||f.outcome==="blocked")))return{blocked:!0,reason:"missing_repair_target_reconciliation",detail:`Repair worker must reconcile target PR ${s}`}}let i=fo(n),a=new Map(i.map(d=>[vr(d.prUrl),d])),u=new Set(r.targetPrUrls.map(d=>vr(pe(d)??d)).filter(Boolean)),l=mo(t,n);if(r.landingOnly)for(let d of l){let p=a.get(vr(d)),g=co(d,r.targetPrUrls,p);if(!(g==="contract"||g==="support"))return u.size>0?{blocked:!0,reason:"unrelated_implementation_pr",detail:`Landing-only worker attached unrelated PR ${d}`}:{blocked:!0,reason:"unrelated_implementation_pr",detail:"Landing-only worker must not open new implementation PRs"}}if(r.targetPrUrls.length===0)return{blocked:!1};let c=[];for(let d of r.targetPrUrls){let p=vr(pe(d)??d),g=a.get(p);if(!g){c.push(p);continue}g.outcome!=="merged"&&!g.reason?.trim()&&c.push(p)}return c.length>0?{blocked:!0,reason:c.every(d=>a.has(d))?"incomplete_target_pr_landing":"missing_target_pr_reconciliation",detail:`Target PR reconciliation incomplete: ${c.join(", ")}`}:{blocked:!1}}function ho(e){if(e.blocked)return e.detail??e.reason}var ko=m(()=>{"use strict";At();po()});function bu(e){let r=Date.now();if(e.providerTerminalError||Rr(e.finalResult)||e.finalResult&&e.error?.trim()||He(e.error)||He(e.finalResult)){let o=e.error||(typeof e.finalResult=="string"?e.finalResult:"provider terminal error");return{state:"blocked",reason:Et(o)?.reason??`provider terminal error: ${o}`}}if(e.completionBlocker&&!yo(e.completionBlocker))return{state:"blocked",reason:e.completionBlocker};if(e.finalResult){if(e.localOnly&&xu(e.finalResult))return{state:"done",reason:"local-only worker superseded by merged PR"};let o={finalResult:e.finalResult,changedFiles:e.changedFiles??[],gitAncestry:e.gitAncestry??null,prUrl:e.prUrl??null},s=Ne(o);if(s.blocked){let i=io(s);return{state:"needs_attention",reason:s.reason?`landing blocked (${s.reason}): ${i}`:`landing blocked: ${i}`}}if(e.landingContract){let i=go({contract:e.landingContract,snapshot:o,finalResult:e.finalResult}),a=ho(i);if(a)return{state:"needs_attention",reason:i.reason?`landing contract (${i.reason}): ${a}`:`landing contract: ${a}`}}return{state:"done",reason:"final result recorded"}}if(!e.alive){if(Su(e))return{state:"done",reason:"empty abandoned worker record"};let o=Et(e.error);if(o)return{state:"blocked",reason:o.reason};let s=Qn({alive:!1,finalResult:null,changedFiles:e.changedFiles,gitAncestry:e.gitAncestry});if(s?.salvageable){let u=e.error?.trim();return{state:"needs_attention",reason:u?`${s.attentionReason} (${u})`:s.attentionReason}}let i=e.error?.trim(),a=vt(i);return{state:"needs_attention",reason:i?`process exited without a final result${a?" (ran out of memory)":""}: ${i}`:s?.attentionReason??"process exited without a final result"}}if(e.heartbeatBlocker)return{state:"blocked",reason:`worker heartbeat reported blocker: ${e.heartbeatBlocker}`};let t=e.startedAt?Date.parse(e.startedAt):NaN;if(!e.firstEventAt&&e.stdoutBytes===0&&e.heartbeatBytes===0&&Number.isFinite(t)&&r-t>yu)return{state:"needs_attention",reason:`no first stream event ${tt(t)}s after start`};let n=e.lastActivityAt?Date.parse(e.lastActivityAt):NaN;return Number.isFinite(n)&&r-n>Ru?{state:"stale",reason:`no log/event/heartbeat activity for ${tt(n)}s`}:{state:"ok",reason:"recent activity"}}function yo(e){let r=e?.trim();return r?/completion acknowledged but board not advanced/i.test(r)&&/task already terminal/i.test(r):!1}function Su(e){return e.finalResult||e.taskId||e.agentOsId||e.stdoutBytes>0||(e.stderrBytes??0)>0||e.heartbeatBytes>0||e.error?.trim()||(e.changedFiles??[]).some(r=>r.trim())?!1:/empty worker dir|marked abandoned/i.test(e.reconcileReason??"")}function xu(e){let r=null;if(typeof e=="string"?r=_r(e):e&&typeof e=="object"&&!Array.isArray(e)&&(r=e),!r)return!1;let t=r.targetPrReconciliation??r.target_pr_reconciliation;return Array.isArray(t)?t.some(n=>!n||typeof n!="object"||Array.isArray(n)?!1:String(n.outcome??"").trim()==="merged"):!1}function _u(e,r,t){let n=e.completionSnapshot?.finalResult;return e.completionAckSource==="local-pr-merged-reconcile"&&n!==void 0&&n!==null?n:r||(n??Cn(t))}function Er(e,r={}){let t=$n(e.stdoutPath),n=Oe(e.heartbeatPath),o=typeof e.completionReportedAt=="string"&&e.completionReportedAt.trim().length>0,s=_u(e,t.finalResult,n),i=o?!1:J(e.pid),a=rr(e.stdoutPath),u=rr(e.stderrPath),l=rr(e.heartbeatPath),{changedFiles:c,gitAncestry:d}=oo(e.worktreePath,{base:r.base,baseCommit:r.baseCommit},{alive:i}),p=cn([t.lastEventAt,n.lastHeartbeatAt,tr(e.stdoutPath),tr(e.stderrPath),tr(e.heartbeatPath)]),g=i?null:St(e.workerDir),f=s&&!_t(s)?s:null,y=t.error||!i&&!s&&nr(e.stderrPath,10).trim()||void 0,S=y||!i&&s&&!f&&nr(e.stderrPath,10).trim()||void 0,R=typeof e.completionBlocker=="string"&&e.completionBlocker.trim()?e.completionBlocker.trim():null,O=yo(R)?null:R,B=e.repairTargetPrUrl?{landingOnly:!1,targetPrUrls:[e.repairTargetPrUrl],targetPrUrl:e.repairTargetPrUrl,repairEnforceOriginalPr:!0}:null,C=bu({alive:i,finalResult:s,firstEventAt:t.firstEventAt,stdoutBytes:a,stderrBytes:u,heartbeatBytes:l,lastActivityAt:p,heartbeatBlocker:n.heartbeatBlocker,startedAt:e.startedAt,error:y,providerTerminalError:t.providerTerminalError,changedFiles:c,gitAncestry:d,completionBlocker:O,landingContract:B,prUrl:e.repairTargetPrUrl??e.taskPrUrl??null,localOnly:e.localOnly===!0,taskId:e.taskId??null,agentOsId:e.agentOsId??null,reconcileReason:e.reconcileReason??null}),xe=O||C.state==="blocked"?"blocked":o||C.state==="done"?"done":s?"exited":i?"running":"exited",I=e.stopClass&&e.stopClass!=="running"&&e.stopClass!=="finished"?e.stopClass:null,Y=Vn({alive:i,finalResult:s,error:S??null,stale:C.state==="stale",noRestartAt:e.noRestartAt??null,reconcileReason:e.reconcileReason??null,exit:g}),N=I&&!i&&!f?I:Y,A=N==="running"||N==="finished"?null:(I===N?e.stopReason:void 0)??zn({stopClass:N,exit:g,error:S??null,reconcileReason:e.reconcileReason??null});return{runId:e.runId,worker:e.name,pid:e.pid,alive:i,status:xe,stopClass:N,stopReason:A,exit:g,attention:C,branch:e.branch,worktreePath:e.worktreePath,ownedPaths:e.ownedPaths,stdoutBytes:a,stderrBytes:u,heartbeatBytes:l,firstEventAt:t.firstEventAt,lastEventAt:t.lastEventAt,lastActivityAt:p,currentTool:o?null:t.currentTool,heartbeatCount:n.heartbeatCount,lastHeartbeatAt:n.lastHeartbeatAt,lastHeartbeatPhase:n.lastHeartbeatPhase,lastHeartbeatSummary:n.lastHeartbeatSummary,heartbeatBlocker:n.heartbeatBlocker,timestampAnomalies:n.timestampAnomalies,finalResult:s,error:y,providerTerminalError:t.providerTerminalError,changedFiles:c,gitAncestry:d,instructionPolicyFingerprint:e.instructionPolicyFingerprint??null,instructionPolicyEvidence:e.instructionPolicyEvidence??null,model:e.model??e.orchestrationAudit?.model??null,provider:e.provider??e.orchestrationAudit?.provider??null,usage:t.usage??null,boxKind:e.boxKind??null,boxId:e.boxId??null,runtimeId:e.runtimeId??null,personaSlug:e.personaSlug??null,dispatched:e.dispatched??null,localOnly:e.localOnly??null}}function fe(e){return!!(e.finalResult||e.alive===!1||e.status==="exited"||e.status==="done")}function Ro(e){return e.finalResult?e.attention.state==="needs_attention"||e.attention.state==="blocked":!1}var yu,Ru,me=m(()=>{"use strict";hr();jn();Jn();xt();br();qn();eo();so();xr();ko();At();b();yu=18e4,Ru=6e5});var bo=m(()=>{"use strict";me();b()});function So(e,r={}){let t=r.perWorkerMemBytes??Pt,n=r.memReserveBytes??Ot,o=r.memUtilization??It,s=Math.max(0,Math.floor(e*o)-n),i=Math.max(1,Math.floor(s/t));return Math.min(i,Cr)}var Pt,Ot,It,Cr,xo=m(()=>{"use strict";gn();ae();de();ur();wr();fr();se();mt();bo();b();Pt=500*1024*1024,Ot=4*1024*1024*1024,It=.85,Cr=64});function Ge(e,r){let t=Number(e);return!Number.isFinite(t)||t<=0?r:Math.floor(t)}function Nt(e){let r=e.config??{},t=e.env??process.env,n=Ge(r.perWorkerMemBytes,Pt),o=Ge(r.memReserveBytes,Ot),s=Math.min(1,Math.max(.1,Number(r.memUtilization)>0?Number(r.memUtilization):It)),i=So(e.totalMemBytes,{perWorkerMemBytes:n,memReserveBytes:o,memUtilization:s});if(e.configuredMaxWorkersOverride!==void 0&&e.configuredMaxWorkersOverride!==null)return{configuredMaxWorkers:Ge(e.configuredMaxWorkersOverride,i),autoCap:i,workerCapSource:"workspace_override"};if(r.maxConcurrentWorkers!==void 0&&r.maxConcurrentWorkers!==null){let l=Ge(r.maxConcurrentWorkers,0)||null;if(l)return{configuredMaxWorkers:Math.min(l,Cr),autoCap:i,workerCapSource:"config"}}let u=(t.KYNVER_MAX_WORKERS_INTENTIONAL==="1"||t.KYNVER_MAX_WORKERS_INTENTIONAL==="true")&&t.KYNVER_MAX_WORKERS&&Ge(t.KYNVER_MAX_WORKERS,0)||null;return u?{configuredMaxWorkers:Math.min(u,Cr),autoCap:i,workerCapSource:"env"}:{configuredMaxWorkers:null,autoCap:i,workerCapSource:"auto"}}var wr=m(()=>{"use strict";xo()});import{homedir as vu}from"node:os";import Eu from"node:path";var _o,Wt=m(()=>{"use strict";_o=Eu.join(vu(),".kynver",".env")});var vo=m(()=>{"use strict"});var Eo=m(()=>{"use strict";vo()});var Co=m(()=>{"use strict"});var wo=m(()=>{"use strict";b()});var Dt=m(()=>{"use strict";Eo();Co();wo()});var Ao=m(()=>{"use strict"});var Po=m(()=>{"use strict";Ao()});var Ar=m(()=>{"use strict";Wt();oe();ae();Dt();Po()});var No=m(()=>{"use strict";de();de()});var Wo=m(()=>{"use strict";Wt();Dt();Ar()});var Tt=m(()=>{"use strict"});import{existsSync as Z,mkdirSync as wu,readdirSync as Pr,renameSync as Do,statSync as Au}from"node:fs";import Q from"node:path";function Mo(e){try{return Au(e).isDirectory()}catch{return!1}}function Pu(e){if(!Z(e))return!0;for(let r of To){let t=Q.join(e,r);if(Z(t)&&(!Mo(t)||Pr(t).length>0))return!1}return!0}function Ou(e){let r=Q.join(e,"runs");if(!Z(r)||!Mo(r))return!1;for(let t of Pr(r,{withFileTypes:!0})){if(!t.isDirectory()||t.name==="runs")continue;let n=Q.join(r,t.name,"run.json");if(_(n,void 0)?.id)return!0}return!1}function Iu(e){let r=Q.join(e,"runs");if(!Z(r))return!1;for(let t of Pr(r,{withFileTypes:!0})){if(!t.isDirectory())continue;if(_(Q.join(r,t.name,"run.json"),void 0)?.boxKind==="ghost")return!0}return!1}function Nu(e){let r=Q.join(e,"ghost");return Z(r)?!Z(Q.join(r,"runs")):Iu(e)}function Ko(e){return Ou(e.sharedRoot)?Pu(e.forgeRoot)?Nu(e.sharedRoot)?{action:"blocked",blocker:"Forge legacy harness migration blocked: Ghost pool is co-hosted on this host (ghost namespace or ghost-attributed runs under ~/.kynver/harness). Drain in-flight Ghost runs from the shared root, or get operator sign-off for a fresh Forge cutover before enabling box-scoped isolation."}:{action:"migrate"}:{action:"none"}:{action:"none"}}function Uo(e,r){wu(r,{recursive:!0});for(let t of To){let n=Q.join(e,t),o=Q.join(r,t);if(Z(n)){if(Z(o)&&Pr(o).length>0)throw new Error(`Forge legacy harness migration failed: ${o} is not empty`);if(Z(o)){Do(n,o);continue}Do(n,o)}}}var To,Bo=m(()=>{"use strict";b();To=["runs","worktrees"]});import{existsSync as w}from"node:fs";import{homedir as Wu}from"node:os";import E from"node:path";function Mt(e=process.env){return e.HOME?.trim()||Wu()}function Kt(e=process.env){return E.join(Mt(e),".kynver","harness")}function Or(e){let r=E.resolve(z(e.trim()));for(;Du.has(E.basename(r));)r=E.dirname(r);return r}function Tu(e,r=process.env){return E.join(Kt(r),e)}function Mu(e=process.env){let r=Kt(e);if(w(E.join(r,"runs")))return!0;if(w(r)&&!w(E.join(r,"ghost"))&&!w(E.join(r,"forge")))return w(r);let t=E.join(Mt(e),Fo);return w(t)}function Ir(e){let r=e.env??process.env,t=r.KYNVER_HARNESS_ROOT?.trim()||r.OPUS_HARNESS_ROOT?.trim();if(t)return{harnessRoot:Or(t),source:"env"};let n=e.configuredHarnessRoot?.trim();if(n)return{harnessRoot:Or(n),source:"config"};let o=Tu(e.boxKind,r);if(w(E.join(o,"runs"))||w(o)&&!Ku(o))return{harnessRoot:o,source:"box_scoped"};let i=Kt(r);if(e.boxKind==="forge"){let a=Ko({sharedRoot:i,forgeRoot:o});if(a.action==="blocked")return{harnessRoot:o,source:"box_scoped",migrationBlocker:a.blocker};if(a.action==="migrate")return e.allowForgeLegacyMigration!==!1&&Uo(i,o),{harnessRoot:o,source:"legacy_migrated"}}if(e.boxKind==="ghost"&&Mu(r)){if(w(E.join(i,"runs")))return{harnessRoot:i,source:"legacy_shared"};if(w(i)&&!w(E.join(i,"ghost"))&&!w(E.join(i,"forge")))return{harnessRoot:i,source:"legacy_shared"};let u=E.join(Mt(r),Fo);if(w(u))return{harnessRoot:u,source:"legacy_shared"}}return{harnessRoot:o,source:"box_scoped"}}function Ku(e){if(!w(e))return!0;for(let r of["runs","worktrees"]){let t=E.join(e,r);if(w(t))return!1}return!0}var Fo,Du,Ut=m(()=>{"use strict";oe();Bo();Fo=E.join(".openclaw","harness");Du=new Set(["runs","worktrees"])});import Lo from"node:os";function Nr(e){return e?.trim()?e.trim():null}function Uu(e,r){let t=r.trim().toLowerCase()||"host";return`${e}-${t}`.replace(/[^a-z0-9._-]+/g,"-")}function Bu(e){return e.KYNVER_DISPATCH_STRICT_IDENTITY==="1"||e.KYNVER_DISPATCH_STRICT_IDENTITY==="true"||e.KYNVER_DAEMON_STRICT_IDENTITY==="1"||e.KYNVER_DAEMON_STRICT_IDENTITY==="true"}function Wr(e=ge(),r=process.env,t={}){let n=Ce(r,e),o=[...n.warnings],s=[],i=!!(e.boxKind?.trim()||Nr(r.KYNVER_BOX_KIND)),a=t.strict===!0||Bu(r);if((t.requireExplicitBoxKind||a)&&!i&&s.push("boxKind is not persisted in ~/.kynver/config.json and KYNVER_BOX_KIND is unset \u2014 run `kynver setup` (customers: boxKind=box) or `kynver setup --box-kind forge|ghost` for operator pools before dispatch"),n.slugInferenceBlocked&&!i){let y="ambiguous box identity: KYNVER_AGENT_OS_SLUG is set without KYNVER_BOX_KIND or config.boxKind";a||t.requireExplicitBoxKind?s.push(y):o.push(`${y} \u2014 defaulting box kind to box (customer), not forge/ghost`)}let u=Nr(e.runnerId),l=Nr(r.KYNVER_RUNTIME_ID)??Nr(r.OPENCLAW_RUNTIME_ID),c=u??l??Uu(n.boxKind,Lo.hostname()),d=u?"config":l?"env":"derived";d==="derived"&&o.push(`runnerId not persisted \u2014 using derived id "${c}"; run \`kynver setup --box-kind ${n.boxKind}\` to persist runner identity`);let p=Nt({config:e,env:r,totalMemBytes:Lo.totalmem()}),g=ar(n.boxKind,p.configuredMaxWorkers??st(n.boxKind,p.autoCap)),f=Ir({boxKind:n.boxKind,configuredHarnessRoot:e.harnessRoot,env:r});return f.migrationBlocker&&s.push(f.migrationBlocker),s.length>0?{ok:!1,identity:null,errors:s,warnings:o}:{ok:!0,identity:{boxKind:n.boxKind,boxKindSource:n.source,runnerId:c,runnerIdSource:d,maxConcurrentWorkers:g,workerCapSource:p.workerCapSource,harnessRoot:f.harnessRoot,harnessRootSource:f.source},errors:s,warnings:o}}var Dr=m(()=>{"use strict";ae();de();ur();wr();Ut()});var $o=m(()=>{"use strict";sr();de();No();ae();Ar();Wo();ot();Tt();Dr()});var $u,sm,jo=m(()=>{"use strict";$u=["claude","cursor","codex","gemini","gemini-api","openai-compatible"],sm=$u.join("|")});var Go=m(()=>{"use strict";oe()});var Yo=m(()=>{"use strict";Go()});var Vo=m(()=>{"use strict"});var zo=m(()=>{"use strict";Vo()});import{existsSync as Gu,mkdirSync as Nm,readFileSync as Yu,writeFileSync as Wm}from"node:fs";import{homedir as Vu,totalmem as Tm}from"node:os";import Bt from"node:path";function zu(e){return{...e,...e.harnessRoot?.trim()?{harnessRoot:z(e.harnessRoot.trim())}:{},...e.defaultRepo?.trim()?{defaultRepo:z(e.defaultRepo.trim())}:{}}}function ge(){if(!Gu(Jo))return{};try{return zu(JSON.parse(Yu(Jo,"utf8")))}catch{return{}}}var Xo,Jo,qm,Zm,Qm,ae=m(()=>{"use strict";sr();oe();ot();de();ur();wr();fr();Ar();$o();jo();Dr();Yo();Tt();zo();Xo=Bt.join(Vu(),".kynver"),Jo=Bt.join(Xo,"config.json"),qm=Bt.join(Xo,"credentials");Zm=500*1024*1024,Qm=4*1024*1024*1024});import Ft from"node:path";function D(e){return Or(e)}function ue(){let e=process.env.KYNVER_HARNESS_ROOT||process.env.OPUS_HARNESS_ROOT;if(e)return D(e);let r=ge(),t=r.harnessRoot?.trim();if(t)return D(t);let n=Wr(r,process.env);return n.identity?n.identity.harnessRoot:Ir({boxKind:"forge",configuredHarnessRoot:null}).harnessRoot}function X(e){return Ft.join(D(e),"runs")}function De(e){return Ft.join(D(e),"worktrees")}function Sn(){let e=ue();return{harnessRoot:e,runsDir:X(e),worktreesDir:De(e)}}function pt(e,r){return Ft.join(e,x(r))}var q=m(()=>{"use strict";ae();Ut();Dr();b()});q();import U from"node:path";xr();import Kr from"node:path";H();me();var Lt=[".next",".turbo","dist","build",".cache","node_modules/.cache"];function qo(e){let r=e.replace(/\\/g,"/").replace(/\/+$/,"");if(r==="node_modules"||r.startsWith("node_modules/"))return!0;for(let t of Lt)if(r===t||r.startsWith(`${t}/`))return!0;return!1}function T(e){return e.filter(r=>{let t=r.trim(),n=t.startsWith("??")?t.slice(2).trim():t.length>3?t.slice(3).trim():t;return!qo(n)})}function he(e){if(typeof e=="string")return e.match(/https:\/\/github\.com\/[^\s]+\/pull\/\d+/i)?.[0]??null;if(e&&typeof e=="object"){let r=e;for(let t of["prUrl","pr_url","pullRequestUrl"]){let n=r[t];if(typeof n=="string"&&n.trim())return n.trim()}}return null}function Ye(e){let r=e.gitAncestry?.relation;return r==="merged"||r==="synced"?T(e.changedFiles).length>0:!!(he(e.finalResult)||r==="ahead"||r==="diverged"||e.changedFiles.length>0&&e.finalResult)}b();function Ve(e){return e.status||(e.status=Er(e.worker,{base:e.run.base,baseCommit:e.run.baseCommit})),e.status}function Ht(e,r){if(e.status)return T(e.status.changedFiles).length>0;let t=r?r.porcelain(e.worktreePath):Ue(e.worktreePath);return T(t).length>0}function Ju(e){let r=e.worker.completionSnapshot?.finalResult;return r??(e.worker.taskPrUrl?{prUrl:e.worker.taskPrUrl}:null)}function $t(e,r){if(e.status)return e.status;let t=e.worker,n=typeof t.completionReportedAt=="string"&&t.completionReportedAt.trim().length>0,o=!!(t.status&&["done","exited","blocked","failed","abandoned"].includes(t.status))||n,s=Ju(e);if(o&&!J(t.pid)){let i=r?.gitStatusCache?r.gitStatusCache.porcelain(e.worktreePath):Ue(e.worktreePath),a=e.run.baseCommit?.trim()||e.run.base?.trim()||"origin/main",l=r?.gitRevCache?.countAheadOfMain(e.worktreePath,a)===0?{checked:!0,base:a,relation:"synced"}:or(e.worktreePath,{base:e.run.base,baseCommit:e.run.baseCommit}),c={runId:e.runId,worker:e.workerName,pid:t.pid,alive:!1,status:t.status??(n?"done":"exited"),attention:{state:n?"done":"stale"},branch:t.branch,worktreePath:e.worktreePath,ownedPaths:t.ownedPaths,stdoutBytes:0,stderrBytes:0,heartbeatBytes:0,firstEventAt:null,lastEventAt:null,lastActivityAt:t.completionReportedAt??null,currentTool:null,heartbeatCount:0,lastHeartbeatAt:null,lastHeartbeatPhase:null,lastHeartbeatSummary:null,heartbeatBlocker:null,changedFiles:i,gitAncestry:l,finalResult:s,completionBlocker:typeof t.completionBlocker=="string"&&t.completionBlocker.trim()||null,prUrl:t.repairTargetPrUrl??t.taskPrUrl??he(s)};return e.status=c,c}return Ve(e)}me();se();mt();me();b();import Xu from"node:path";var qu=new Set(["running","dispatching","pending","queued","needs_attention"]),ke=new Set(["completed","failed","cancelled","done"]);function ye(e){let r=ft(e);if(r.length===0)return"failed";let t=!1,n=!1,o=!1,s=!1;for(let i of r){let a=_(Xu.join(Pe(e.id),"workers",x(i),"worker.json"),void 0);if(!a)continue;let u=Er(a,{base:e.base,baseCommit:e.baseCommit});if(u.alive&&!u.finalResult){t=!0;break}typeof a.completionBlocker=="string"&&a.completionBlocker&&(o=!0),Ro(u)&&(s=!0),u.finalResult&&u.attention.state==="done"&&(n=!0)}return t||o||s?null:n?"completed":"failed"}function Zo(){let e=[];for(let r of ct()){if(!qu.has(r.status))continue;let t=ye(r);if(!t||t===r.status)continue;let n=r.status;r.status=t,dt(r),e.push({runId:r.id,from:n,to:t})}return e}me();hr();import{existsSync as Tr,mkdirSync as Gg,readdirSync as rs,renameSync as Yg,statSync as Zu}from"node:fs";import Re from"node:path";ae();sr();oe();nt();H();hr();q();se();q();b();import le from"node:path";var Wg=`${le.sep}runs${le.sep}runs${le.sep}`;function Qo(e){return{workerJsonPath:le.join(e,"worker.json"),stdoutPath:le.join(e,"stdout.jsonl"),stderrPath:le.join(e,"stderr.log"),heartbeatPath:le.join(e,"heartbeat.jsonl"),lastStatusPath:le.join(e,"last-status.json")}}b();ae();var $="<redacted>",jt=`[^\\s"'\\\\,}\\]]`,Tg=[[new RegExp(`\\b(?:postgres(?:ql)?|mysql|mongodb(?:\\+srv)?|redis|rediss):\\/\\/${jt}+`,"gi"),$],[new RegExp(`\\b[a-z][a-z0-9+.-]*:\\/\\/[^\\s/@:"']+:[^\\s/@"']+@${jt}+`,"gi"),$],[/\bkynver_u_[A-Za-z0-9_-]+/g,$],[/\bkyn_[A-Za-z0-9]{12,}/g,$],[/\bsk-ant-[A-Za-z0-9_-]+/g,$],[/\bsk-[A-Za-z0-9_-]{8,}/g,$],[/\bkr[a-z]1\.[A-Za-z0-9._~+/=-]{8,}/g,$],[/\b(?:ghp|gho|ghu|ghs|ghr)_[A-Za-z0-9]{16,}/g,$],[/\bgithub_pat_[A-Za-z0-9_]{16,}/g,$],[/\b(Bearer|Basic)\s+(?!<redacted>)[A-Za-z0-9._~+/=-]{8,}/gi,`$1 ${$}`],[new RegExp(`(\\b(?:[A-Z0-9_]*(?:API_KEY|APIKEY|TOKEN|SECRET|PASSWORD)|DATABASE_URL|KYNVER_DATABASE_URL)\\s*=\\s*)(?!<redacted>)${jt}+`,"g"),`$1${$}`]];var Mg=256*1024*1024;var ze=900*1e3,nh=3600*1e3;function ts(e,r){let t=Re.resolve(e),n=Re.resolve(X(r)),o=Re.relative(n,t);return o!==".."&&!o.startsWith("..")&&!Re.isAbsolute(o)}function Qu(e){if(!Tr(e))return[];try{return rs(e,{withFileTypes:!0}).filter(r=>r.isDirectory()&&r.name!=="runs").map(r=>r.name)}catch{return[]}}function el(e){let r=Re.join(e,"workers");if(!Tr(r))return[];try{return rs(r,{withFileTypes:!0}).filter(t=>t.isDirectory()).map(t=>t.name)}catch{return[]}}function es(e,r,t){if(!Tr(e))return!1;try{let n=r-Zu(e).mtimeMs;return Number.isFinite(n)&&n>=0&&n<t}catch{return!1}}function rl(e,r=Date.now(),t=ze){if(!Tr(e))return!1;let n=Qo(e),o=_(n.workerJsonPath,void 0);if(o?.status==="running"&&J(o.pid))return!0;let s=Oe(n.heartbeatPath);if(s.lastHeartbeatAt){let i=r-Date.parse(s.lastHeartbeatAt);if(Number.isFinite(i)&&i>=0&&i<t)return!0}return!!(es(n.stdoutPath,r,t)||es(n.heartbeatPath,r,t))}function tl(e,r=Date.now(),t=ze){for(let n of el(e))if(rl(Re.join(e,"workers",n),r,t))return!0;return!1}function ns(e,r=Date.now()){let t=new Set,n=X(e);for(let o of Qu(n)){let s=Re.join(n,o);tl(s,r)&&t.add(`${e}\0${o}`)}return t}b();function nl(e,r=Date.now(),t=ze){let n=Oe(e.heartbeatPath);if(!n.lastHeartbeatAt)return!1;let o=r-Date.parse(n.lastHeartbeatAt);return Number.isFinite(o)&&o>=0&&o<t}function Te(e,r=Date.now(),t=ze){return J(e.pid)?!0:nl(e,r,t)}function ol(e,r){return r?r.runTerminalCache.derive(e.run):ye(e.run)}function ee(e,r=Date.now()){return Te(e.worker,r)}function Gt(e,r){return ke.has(e.run.status)?!1:ol(e,r)!==null}function os(e,r,t=Date.now()){if(ee(e,t))return!0;if(ke.has(e.run.status)||Gt(e,r))return!1;let n=Ve(e);return fe(n)?!1:!!ee(e,t)}xr();me();function ss(e,r){if(!(typeof e.worker.completionBlocker=="string"?e.worker.completionBlocker.trim():""))return!1;if(ee(e))return!0;let n=r??Ve(e);return!!(!fe(n)||Ye(n)||T(n.changedFiles).length>0||Ne({finalResult:n.finalResult,changedFiles:n.changedFiles,gitAncestry:n.gitAncestry,prUrl:he(n.finalResult)}).blocked)}H();b();import{existsSync as as,mkdirSync as sl,writeFileSync as is}from"node:fs";import Mr from"node:path";function us(e,r,t){return Mr.join(e,"salvage",x(r),x(t))}function ls(e){return as(Mr.join(us(e.harnessRoot,e.runId,e.workerName),"evidence.json"))}function cs(e){let r=us(e.harnessRoot,e.indexed.runId,e.indexed.workerName);sl(r,{recursive:!0});let t=Mr.join(r,"salvage.patch"),n=!1;if(as(e.indexed.worktreePath)){let s=P(e.indexed.worktreePath,["diff","HEAD"]),i=P(e.indexed.worktreePath,["diff","--cached"]),a=[s.stdout,i.stdout].filter(u=>u.trim()).join(`
|
|
74
|
+
`);a.trim()&&(is(t,a.endsWith(`
|
|
11
75
|
`)?a:`${a}
|
|
12
|
-
`),n=!0)}let o={capturedAt:new Date(e.now??Date.now()).toISOString(),skipReason:e.skipReason,runId:e.indexed.runId,workerName:e.indexed.workerName,worktreePath:e.indexed.worktreePath,taskId:e.indexed.worker.taskId,agentOsId:e.indexed.worker.agentOsId,branch:e.indexed.worker.branch,completionBlocker:e.indexed.worker.completionBlocker,finalResult:e.status.finalResult,changedFiles:e.status.changedFiles,gitAncestry:e.status.gitAncestry,prUrl:e.status.prUrl??null,...n?{patchPath:t}:{}};return
|
|
13
|
-
`),o}var Bu=new Set(["completion_blocked","dirty_worktree","pr_or_unmerged_commits","landing_blocked"]);function Fu(e){e.writeSalvageEvidence&&Bu.has(e.skipReason)&&(q(e.indexed,e.now)||Zo({harnessRoot:e.harnessRoot,runId:e.indexed.runId,workerName:e.indexed.workerName})||Qo({harnessRoot:e.harnessRoot,indexed:e.indexed,skipReason:e.skipReason,status:e.status,now:e.now}))}function Hu(e){let{indexed:r,worktreesAgeMs:t,terminalWorktreesAgeMs:n}=e;return r&&(he.has(r.run.status)||e.liveness&&Ut(r,e.liveness)||e.liveness&&de(Kt(r,e.liveness))&&!q(r))?n:t}function Lu(e){return!e.indexed||e.includeOrphans&&e.worktreesAgeMs<=0?0:Hu(e)}function $u(e,r){if(e.harnessRoot?.trim())return Tr.resolve(e.harnessRoot);let t=r.worker.workerDir;if(!t)return null;let n=`${Tr.sep}runs${Tr.sep}`,o=t.indexOf(n);return o<0?null:t.slice(0,o+n.length-1)}function es(e){let{indexed:r,includeOrphans:t,worktreesAgeMs:n,ageMs:o,orphanSafety:s,worktreeRemovalGuard:i}=e,a=e.now??Date.now();if(!r)return t?s??null:"orphan_without_flag";let u=Lu(e);if(n<=0&&!t&&u<=0)return"worktrees_disabled";if(u>0&&o<u)return"below_age_threshold";if(q(r,a))return"active_worker";let l=Kt(r,e.liveness),c=$u(e,r),d=m=>{if(c)try{Fu({indexed:r,harnessRoot:c,skipReason:m,status:l,now:a,writeSalvageEvidence:e.writeSalvageEvidence===!0})}catch{}return m};if(zo(r,l)){let m=d("completion_blocked");if(m)return m}if(Mt(r,e.liveness?.gitStatusCache)){let m=d("dirty_worktree");if(m)return m}let p=e.liveness?.gitRevCache?.countAheadOfMain(e.worktreePath);if(p!=null&&p>0){let m=d("pr_or_unmerged_commits");if(m)return m}if(Vo(r,e.liveness,a)||!de(l))return"run_still_active";if(je(l)){let m=d("pr_or_unmerged_commits");if(m)return m}if(N(l.changedFiles).length>0){let m=d("dirty_worktree");if(m)return m}if(Pe({finalResult:l.finalResult,changedFiles:l.changedFiles,gitAncestry:l.gitAncestry,prUrl:ge(l.finalResult)}).blocked){let m=d("landing_blocked");if(m)return m}if(i&&e.worktreePath){let m=i({worktreePath:e.worktreePath,indexed:!!r,runId:r?.runId,worker:r?.workerName});if(m)return m.detail?{reason:m.reason,detail:m.detail}:m.reason}return null}function Bt(e){let{indexed:r,nodeModulesAgeMs:t,ageMs:n,worktreePath:o,activeWorktreePaths:s,workerFilesystemLive:i,diskPressure:a}=e;return!a&&n<t?"below_age_threshold":i||s.has(Tr.resolve(o))||r&&q(r)?"active_worker":r&&Mt(r,e.gitStatusCache)?"dirty_worktree":null}function rs(e){return Bt(e)}var Ft=216e5,Mr=6048e5;var Ht=36e5,Kr=120;var ts=new Set(["active_worker","run_still_active","completion_blocked","landing_blocked"]);function ns(e,r){let t=[],n=new Set,o=(s,i,a)=>{let u=`${s}\0${i}`;n.has(u)||t.length>=24||(n.add(u),t.push({path:s,reason:i,...a?{detail:a}:{}}))};for(let s of r)ts.has(s.reason)&&o(s.path,s.reason,s.detail);for(let s of e)!s.skipped||!s.skipReason||ts.has(s.skipReason)&&o(s.path,s.skipReason);return t}import{existsSync as as,readdirSync as us,statSync as Yu}from"node:fs";import ls from"node:path";le();z();import os from"node:path";b();function Gu(e,r){return Ne(e,r)}function ss(e,r=Date.now()){let t=new Set,n=new Set;for(let o of e){for(let s of mr(o)){let i=!1;for(let a of Object.keys(s.workers||{})){let u=v(os.join(Ke(o,s.id),"workers",x(a),"worker.json"),void 0);if(!u?.worktreePath)continue;let l=os.resolve(u.worktreePath);Gu(u,r)&&(i=!0,t.add(l))}i&&n.add(`${o}\0${s.id}`)}for(let s of Yo(o))n.add(s)}return{activeWorktreePaths:t,liveRunKeys:n}}function is(e,r,t,n){return t?n.has(`${r}\0${t}`):!1}b();function Vu(e,r){try{let t=Yu(e).mtimeMs;return Math.max(0,r-t)}catch{return 0}}function zu(e,r){let t=ls.join(e,"runs",r,"run.json");return as(t)?v(t,null):null}function cs(e){try{return us(e).length===0}catch{return!1}}function ds(e){let{harnessRoot:r,runId:t,runPath:n,ageMs:o,runDirectoriesAgeMs:s,activeGuards:i}=e;if(is(n,r,t,i.liveRunKeys)||!cs(n))return"run_still_active";let a=zu(r,t);return a&&!he.has(a.status)&&!ke(a)?"run_still_active":s>0&&o<s?"below_age_threshold":null}function ps(e){if(!as(e.worktreesDir))return[];let r=[],t;try{t=us(e.worktreesDir,{withFileTypes:!0})}catch{return[]}for(let n of t){if(!n.isDirectory())continue;let o=n.name;if(e.runIdFilter&&o!==e.runIdFilter)continue;let s=ls.join(e.worktreesDir,o);cs(s)&&r.push({kind:"remove_run_directory",path:s,bytes:null,harnessRoot:e.harnessRoot,runId:o,ageMs:Vu(s,e.now)})}return r}U();import{existsSync as $t,rmSync as vs}from"node:fs";import{execFileSync as Ju}from"node:child_process";import{existsSync as ms,readdirSync as Xu,statSync as qu}from"node:fs";import Zu from"node:path";var Qu=2500;function el(e,r=Qu){if(!ms(e))return 0;try{let n=Ju("du",["-sb",e],{encoding:"utf8",timeout:r,stdio:["ignore","pipe","ignore"]}).trim().split(/\s+/)[0],o=Number(n);return Number.isFinite(o)&&o>=0?o:null}catch{return null}}function Z(e,r=5e4){if(!ms(e))return 0;let t=el(e);if(t!==null)return t;let n=0,o=0,s=[e];for(;s.length>0;){let i=s.pop(),a;try{a=Xu(i)}catch{continue}for(let u of a){if(o++>r)return null;let l=Zu.join(i,u),c;try{c=qu(l)}catch{continue}c.isDirectory()?s.push(l):n+=c.size}}return n}import{existsSync as ol,rmSync as sl}from"node:fs";z();import{lstatSync as rl,readdirSync as tl}from"node:fs";function fs(e){try{let r=rl(e),t=typeof process.getuid=="function"?process.getuid():null,n=typeof process.getgid=="function"?process.getgid():null,o=t!==null&&(r.uid!==t||n!==null&&r.gid!==n);return{uid:r.uid,gid:r.gid,foreign:o}}catch{return null}}function gs(e,r=32){let t=fs(e);if(!t)return!1;if(t.foreign)return!0;try{let n=tl(e),o=0;for(let s of n){if(o>=r)break;let i=`${e.replace(/\/$/,"")}/${s}`,a=fs(i);if(o+=1,a?.foreign)return!0}}catch{}return!1}import{spawnSync as nl}from"node:child_process";import ys from"node:path";import D from"node:path";function hs(e,r,t,n){let o=D.resolve(e),s=`${D.sep}${n}`,i=o.endsWith(s)?o:null;if(!i)return"path_outside_harness";let a=D.relative(t,i);if(a.startsWith("..")||D.isAbsolute(a))return"path_outside_harness";let u=a.split(D.sep);return u.length<3||u[u.length-1]!==n||!o.startsWith(D.resolve(r))?"path_outside_harness":null}function Ur(e,r,t){return hs(e,r,t,"node_modules")}function Br(e,r,t){return hs(e,r,t,".next")}function Fr(e,r,t){let n=D.resolve(e),o=D.relative(t,n);return o.startsWith("..")||D.isAbsolute(o)||o.split(D.sep).length<3||!n.startsWith(D.resolve(r))?"path_outside_harness":null}function ks(e,r,t){let n=D.resolve(e);return Ur(n,r,t)===null||Br(n,r,t)===null||Fr(n,r,t)===null}function bs(){let e=(process.env.KYNVER_CLEANUP_PRIVILEGED??"auto").trim().toLowerCase();return e==="0"||e==="false"||e==="off"||e==="no"?"off":e==="1"||e==="true"||e==="force"||e==="yes"?"force":"auto"}function Rs(e){let r=nl("sudo",["-n",...e],{encoding:"utf8",stdio:["ignore","pipe","pipe"]});return{ok:r.status===0,stderr:`${r.stderr??""}${r.stdout??""}`.trim()}}function Ss(e,r,t){if(!ks(e,r,t))return{ok:!1,error:"path is not an allowed harness generated cache"};let n=typeof process.getuid=="function"?process.getuid():null,o=typeof process.getgid=="function"?process.getgid():null;if(n===null||o===null)return{ok:!1,error:"privileged reclaim requires POSIX uid/gid"};let s=Rs(["chown","-R",`${n}:${o}`,ys.resolve(e)]);if(s.ok)return{ok:!0,method:"chown_then_rm"};let i=Rs(["rm","-rf",ys.resolve(e)]);return i.ok?{ok:!0,method:"sudo_rm"}:{ok:!1,error:s.stderr||i.stderr||"sudo -n failed (password required or not permitted)"}}var Lt="Root-owned harness caches require operator reclaim: configure passwordless sudo for chown/rm under ~/.kynver/harness/worktrees, or remove them as the harness owner with sudo available. More help: https://www.kynver.com/help.";function il(e){let r=e?.code;return r==="EACCES"||r==="EPERM"}function xs(e,r,t={}){if(!ol(e.path))return{executed:!1,skipped:!0,skipReason:"missing_worktree"};if(!r)return{executed:!1,skipped:!0,skipReason:"dry_run"};let n=e.harnessRoot,o=n?Oe(n):null,i=e.bytes??Z(e.path)??void 0,a=t.removePath??sl,u=t.hasForeignOwnedEntry??gs;try{return a(e.path,{recursive:!0,force:!0}),{executed:!0,skipped:!1,bytes:i}}catch(l){if(!il(l)||!n||!o)return{executed:!1,skipped:!0,skipReason:"remove_failed",error:l.message};let c=u(e.path),d=bs();if(!(d==="force"||d==="auto"&&c))return c?{executed:!1,skipped:!0,skipReason:"foreign_owner",error:`${l.message}; ${Lt}`}:{executed:!1,skipped:!0,skipReason:"remove_failed",error:l.message};let g=Ss(e.path,n,o);if(g.ok&&g.method==="sudo_rm")return{executed:!0,skipped:!1,bytes:i,privilegedReclaim:!0};if(g.ok)try{return a(e.path,{recursive:!0,force:!0}),{executed:!0,skipped:!1,bytes:i,privilegedReclaim:!0}}catch(m){return{executed:!1,skipped:!0,skipReason:"foreign_owner",error:`${m.message}; privileged chown succeeded but rm still failed`}}return{executed:!1,skipped:!0,skipReason:"foreign_owner",error:`${l.message}; privileged reclaim failed: ${g.error}; ${Lt}`}}}function jt(e){let r=e.harnessRoot;return!r||!Go(e.path,r)?null:{...e,executed:!1,skipped:!0,skipReason:"run_metadata_protected"}}function Gt(e,r){let t=jt(e);if(t)return t;let n=xs(e,r);return{...e,bytes:n.bytes??e.bytes,executed:n.executed,skipped:n.skipped,skipReason:n.skipReason,error:n.error}}function _s(e,r){return Gt(e,r)}function Cs(e,r){return Gt(e,r)}function Es(e,r){return Gt(e,r)}function ws(e,r){let t=jt(e);if(t)return t;if(!$t(e.path))return{...e,executed:!1,skipped:!0,skipReason:"missing_worktree"};if(!r)return{...e,executed:!1,skipped:!0,skipReason:"dry_run"};try{let n=e.bytes??Z(e.path);return vs(e.path,{recursive:!0,force:!0}),{...e,bytes:n,executed:!0,skipped:!1}}catch(n){return{...e,executed:!1,skipped:!0,skipReason:"remove_failed",error:n.message}}}function As(e,r){let t=jt(e);if(t)return t;if(!$t(e.path))return{...e,executed:!1,skipped:!0,skipReason:"missing_worktree"};if(!r)return{...e,executed:!1,skipped:!0,skipReason:"dry_run"};let n=e.repo;try{let o=e.bytes??Z(e.path);return n&&ve(n,["worktree","remove","--force",e.path],{allowFailure:!0}),$t(e.path)&&vs(e.path,{recursive:!0,force:!0}),{...e,bytes:o,executed:!0,skipped:!1}}catch(o){return{...e,executed:!1,skipped:!0,skipReason:"remove_failed",error:o.message}}}import{existsSync as Hr,readdirSync as Lr,statSync as al}from"node:fs";import F from"node:path";function Yt(e,r){try{let t=al(e).mtimeMs;return Math.max(0,r-t)}catch{return 0}}function Is(e,r){let t=F.relative(r,e);return t===""||!t.startsWith("..")&&!F.isAbsolute(t)}function Ps(e,r,t,n){let o=[];for(let s of Tt){if(s===".next")continue;let i=F.join(e,s);if(!Hr(i))continue;let a=F.resolve(i);t.has(a)||Is(a,r.harnessRoot)&&(t.add(a),o.push({kind:"remove_build_cache",path:a,bytes:null,runId:n.runId,worker:n.worker,repo:n.repo,ageMs:Yt(a,r.now)}))}return o}function Os(e){let r=[],t=new Set;for(let n of e.index.values())e.runIdFilter&&n.runId!==e.runIdFilter||r.push(...Ps(n.worktreePath,e,t,{runId:n.runId,worker:n.workerName,repo:n.run.repo}));if(!e.includeOrphans||!Hr(e.worktreesDir))return r;for(let n of Lr(e.worktreesDir,{withFileTypes:!0})){if(!n.isDirectory())continue;let o=F.join(e.worktreesDir,n.name);for(let s of Lr(o,{withFileTypes:!0})){if(!s.isDirectory())continue;let i=F.join(o,s.name);r.push(...Ps(i,e,t,{runId:n.name,worker:s.name}))}}return r}function Ns(e){let r=e.worktreesAgeMs>0||e.includeOrphans,t=e.includeOrphans;if(!r&&!t)return[];let n=[],o=new Set;if(r)for(let i of e.index.values()){if(e.runIdFilter&&i.runId!==e.runIdFilter)continue;let a=i.worktreePath;Hr(a)&&(o.has(a)||(o.add(a),n.push({kind:"remove_worktree",path:a,bytes:null,runId:i.runId,worker:i.workerName,repo:i.run.repo,ageMs:Yt(a,e.now)})))}if(!t||!Hr(e.worktreesDir))return n;let s=new Set;for(let i of e.index.values())s.add(F.resolve(i.worktreePath));for(let i of Lr(e.worktreesDir,{withFileTypes:!0})){if(!i.isDirectory()||e.runIdFilter&&i.name!==e.runIdFilter)continue;let a=F.join(e.worktreesDir,i.name),u;try{u=Lr(a,{withFileTypes:!0})}catch{continue}for(let l of u){if(!l.isDirectory())continue;let c=F.resolve(F.join(a,l.name));o.has(c)||s.has(c)||Is(c,e.harnessRoot)&&(o.add(c),n.push({kind:"remove_worktree",path:c,bytes:null,runId:i.name,worker:l.name,ageMs:Yt(c,e.now)}))}}return n}import{existsSync as Ts,readdirSync as Ds,statSync as ul}from"node:fs";import De from"node:path";var ll=[{dirName:"node_modules",kind:"remove_node_modules"},{dirName:".next",kind:"remove_next_cache"}];function cl(e,r){try{let t=ul(e).mtimeMs;return Math.max(0,r-t)}catch{return 0}}function dl(e,r){let t=De.relative(r,e);return t===""||!t.startsWith("..")&&!De.isAbsolute(t)}function pl(e,r,t,n,o,s){if(!Ts(n))return;let i=De.resolve(n);r.has(i)||dl(i,t.harnessRoot)&&(r.add(i),e.push({kind:o,path:i,bytes:null,harnessRoot:t.harnessRoot,runId:s.runId,worker:s.worker,repo:s.repo,ageMs:cl(i,t.now)}))}function Ws(e,r,t,n,o){for(let s of ll)pl(e,r,t,De.join(n,s.dirName),s.kind,o)}function Ms(e){let r=[],t=new Set;for(let n of e.index.values())e.runIdFilter&&n.runId!==e.runIdFilter||Ws(r,t,e,n.worktreePath,{runId:n.runId,worker:n.workerName,repo:n.run.repo});if(!e.includeOrphans||!Ts(e.worktreesDir))return r;for(let n of Ds(e.worktreesDir,{withFileTypes:!0})){if(!n.isDirectory()||e.runIdFilter&&n.name!==e.runIdFilter)continue;let o=De.join(e.worktreesDir,n.name),s;try{s=Ds(o,{withFileTypes:!0})}catch{continue}for(let i of s){if(!i.isDirectory())continue;let a=De.join(o,i.name);Ws(r,t,e,a,{runId:n.name,worker:i.name})}}return r}U();import{existsSync as Ks,statSync as ml}from"node:fs";import H from"node:path";function fl(e,r){try{let t=ml(e).mtimeMs;return Math.max(0,r-t)}catch{return 0}}function gl(e){let r=[],t=null;for(let n of e.split(`
|
|
14
|
-
`)){if(!n.trim())continue;let[o,...s]=n.split(" "),i=s.join(" ");if(o==="worktree"){t&&r.push(t),t={path:i};continue}t&&(o==="branch"&&(t.branch=i),o==="HEAD"&&(t.head=i),o==="bare"&&(t.bare=!0))}return t&&r.push(t),r}function
|
|
15
|
-
`).map(l=>l.trim()).filter(l=>l.length>0);if(
|
|
16
|
-
`).map(t=>t.trim()).filter(Boolean)}var
|
|
76
|
+
`),n=!0)}let o={capturedAt:new Date(e.now??Date.now()).toISOString(),skipReason:e.skipReason,runId:e.indexed.runId,workerName:e.indexed.workerName,worktreePath:e.indexed.worktreePath,taskId:e.indexed.worker.taskId,agentOsId:e.indexed.worker.agentOsId,branch:e.indexed.worker.branch,completionBlocker:e.indexed.worker.completionBlocker,finalResult:e.status.finalResult,changedFiles:e.status.changedFiles,gitAncestry:e.status.gitAncestry,prUrl:e.status.prUrl??null,...n?{patchPath:t}:{}};return is(Mr.join(r,"evidence.json"),`${JSON.stringify(o,null,2)}
|
|
77
|
+
`),o}var il=new Set(["completion_blocked","dirty_worktree","pr_or_unmerged_commits","landing_blocked"]);function al(e){e.writeSalvageEvidence&&il.has(e.skipReason)&&(ee(e.indexed,e.now)||ls({harnessRoot:e.harnessRoot,runId:e.indexed.runId,workerName:e.indexed.workerName})||cs({harnessRoot:e.harnessRoot,indexed:e.indexed,skipReason:e.skipReason,status:e.status,now:e.now}))}function ul(e){let{indexed:r,worktreesAgeMs:t,terminalWorktreesAgeMs:n}=e;return r&&(ke.has(r.run.status)||e.liveness&&Gt(r,e.liveness)||e.liveness&&fe($t(r,e.liveness))&&!ee(r))?n:t}function ll(e){return!e.indexed||e.includeOrphans&&e.worktreesAgeMs<=0?0:ul(e)}function cl(e,r){if(e.harnessRoot?.trim())return Kr.resolve(e.harnessRoot);let t=r.worker.workerDir;if(!t)return null;let n=`${Kr.sep}runs${Kr.sep}`,o=t.indexOf(n);return o<0?null:t.slice(0,o+n.length-1)}function ds(e){let{indexed:r,includeOrphans:t,worktreesAgeMs:n,ageMs:o,orphanSafety:s,worktreeRemovalGuard:i}=e,a=e.now??Date.now();if(!r)return t?s??null:"orphan_without_flag";let u=ll(e);if(n<=0&&!t&&u<=0)return"worktrees_disabled";if(u>0&&o<u)return"below_age_threshold";if(ee(r,a))return"active_worker";let l=$t(r,e.liveness),c=cl(e,r),d=f=>{if(c)try{al({indexed:r,harnessRoot:c,skipReason:f,status:l,now:a,writeSalvageEvidence:e.writeSalvageEvidence===!0})}catch{}return f};if(ss(r,l)){let f=d("completion_blocked");if(f)return f}if(Ht(r,e.liveness?.gitStatusCache)){let f=d("dirty_worktree");if(f)return f}let p=e.liveness?.gitRevCache?.countAheadOfMain(e.worktreePath);if(p!=null&&p>0){let f=d("pr_or_unmerged_commits");if(f)return f}if(os(r,e.liveness,a)||!fe(l))return"run_still_active";if(Ye(l)){let f=d("pr_or_unmerged_commits");if(f)return f}if(T(l.changedFiles).length>0){let f=d("dirty_worktree");if(f)return f}if(Ne({finalResult:l.finalResult,changedFiles:l.changedFiles,gitAncestry:l.gitAncestry,prUrl:he(l.finalResult)}).blocked){let f=d("landing_blocked");if(f)return f}if(i&&e.worktreePath){let f=i({worktreePath:e.worktreePath,indexed:!!r,runId:r?.runId,worker:r?.workerName});if(f)return f.detail?{reason:f.reason,detail:f.detail}:f.reason}return null}function Yt(e){let{indexed:r,nodeModulesAgeMs:t,ageMs:n,worktreePath:o,activeWorktreePaths:s,workerFilesystemLive:i,diskPressure:a}=e;return!a&&n<t?"below_age_threshold":i||s.has(Kr.resolve(o))||r&&ee(r)?"active_worker":r&&Ht(r,e.gitStatusCache)?"dirty_worktree":null}function ps(e){return Yt(e)}var Vt=216e5,Ur=6048e5;var zt=36e5,Br=120;var fs=new Set(["active_worker","run_still_active","completion_blocked","landing_blocked"]);function ms(e,r){let t=[],n=new Set,o=(s,i,a)=>{let u=`${s}\0${i}`;n.has(u)||t.length>=24||(n.add(u),t.push({path:s,reason:i,...a?{detail:a}:{}}))};for(let s of r)fs.has(s.reason)&&o(s.path,s.reason,s.detail);for(let s of e)!s.skipped||!s.skipReason||fs.has(s.skipReason)&&o(s.path,s.skipReason);return t}import{existsSync as ys,readdirSync as Rs,statSync as fl}from"node:fs";import bs from"node:path";se();q();import gs from"node:path";b();function pl(e,r){return Te(e,r)}function hs(e,r=Date.now()){let t=new Set,n=new Set;for(let o of e){for(let s of gr(o)){let i=!1;for(let a of Object.keys(s.workers||{})){let u=_(gs.join(Be(o,s.id),"workers",x(a),"worker.json"),void 0);if(!u?.worktreePath)continue;let l=gs.resolve(u.worktreePath);pl(u,r)&&(i=!0,t.add(l))}i&&n.add(`${o}\0${s.id}`)}for(let s of ns(o))n.add(s)}return{activeWorktreePaths:t,liveRunKeys:n}}function ks(e,r,t,n){return t?n.has(`${r}\0${t}`):!1}b();function ml(e,r){try{let t=fl(e).mtimeMs;return Math.max(0,r-t)}catch{return 0}}function gl(e,r){let t=bs.join(e,"runs",r,"run.json");return ys(t)?_(t,null):null}function Ss(e){try{return Rs(e).length===0}catch{return!1}}function xs(e){let{harnessRoot:r,runId:t,runPath:n,ageMs:o,runDirectoriesAgeMs:s,activeGuards:i}=e;if(ks(n,r,t,i.liveRunKeys)||!Ss(n))return"run_still_active";let a=gl(r,t);return a&&!ke.has(a.status)&&!ye(a)?"run_still_active":s>0&&o<s?"below_age_threshold":null}function _s(e){if(!ys(e.worktreesDir))return[];let r=[],t;try{t=Rs(e.worktreesDir,{withFileTypes:!0})}catch{return[]}for(let n of t){if(!n.isDirectory())continue;let o=n.name;if(e.runIdFilter&&o!==e.runIdFilter)continue;let s=bs.join(e.worktreesDir,o);Ss(s)&&r.push({kind:"remove_run_directory",path:s,bytes:null,harnessRoot:e.harnessRoot,runId:o,ageMs:ml(s,e.now)})}return r}H();import{existsSync as Xt,rmSync as Ds}from"node:fs";import{execFileSync as hl}from"node:child_process";import{existsSync as vs,readdirSync as kl,statSync as yl}from"node:fs";import Rl from"node:path";var bl=2500;function Sl(e,r=bl){if(!vs(e))return 0;try{let n=hl("du",["-sb",e],{encoding:"utf8",timeout:r,stdio:["ignore","pipe","ignore"]}).trim().split(/\s+/)[0],o=Number(n);return Number.isFinite(o)&&o>=0?o:null}catch{return null}}function re(e,r=5e4){if(!vs(e))return 0;let t=Sl(e);if(t!==null)return t;let n=0,o=0,s=[e];for(;s.length>0;){let i=s.pop(),a;try{a=kl(i)}catch{continue}for(let u of a){if(o++>r)return null;let l=Rl.join(i,u),c;try{c=yl(l)}catch{continue}c.isDirectory()?s.push(l):n+=c.size}}return n}import{existsSync as El,rmSync as Cl}from"node:fs";q();import{lstatSync as xl,readdirSync as _l}from"node:fs";function Es(e){try{let r=xl(e),t=typeof process.getuid=="function"?process.getuid():null,n=typeof process.getgid=="function"?process.getgid():null,o=t!==null&&(r.uid!==t||n!==null&&r.gid!==n);return{uid:r.uid,gid:r.gid,foreign:o}}catch{return null}}function Cs(e,r=32){let t=Es(e);if(!t)return!1;if(t.foreign)return!0;try{let n=_l(e),o=0;for(let s of n){if(o>=r)break;let i=`${e.replace(/\/$/,"")}/${s}`,a=Es(i);if(o+=1,a?.foreign)return!0}}catch{}return!1}import{spawnSync as vl}from"node:child_process";import Ps from"node:path";import M from"node:path";function ws(e,r,t,n){let o=M.resolve(e),s=`${M.sep}${n}`,i=o.endsWith(s)?o:null;if(!i)return"path_outside_harness";let a=M.relative(t,i);if(a.startsWith("..")||M.isAbsolute(a))return"path_outside_harness";let u=a.split(M.sep);return u.length<3||u[u.length-1]!==n||!o.startsWith(M.resolve(r))?"path_outside_harness":null}function Fr(e,r,t){return ws(e,r,t,"node_modules")}function Lr(e,r,t){return ws(e,r,t,".next")}function Hr(e,r,t){let n=M.resolve(e),o=M.relative(t,n);return o.startsWith("..")||M.isAbsolute(o)||o.split(M.sep).length<3||!n.startsWith(M.resolve(r))?"path_outside_harness":null}function As(e,r,t){let n=M.resolve(e);return Fr(n,r,t)===null||Lr(n,r,t)===null||Hr(n,r,t)===null}function Is(){let e=(process.env.KYNVER_CLEANUP_PRIVILEGED??"auto").trim().toLowerCase();return e==="0"||e==="false"||e==="off"||e==="no"?"off":e==="1"||e==="true"||e==="force"||e==="yes"?"force":"auto"}function Os(e){let r=vl("sudo",["-n",...e],{encoding:"utf8",stdio:["ignore","pipe","pipe"]});return{ok:r.status===0,stderr:`${r.stderr??""}${r.stdout??""}`.trim()}}function Ns(e,r,t){if(!As(e,r,t))return{ok:!1,error:"path is not an allowed harness generated cache"};let n=typeof process.getuid=="function"?process.getuid():null,o=typeof process.getgid=="function"?process.getgid():null;if(n===null||o===null)return{ok:!1,error:"privileged reclaim requires POSIX uid/gid"};let s=Os(["chown","-R",`${n}:${o}`,Ps.resolve(e)]);if(s.ok)return{ok:!0,method:"chown_then_rm"};let i=Os(["rm","-rf",Ps.resolve(e)]);return i.ok?{ok:!0,method:"sudo_rm"}:{ok:!1,error:s.stderr||i.stderr||"sudo -n failed (password required or not permitted)"}}var Jt="Root-owned harness caches require operator reclaim: configure passwordless sudo for chown/rm under ~/.kynver/harness/worktrees, or remove them as the harness owner with sudo available. More help: https://www.kynver.com/help.";function wl(e){let r=e?.code;return r==="EACCES"||r==="EPERM"}function Ws(e,r,t={}){if(!El(e.path))return{executed:!1,skipped:!0,skipReason:"missing_worktree"};if(!r)return{executed:!1,skipped:!0,skipReason:"dry_run"};let n=e.harnessRoot,o=n?De(n):null,i=e.bytes??re(e.path)??void 0,a=t.removePath??Cl,u=t.hasForeignOwnedEntry??Cs;try{return a(e.path,{recursive:!0,force:!0}),{executed:!0,skipped:!1,bytes:i}}catch(l){if(!wl(l)||!n||!o)return{executed:!1,skipped:!0,skipReason:"remove_failed",error:l.message};let c=u(e.path),d=Is();if(!(d==="force"||d==="auto"&&c))return c?{executed:!1,skipped:!0,skipReason:"foreign_owner",error:`${l.message}; ${Jt}`}:{executed:!1,skipped:!0,skipReason:"remove_failed",error:l.message};let g=Ns(e.path,n,o);if(g.ok&&g.method==="sudo_rm")return{executed:!0,skipped:!1,bytes:i,privilegedReclaim:!0};if(g.ok)try{return a(e.path,{recursive:!0,force:!0}),{executed:!0,skipped:!1,bytes:i,privilegedReclaim:!0}}catch(f){return{executed:!1,skipped:!0,skipReason:"foreign_owner",error:`${f.message}; privileged chown succeeded but rm still failed`}}return{executed:!1,skipped:!0,skipReason:"foreign_owner",error:`${l.message}; privileged reclaim failed: ${g.error}; ${Jt}`}}}function qt(e){let r=e.harnessRoot;return!r||!ts(e.path,r)?null:{...e,executed:!1,skipped:!0,skipReason:"run_metadata_protected"}}function Zt(e,r){let t=qt(e);if(t)return t;let n=Ws(e,r);return{...e,bytes:n.bytes??e.bytes,executed:n.executed,skipped:n.skipped,skipReason:n.skipReason,error:n.error}}function Ts(e,r){return Zt(e,r)}function Ms(e,r){return Zt(e,r)}function Ks(e,r){return Zt(e,r)}function Us(e,r){let t=qt(e);if(t)return t;if(!Xt(e.path))return{...e,executed:!1,skipped:!0,skipReason:"missing_worktree"};if(!r)return{...e,executed:!1,skipped:!0,skipReason:"dry_run"};try{let n=e.bytes??re(e.path);return Ds(e.path,{recursive:!0,force:!0}),{...e,bytes:n,executed:!0,skipped:!1}}catch(n){return{...e,executed:!1,skipped:!0,skipReason:"remove_failed",error:n.message}}}function Bs(e,r){let t=qt(e);if(t)return t;if(!Xt(e.path))return{...e,executed:!1,skipped:!0,skipReason:"missing_worktree"};if(!r)return{...e,executed:!1,skipped:!0,skipReason:"dry_run"};let n=e.repo;try{let o=e.bytes??re(e.path);return n&&Ee(n,["worktree","remove","--force",e.path],{allowFailure:!0}),Xt(e.path)&&Ds(e.path,{recursive:!0,force:!0}),{...e,bytes:o,executed:!0,skipped:!1}}catch(o){return{...e,executed:!1,skipped:!0,skipReason:"remove_failed",error:o.message}}}import{existsSync as $r,readdirSync as jr,statSync as Al}from"node:fs";import j from"node:path";function Qt(e,r){try{let t=Al(e).mtimeMs;return Math.max(0,r-t)}catch{return 0}}function Ls(e,r){let t=j.relative(r,e);return t===""||!t.startsWith("..")&&!j.isAbsolute(t)}function Fs(e,r,t,n){let o=[];for(let s of Lt){if(s===".next")continue;let i=j.join(e,s);if(!$r(i))continue;let a=j.resolve(i);t.has(a)||Ls(a,r.harnessRoot)&&(t.add(a),o.push({kind:"remove_build_cache",path:a,bytes:null,runId:n.runId,worker:n.worker,repo:n.repo,ageMs:Qt(a,r.now)}))}return o}function Hs(e){let r=[],t=new Set;for(let n of e.index.values())e.runIdFilter&&n.runId!==e.runIdFilter||r.push(...Fs(n.worktreePath,e,t,{runId:n.runId,worker:n.workerName,repo:n.run.repo}));if(!e.includeOrphans||!$r(e.worktreesDir))return r;for(let n of jr(e.worktreesDir,{withFileTypes:!0})){if(!n.isDirectory())continue;let o=j.join(e.worktreesDir,n.name);for(let s of jr(o,{withFileTypes:!0})){if(!s.isDirectory())continue;let i=j.join(o,s.name);r.push(...Fs(i,e,t,{runId:n.name,worker:s.name}))}}return r}function $s(e){let r=e.worktreesAgeMs>0||e.includeOrphans,t=e.includeOrphans;if(!r&&!t)return[];let n=[],o=new Set;if(r)for(let i of e.index.values()){if(e.runIdFilter&&i.runId!==e.runIdFilter)continue;let a=i.worktreePath;$r(a)&&(o.has(a)||(o.add(a),n.push({kind:"remove_worktree",path:a,bytes:null,runId:i.runId,worker:i.workerName,repo:i.run.repo,ageMs:Qt(a,e.now)})))}if(!t||!$r(e.worktreesDir))return n;let s=new Set;for(let i of e.index.values())s.add(j.resolve(i.worktreePath));for(let i of jr(e.worktreesDir,{withFileTypes:!0})){if(!i.isDirectory()||e.runIdFilter&&i.name!==e.runIdFilter)continue;let a=j.join(e.worktreesDir,i.name),u;try{u=jr(a,{withFileTypes:!0})}catch{continue}for(let l of u){if(!l.isDirectory())continue;let c=j.resolve(j.join(a,l.name));o.has(c)||s.has(c)||Ls(c,e.harnessRoot)&&(o.add(c),n.push({kind:"remove_worktree",path:c,bytes:null,runId:i.name,worker:l.name,ageMs:Qt(c,e.now)}))}}return n}import{existsSync as Ys,readdirSync as js,statSync as Pl}from"node:fs";import Me from"node:path";var Ol=[{dirName:"node_modules",kind:"remove_node_modules"},{dirName:".next",kind:"remove_next_cache"}];function Il(e,r){try{let t=Pl(e).mtimeMs;return Math.max(0,r-t)}catch{return 0}}function Nl(e,r){let t=Me.relative(r,e);return t===""||!t.startsWith("..")&&!Me.isAbsolute(t)}function Wl(e,r,t,n,o,s){if(!Ys(n))return;let i=Me.resolve(n);r.has(i)||Nl(i,t.harnessRoot)&&(r.add(i),e.push({kind:o,path:i,bytes:null,harnessRoot:t.harnessRoot,runId:s.runId,worker:s.worker,repo:s.repo,ageMs:Il(i,t.now)}))}function Gs(e,r,t,n,o){for(let s of Ol)Wl(e,r,t,Me.join(n,s.dirName),s.kind,o)}function Vs(e){let r=[],t=new Set;for(let n of e.index.values())e.runIdFilter&&n.runId!==e.runIdFilter||Gs(r,t,e,n.worktreePath,{runId:n.runId,worker:n.workerName,repo:n.run.repo});if(!e.includeOrphans||!Ys(e.worktreesDir))return r;for(let n of js(e.worktreesDir,{withFileTypes:!0})){if(!n.isDirectory()||e.runIdFilter&&n.name!==e.runIdFilter)continue;let o=Me.join(e.worktreesDir,n.name),s;try{s=js(o,{withFileTypes:!0})}catch{continue}for(let i of s){if(!i.isDirectory())continue;let a=Me.join(o,i.name);Gs(r,t,e,a,{runId:n.name,worker:i.name})}}return r}H();import{existsSync as zs,statSync as Dl}from"node:fs";import G from"node:path";function Tl(e,r){try{let t=Dl(e).mtimeMs;return Math.max(0,r-t)}catch{return 0}}function Ml(e){let r=[],t=null;for(let n of e.split(`
|
|
78
|
+
`)){if(!n.trim())continue;let[o,...s]=n.split(" "),i=s.join(" ");if(o==="worktree"){t&&r.push(t),t={path:i};continue}t&&(o==="branch"&&(t.branch=i),o==="HEAD"&&(t.head=i),o==="bare"&&(t.bare=!0))}return t&&r.push(t),r}function Kl(e,r){let t=G.relative(G.resolve(r),G.resolve(e));return t!==""&&!t.startsWith("..")&&!G.isAbsolute(t)}var Ul=200;function Js(e){if(!e.includeOrphans||!zs(e.worktreesDir))return[];let r=new Set;for(let s of e.index.values())s.run.repo&&r.add(G.resolve(s.run.repo));let t=new Set;for(let s of e.index.values())t.add(G.resolve(s.worktreePath));let n=[],o=new Set;for(let s of r){let i=0,a;try{a=Ee(s,["worktree","list","--porcelain"],{allowFailure:!0})}catch{continue}let u=Ml(a);for(let l of u){if(i>=Ul)break;let c=G.resolve(l.path);if(c===G.resolve(s)||!Kl(c,e.worktreesDir)||t.has(c)||o.has(c)||!zs(c))continue;let p=G.relative(e.worktreesDir,c).split(G.sep),g=p[0],f=p[1]??"unknown";o.add(c),i+=1,n.push({kind:"remove_worktree",path:c,bytes:null,runId:g,worker:f,repo:s,ageMs:Tl(c,e.now)})}}return n}se();b();import Je from"node:path";function Xs(e,r){let t=Je.resolve(r),n=new Map;for(let[o,s]of e){let i=s.harnessRoot?Je.resolve(s.harnessRoot):null;i&&i!==t||n.set(o,s)}return n}function qs(e){let r=new Map;for(let t of gr(e))for(let n of Object.keys(t.workers||{})){let o=Je.join(Be(e,t.id),"workers",x(n),"worker.json"),s=_(o,void 0);s?.worktreePath&&r.set(Je.resolve(s.worktreePath),{harnessRoot:e,worktreePath:Je.resolve(s.worktreePath),runId:t.id,workerName:n,run:t,worker:s})}return r}function Xe(e){let r=process.env[e];return r==="1"||r==="true"||r==="yes"}function be(e,r){let t=process.env[e];if(!t)return r;let n=Number(t);return Number.isFinite(n)&&n>=0?n:r}function Zs(e={}){let r=e.execute===!0||e.execute!==!1&&Xe("KYNVER_CLEANUP_EXECUTE"),t=e.finalizeStaleRuns!==!1&&!Xe("KYNVER_CLEANUP_SKIP_FINALIZE"),n=e.nodeModulesAgeMs??be("KYNVER_CLEANUP_NODE_MODULES_AGE_MS",216e5),o=e.scanDependencyCaches??(e.nodeModulesAgeMs!==void 0||process.env.KYNVER_CLEANUP_NODE_MODULES_AGE_MS!=null),s=e.worktreesAgeMs??be("KYNVER_CLEANUP_WORKTREES_AGE_MS",0),i=e.terminalWorktreesAgeMs??be("KYNVER_CLEANUP_TERMINAL_WORKTREES_AGE_MS",216e5),a=e.runDirectoriesAgeMs??be("KYNVER_CLEANUP_RUN_DIRECTORIES_AGE_MS",36e5),u=e.maxActionsPerSweep??be("KYNVER_CLEANUP_MAX_ACTIONS_PER_SWEEP",120),l=e.includeOrphans===!0||Xe("KYNVER_CLEANUP_INCLUDE_ORPHANS"),d=Xe("KYNVER_CLEANUP_SCOPE_ALL")||process.env.KYNVER_CLEANUP_SCOPE==="all"?e.runIdFilter:e.runIdFilter??(process.env.KYNVER_CLEANUP_RUN_ID||void 0),p=e.accountBytes!==!1&&!Xe("KYNVER_CLEANUP_SKIP_BYTE_ACCOUNTING"),g=be("KYNVER_CLEANUP_STORAGE_ENTRY_CAP",2e3),f=e.storagePerRunEntryCap!==void 0?e.storagePerRunEntryCap:p&&g>0?g:null,y=be("KYNVER_CLEANUP_BYTE_ENTRY_CAP",2e3),S=e.byteAccountingEntryCap??(Number.isFinite(y)&&y>0?Math.floor(y):2e3);return{execute:r,finalizeStaleRuns:t,scanDependencyCaches:o,nodeModulesAgeMs:n,worktreesAgeMs:s>0?s:0,terminalWorktreesAgeMs:i>=0?i:0,runDirectoriesAgeMs:a>=0?a:0,maxActionsPerSweep:Number.isFinite(u)&&u>0?Math.floor(u):120,includeOrphans:l,runIdFilter:d?String(d):void 0,accountBytes:p,storagePerRunEntryCap:f,byteAccountingEntryCap:S}}H();import{existsSync as en,statSync as Fl}from"node:fs";import Se from"node:path";b();var Qs=1800*1e3;function Ll(e,r){let t=Se.relative(r,e);return t===""||!t.startsWith("..")&&!Se.isAbsolute(t)}function Hl(e,r,t){if(!en(e))return!1;try{let n=r-Fl(e).mtimeMs;return Number.isFinite(n)&&n>=0&&n<t}catch{return!1}}function rn(e){if(!e.runId||!e.workerName)return!1;let r=e.now??Date.now(),t=e.heartbeatFreshMs??Qs,n=Se.resolve(e.harnessRoot,"runs"),o=Se.resolve(n,e.runId,"workers",e.workerName);if(!Ll(o,n))return!1;let s=_(Se.join(o,"worker.json"),void 0);return s&&Te(s,r,t)?!0:s?!1:Hl(Se.join(o,"heartbeat.jsonl"),r,t)}function ei(e){let r=e.now??Date.now(),t=e.heartbeatFreshMs??Qs;if(!en(e.worktreePath))return null;if(e.runId&&e.workerName&&rn(e))return"active_worker";let n=Se.join(e.worktreePath,".git");if(!en(n))return null;let o=P(e.worktreePath,["status","--porcelain"]);if(o.status!==0)return"pr_or_unmerged_commits";let s=o.stdout.split(`
|
|
79
|
+
`).map(l=>l.trim()).filter(l=>l.length>0);if(T(s).length>0)return"dirty_worktree";let i=P(e.worktreePath,["rev-list","--count","@{u}..HEAD"]);if(i.status===0){let l=Number(i.stdout.trim());if(Number.isFinite(l)&&l>0)return"pr_or_unmerged_commits"}let a=P(e.worktreePath,["rev-list","--count","origin/main..HEAD"]);if(a.status!==0)return i.status!==0?"pr_or_unmerged_commits":null;let u=Number(a.stdout.trim());return Number.isFinite(u)&&u>0?"pr_or_unmerged_commits":null}q();import{existsSync as $l,readdirSync as ri,statSync as jl}from"node:fs";import Gl from"node:path";function ti(e={}){let r=D(e.harnessRoot??ue()),t=De(r),n=e.now??Date.now(),o=new Date(n).toISOString();if(!$l(t))return{harnessRoot:r,worktreesDir:t,worktreesBytes:0,runCount:0,workerCount:0,oldestRunAt:null,scannedAt:o};let s=0,i=0,a=0,u=null,l;try{l=ri(t,{withFileTypes:!0})}catch{return{harnessRoot:r,worktreesDir:t,worktreesBytes:null,runCount:0,workerCount:0,oldestRunAt:null,scannedAt:o}}for(let c of l){if(!c.isDirectory())continue;i+=1;let d=Gl.join(t,c.name);try{let p=jl(d);u=u===null?p.mtimeMs:Math.min(u,p.mtimeMs)}catch{}try{for(let p of ri(d,{withFileTypes:!0}))p.isDirectory()&&(a+=1)}catch{}if(s!==null&&e.perRunEntryCap!==null){let p=e.perRunEntryCap??5e4;if(p<=0)s=null;else{let g=re(d,p);g===null?s=null:s+=g}}}return{harnessRoot:r,worktreesDir:t,worktreesBytes:s,runCount:i,workerCount:a,oldestRunAt:u===null?null:new Date(u).toISOString(),scannedAt:o}}q();import{existsSync as Yl}from"node:fs";import{homedir as Vl}from"node:os";import ni from"node:path";var zl=["/var/tmp/kynver-harness",ni.join(Vl(),".openclaw","harness")];function tn(e,r,t){if(!t?.trim())return;let n=D(t.trim());e.has(n)||(e.add(n),r.push(n))}function Jl(e){return e.scanWellKnown!=null?e.scanWellKnown:process.env.VITEST==="true"?!1:process.env.KYNVER_CLEANUP_SCAN_WELL_KNOWN!=="0"&&!["0","false","no"].includes((process.env.KYNVER_CLEANUP_SCAN_WELL_KNOWN??"").toLowerCase())}function oi(e={}){let r=new Set,t=[];tn(r,t,e.harnessRoot??ue());let n=process.env.KYNVER_CLEANUP_EXTRA_ROOTS?.split(",").map(o=>o.trim()).filter(Boolean);for(let o of n??[])tn(r,t,o);if(Jl(e))for(let o of zl){let s=ni.resolve(o);!r.has(s)&&Yl(s)&&tn(r,t,s)}return t}fr();function Xl(e){let r=process.env[e];return r==="1"||r==="true"||r==="yes"}function ql(e,r){let t=process.env[e];if(!t)return r;let n=Number(t);return Number.isFinite(n)?n:r}function si(e={}){let r=e.diskPath?.trim()||process.env.KYNVER_DISK_GUARD_PATH?.trim()||"/",t=ql("KYNVER_DISK_GUARD_MAX_USED_PERCENT",75),n=pr({...e,diskPath:r,diskMaxUsedPercent:e.diskMaxUsedPercent??t}),o=!n.ok||n.usedPercent>=t,s=process.env.KYNVER_CLEANUP_DISK_PRESSURE_FORCE?.trim().toLowerCase();return s==="none"||s==="off"||s==="0"?o=!1:(s==="pressured"||s==="on"||s==="1")&&(o=!0),{diskGate:n,pressured:o,maxUsedPercent:t}}function ii(e,r){if(!r.pressured)return e;let t=e.execute||!Xl("KYNVER_CLEANUP_DRY_RUN_ON_PRESSURE");return{...e,execute:t,nodeModulesAgeMs:0,runIdFilter:void 0,includeOrphans:!0,terminalWorktreesAgeMs:0,runDirectoriesAgeMs:0,worktreesAgeMs:e.worktreesAgeMs>0?e.worktreesAgeMs:6048e5,diskPressure:!0,diskGate:r.diskGate}}dr();import{unlinkSync as Zl}from"node:fs";function Gr(e){let r=process.env[e];return r==="1"||r==="true"||r==="yes"}function ai(e,r){let t=process.env[e];if(!t)return r;let n=Number(t);return Number.isFinite(n)?n:r}function Ql(e,r,t){return e.length===0?[]:t?[...e]:e.length<=r?[]:e.slice(r)}function ui(e={}){let r=e.execute===!0||Gr("KYNVER_WSL_CRASH_DUMP_EXECUTE")||Gr("KYNVER_CLEANUP_EXECUTE"),t=e.purgeAll===!0||Gr("KYNVER_WSL_CRASH_DUMP_PURGE_ALL"),n=Math.max(0,e.keepNewest??ai("KYNVER_WSL_CRASH_DUMP_KEEP_NEWEST",t?0:1)),o=Ae({forceWsl:e.forceWsl});if(!o?.path)return{observation:o,execute:r,keepNewest:n,removed:[],removedBytes:0,skipped:o?.probeError?[{path:o.path??"(unresolved)",reason:o.probeError}]:[]};let s=Ql(o.dumps,n,t),i=[],a=[],u=0;for(let l of s){if(!r){a.push({path:l.path,reason:"dry_run"});continue}try{Zl(l.path),i.push({path:l.path,bytes:l.bytes,name:l.name}),u+=l.bytes}catch(c){a.push({path:l.path,reason:c.message})}}return{observation:o,execute:r,keepNewest:n,removed:i,removedBytes:u,skipped:a}}function li(e){return e?Gr("KYNVER_WSL_CRASH_DUMP_CLEANUP")||!e.ok?!0:e.dumpCount>ai("KYNVER_WSL_CRASH_DUMP_KEEP_NEWEST",1):!1}dr();function K(e,r){if(process.env.KYNVER_CLEANUP_QUIET==="1")return;let t=r?`: ${r}`:"";console.error(`[kynver cleanup] ${e}${t}`)}H();var Yr=class{aheadOfMain=new Map;countAheadOfMain(r,t="origin/main"){let n=`${r}\0${t}`;if(this.aheadOfMain.has(n))return this.aheadOfMain.get(n)??null;let o=P(r,["rev-list","--count",`${t}..HEAD`]);if(o.status!==0)return this.aheadOfMain.set(n,null),null;let s=Number(o.stdout.trim()),i=Number.isFinite(s)?s:null;return this.aheadOfMain.set(n,i),i}};import{spawnSync as ec}from"node:child_process";import{existsSync as rc}from"node:fs";import tc from"node:path";var nc=5e3;function oc(e,r){if(!rc(tc.join(e,".git")))return{status:null,stdout:"",stderr:"",error:"not_a_git_repo"};try{let t=ec("git",r,{windowsHide:!0,cwd:e,encoding:"utf8",timeout:nc}),n=t.error?.message?.includes("ETIMEDOUT")===!0;return{status:n?null:t.status,stdout:t.stdout||"",stderr:t.stderr||"",error:n?"git_timeout":t.error?t.error.message:null}}catch(t){return{status:null,stdout:"",stderr:"",error:t.message}}}function ci(e){let r=oc(e,["status","--short"]);return r.error==="not_a_git_repo"?[]:r.error==="git_timeout"||r.status!==0?null:r.stdout.split(`
|
|
80
|
+
`).map(t=>t.trim()).filter(Boolean)}var Vr=class{cache=new Map;porcelain(r){let t=r,n=this.cache.get(t);if(n!==void 0)return n;let o=ci(t)??[];return this.cache.set(t,o),o}};var zr=class{cache=new Map;derive(r){let t=this.cache.get(r.id);if(t!==void 0)return t;let n=ye(r);return this.cache.set(r.id,n),n}};function sc(e){let r={};for(let t of e)r[t.kind]=(r[t.kind]??0)+1;return r}function di(e,r={}){let t=r.maxSampleActions??12,n=r.maxSampleSkips??8;return{harnessRoot:e.harnessRoot,scanRoots:e.scanRoots,dryRun:e.dryRun,execute:e.execute,scannedAt:e.scannedAt,finalizedRuns:e.finalizedRuns.length,actionCount:e.actions.length,actionKinds:sc(e.actions),totals:e.totals,...e.storage?{storage:e.storage}:{},...e.preservedLivePaths?.length?{preservedLivePaths:e.preservedLivePaths}:{},...e.removedRunDirectories!=null?{removedRunDirectories:e.removedRunDirectories}:{},sampleActions:e.actions.slice(0,t).map(o=>({kind:o.kind,path:o.path,...o.skipReason?{skipReason:o.skipReason}:{},...o.bytes!=null?{bytes:o.bytes}:{},...o.runId?{runId:o.runId}:{},...o.worker?{worker:o.worker}:{}})),sampleSkips:e.skips.slice(0,n)}}function ic(e={}){let r=e.harnessRoot?D(e.harnessRoot):ue(),t=oi({harnessRoot:r}),n=e.now??Date.now();return{harnessRoot:r,scanRoots:t,now:n}}function ac(e){return typeof e=="string"?{reason:e}:e}function Ke(e,r,t,n){e.push({path:r,reason:t,...n?{detail:n}:{}})}function Jr(e,r,t){return!r||e.bytes!=null?e:{...e,bytes:re(e.path,t)}}function pi(e,r){let t={};for(let n of r)t[n.reason]=(t[n.reason]??0)+1;for(let n of e)n.skipReason&&(t[n.skipReason]=(t[n.skipReason]??0)+1);return t}function uc(e,r){return e.kind==="remove_next_cache"?Ms(e,r):Ts(e,r)}function lc(e,r,t){return e.kind==="remove_next_cache"?Lr(e.path,r,t):Fr(e.path,r,t)}function cc(e){let r=new Map;for(let t of e)for(let[n,o]of qs(t))r.set(n,o);return r}function fi(e,r){return e.runId&&e.worker?U.join(r,e.runId,e.worker):U.resolve(e.path,"..")}function mi(e){return e.indexed?!1:rn({harnessRoot:e.harnessRoot,runId:e.candidate.runId,workerName:e.candidate.worker,now:e.now})}function dc(e={}){let r=Zs(e),t=si();r=ii(r,t);let n=ic(e);K("scan",`${n.scanRoots.length} harness root(s)`);let o=hs(n.scanRoots,n.now),s=r.finalizeStaleRuns?Zo().map(h=>({runId:h.runId,from:h.from,to:h.to})):[];s.length>0&&K("finalize",`${s.length} stale run(s) marked terminal`),K("index","building worktree index");let i=cc(n.scanRoots);K("index",`${i.size} indexed worktree(s)`);let a={runTerminalCache:new zr,gitStatusCache:new Vr,gitRevCache:new Yr},u=[],l=[],c=new Set,d=r.maxActionsPerSweep,p=()=>l.length>=d;for(let h of n.scanRoots){if(p())break;K("root",h);let te=U.join(h,"worktrees"),qe=Xs(i,h),Ze={harnessRoot:h,worktreesDir:te,nodeModulesAgeMs:r.nodeModulesAgeMs,worktreesAgeMs:r.worktreesAgeMs,includeOrphans:r.includeOrphans,runIdFilter:r.runIdFilter,index:qe,now:n.now},Xr=r.scanDependencyCaches?Vs(Ze):[];K("dependency",r.scanDependencyCaches?`${Xr.length} cache candidate(s) at ${h}`:"skipped (worktree-only sweep)");let qr=0;for(let F of Xr){if(p())break;qr+=1,qr%50===0&&K("dependency",`${qr}/${Xr.length} evaluated`);let v=U.resolve(F.path);if(c.has(v))continue;c.add(v);let k={...F,path:v},W=lc(k,h,te);if(W){Ke(u,k.path,W),l.push({...k,executed:!1,skipped:!0,skipReason:W});continue}let L=fi(k,te),ne=qe.get(U.resolve(L))??null,_e=mi({candidate:k,indexed:ne,harnessRoot:h,now:n.now}),V=Yt({indexed:ne,includeOrphans:!0,nodeModulesAgeMs:r.nodeModulesAgeMs,ageMs:k.ageMs,worktreePath:L,activeWorktreePaths:o.activeWorktreePaths,workerFilesystemLive:_e,diskPressure:r.diskPressure,gitStatusCache:a.gitStatusCache});if(V){Ke(u,k.path,V),l.push({...k,executed:!1,skipped:!0,skipReason:V});continue}l.push(uc(Jr(k,r.accountBytes,r.byteAccountingEntryCap),r.execute))}if(r.scanDependencyCaches)for(let F of Hs(Ze)){if(p())break;let v=U.resolve(F.path);if(c.has(v))continue;c.add(v);let k={...F,path:v},W=Hr(k.path,h,te);if(W){Ke(u,k.path,W),l.push({...k,executed:!1,skipped:!0,skipReason:W});continue}let L=fi(k,te),ne=qe.get(U.resolve(L))??null,_e=mi({candidate:k,indexed:ne,harnessRoot:h,now:n.now}),V=ps({indexed:ne,includeOrphans:!0,nodeModulesAgeMs:r.nodeModulesAgeMs,ageMs:k.ageMs,worktreePath:L,activeWorktreePaths:o.activeWorktreePaths,workerFilesystemLive:_e,diskPressure:r.diskPressure,gitStatusCache:a.gitStatusCache});if(V){Ke(u,k.path,V),l.push({...k,executed:!1,skipped:!0,skipReason:V});continue}l.push(Ks(Jr(k,r.accountBytes,r.byteAccountingEntryCap),r.execute))}let Zr=[...$s(Ze),...Js(Ze)];K("worktrees",`${Zr.length} candidate(s) at ${h}`);let nn=new Set,Qr=0;for(let F of Zr){if(p())break;Qr+=1,Qr%50===0&&K("worktrees",`${Qr}/${Zr.length} evaluated`);let v=U.resolve(F.path);if(nn.has(v))continue;nn.add(v);let k={...F,path:v},W=qe.get(U.resolve(k.path))??null,L=W?null:ei({worktreePath:k.path,harnessRoot:h,runId:k.runId,workerName:k.worker,now:n.now}),ne=ds({indexed:W,worktreePath:U.resolve(k.path),includeOrphans:r.includeOrphans,worktreesAgeMs:r.worktreesAgeMs,terminalWorktreesAgeMs:r.terminalWorktreesAgeMs,ageMs:k.ageMs,orphanSafety:L,worktreeRemovalGuard:e.worktreeRemovalGuard,liveness:a,now:n.now,harnessRoot:h,writeSalvageEvidence:r.execute});if(ne){let{reason:_e,detail:V}=ac(ne);Ke(u,k.path,_e,V),l.push({...k,executed:!1,skipped:!0,skipReason:_e});continue}l.push(Bs(Jr(k,r.accountBytes,r.byteAccountingEntryCap),r.execute))}if(!p()&&r.runDirectoriesAgeMs>=0)for(let F of _s({harnessRoot:h,worktreesDir:te,runDirectoriesAgeMs:r.runDirectoriesAgeMs,runIdFilter:r.runIdFilter,activeGuards:o,now:n.now})){if(p())break;let v=U.resolve(F.path);if(c.has(v))continue;c.add(v);let k={...F,path:v},W=k.runId??U.basename(v),L=xs({harnessRoot:h,runId:W,runPath:v,ageMs:k.ageMs,runDirectoriesAgeMs:r.runDirectoriesAgeMs,activeGuards:o});if(L){Ke(u,k.path,L),l.push({...k,executed:!1,skipped:!0,skipReason:L});continue}l.push(Us(Jr(k,r.accountBytes,r.byteAccountingEntryCap),r.execute))}}let g=0,f=0,y=0,S=0,R=0,O=0;for(let h of l)h.bytes&&(g+=h.bytes),!h.skipped&&!h.executed&&h.bytes&&(y+=h.bytes),h.executed?(R+=1,S+=h.bytes??0,h.kind==="remove_run_directory"&&(f+=1)):h.skipped&&(O+=1,h.skipReason==="dry_run"&&h.bytes&&(y+=h.bytes));let B=r.accountBytes?ti({harnessRoot:n.harnessRoot,now:n.now,perRunEntryCap:r.storagePerRunEntryCap}):void 0,C=Ae(),xe=r.execute&&li(C),I=xe?ui({execute:!0}):null,Y=C?{observed:!0,execute:xe,dumpCount:C.dumpCount,totalBytes:C.totalBytes,removedCount:I?.removed.length??0,removedBytes:I?.removedBytes??0,executables:C.executables,path:C.path,reason:C.reason}:void 0;I&&I.removed.length>0&&(S+=I.removedBytes,R+=I.removed.length,K("wsl-crashes",`removed ${I.removed.length} dump(s), ${I.removedBytes} bytes`)),K("complete",`${l.length} action(s), ${O} skipped, ${R} removed`);let N=ms(l,u),A=di({harnessRoot:n.harnessRoot,scanRoots:n.scanRoots,dryRun:!r.execute,execute:r.execute,nodeModulesAgeMs:r.nodeModulesAgeMs,worktreesAgeMs:r.worktreesAgeMs,includeOrphans:r.includeOrphans,diskPressure:r.diskPressure,diskGate:r.diskGate?{ok:r.diskGate.ok,path:r.diskGate.path,freeBytes:r.diskGate.freeBytes,usedPercent:r.diskGate.usedPercent,reason:r.diskGate.reason}:void 0,scannedAt:new Date(n.now).toISOString(),finalizedRuns:s,actions:l,skips:u,totals:{candidateBytes:g,reclaimableBytes:y,removedBytes:S,removedPaths:R,skippedPaths:O,skipReasons:pi(l,u)},...B?{storage:B}:{},...N.length>0?{preservedLivePaths:N}:{},...f>0?{removedRunDirectories:f}:{},...Y?{wslCrashDumps:Y}:{}});return{harnessRoot:n.harnessRoot,scanRoots:n.scanRoots,dryRun:!r.execute,execute:r.execute,nodeModulesAgeMs:r.nodeModulesAgeMs,worktreesAgeMs:r.worktreesAgeMs,includeOrphans:r.includeOrphans,diskPressure:r.diskPressure,diskGate:r.diskGate?{ok:r.diskGate.ok,path:r.diskGate.path,freeBytes:r.diskGate.freeBytes,usedPercent:r.diskGate.usedPercent,reason:r.diskGate.reason}:void 0,scannedAt:new Date(n.now).toISOString(),finalizedRuns:s,actions:l,skips:u,totals:{candidateBytes:g,reclaimableBytes:y,removedBytes:S,removedPaths:R,skippedPaths:O,skipReasons:pi(l,u)},...B?{storage:B}:{},...N.length>0?{preservedLivePaths:N}:{},...f>0?{removedRunDirectories:f}:{},...Y?{wslCrashDumps:Y}:{},compactSummary:A}}export{Br as DEFAULT_MAX_ACTIONS_PER_SWEEP,Vt as DEFAULT_NODE_MODULES_AGE_MS,zt as DEFAULT_RUN_DIRECTORIES_AGE_MS,Ur as DEFAULT_WORKTREES_AGE_MS,dc as runHarnessCleanup};
|