@kynver-app/runtime 0.2.62 → 0.2.65
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/dist/cli.js +95 -95
- package/dist/index.js +118 -118
- package/dist/local-run-store/index.js +7 -7
- package/dist/server/cleanup.js +14 -14
- package/dist/server/default-repo.js +1 -1
- package/dist/server/dispatch-routing.js +3 -3
- package/dist/server/heavy-verification.js +1 -1
- package/dist/server/memory-cost-enforce.js +2 -2
- package/dist/server/memory-cost.js +2 -2
- package/dist/server/model-routing.js +3 -3
- package/dist/server/monitor.js +7 -7
- package/dist/server/worker-policy.js +2 -2
- package/package.json +1 -1
package/dist/server/cleanup.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
var f=(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
|
|
2
|
-
`),
|
|
1
|
+
var f=(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 Kt}from"node:os";import Bt from"node:path";function Ps(e){return e==="~"?Kt():e.startsWith("~/")||e.startsWith("~\\")?Bt.join(Kt(),e.slice(2)):e}function Z(e){return Bt.resolve(Ps(e))}var oe=f(()=>{"use strict"});import{existsSync as Is,mkdirSync as Os,readFileSync as Ft,readdirSync as sl,renameSync as Ds,rmSync as Ws,statSync as Ht,writeFileSync as Ns}from"node:fs";import{randomBytes as Ms}from"node:crypto";import Ts from"node:path";function Ye(e){console.error(e),process.exit(1)}function $r(e){return process.platform!=="win32"?e:{windowsHide:!0,...e}}function Ve(e){try{return JSON.parse(e)}catch{return null}}function _(e,r){try{return JSON.parse(Ft(e,"utf8"))}catch(t){if(arguments.length>1)return r;Ye(`failed to read ${e}: ${t.message}`)}}function Lt(e,r){Os(Ts.dirname(e),{recursive:!0});let t=`${e}.${process.pid}.${Ms(4).toString("hex")}.tmp`;try{Ns(t,`${JSON.stringify(r,null,2)}
|
|
2
|
+
`),Ds(t,e)}catch(n){try{Ws(t,{force:!0})}catch{}throw n}}function v(e){return String(e||"").toLowerCase().replace(/[^a-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"worker"}function ze(e){try{return Ht(e).size}catch{return 0}}function Je(e){try{return Ht(e).mtime.toISOString()}catch{return null}}function jt(e,r){return Is(e)?Ft(e,"utf8").split(`
|
|
3
3
|
`).slice(-r).join(`
|
|
4
|
-
`):""}function Q(e){if(!e)return!1;try{return process.kill(e,0),!0}catch{return!1}}function
|
|
5
|
-
`).map(r=>r.trim()).filter(Boolean)}function w(e,r){try{let t=Gt("git",r,$r({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 $t(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 Xe(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 Yr(n,"missing worktree path");let s=w(e,["rev-parse","HEAD"]);if(s.status!==0)return Yr(n,s.error||s.stderr||s.stdout||"failed to resolve HEAD");let i;if(o)i=o;else{let m=w(e,["rev-parse",n]);if(m.status!==0)return Yr(n,m.error||m.stderr||m.stdout||`failed to resolve ${n}`,s.stdout.trim());i=m.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=$t(e,i,a),l=$t(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 Yr(e,r,t=null){return{checked:!1,base:e,head:t,baseHead:null,baseIsAncestorOfHead:null,headIsAncestorOfBase:null,relation:"unknown",error:r}}var F=f(()=>{"use strict";oe();b();jt()});var qe=f(()=>{"use strict";F();oe()});function se(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 Ze(e,r){return e[r]?.trim()||null}function Yt(e){let r=e?.split(":")[0]?.trim();return r?se(r):null}function be(e=process.env,r={}){let t=[],n=Yt(r.boxId),o=Yt(Ze(e,"KYNVER_BOX_ID")),s=r.boxKind?.trim();if(s)return n&&n!==se(s)&&t.push(`config.boxId=${r.boxId} conflicts with boxKind=${s}; using explicit boxKind=${s}`),{boxKind:se(s),source:"config",slugInferenceBlocked:!1,warnings:t};let i=Ze(e,"KYNVER_BOX_KIND");if(i)return o&&o!==se(i)&&t.push(`KYNVER_BOX_ID=${Ze(e,"KYNVER_BOX_ID")} conflicts with KYNVER_BOX_KIND=${i}; using explicit KYNVER_BOX_KIND=${i}`),{boxKind:se(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=Ze(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 ie=f(()=>{"use strict"});function Vr(e,r){return e==="forge"?4:Math.max(1,r)}function Qe(e,r){return e==="forge"?Math.min(Math.max(1,r),4):Math.max(1,r)}var er=f(()=>{"use strict"});var Vt=f(()=>{"use strict"});import{existsSync as Ks,readFileSync as Bs,statfsSync as Fs}from"node:fs";function zr(){if(process.platform!=="linux")return!1;for(let e of["/proc/sys/kernel/osrelease","/proc/version"])try{if(!Ks(e))continue;let r=Bs(e,"utf8");if(/microsoft|wsl/i.test(r))return!0}catch{}return!1}function zt(e={}){if(!(e.forceWsl===void 0?zr():e.forceWsl))return null;let t=e.wslHostMount?.trim()||process.env.KYNVER_WSL_HOST_MOUNT?.trim()||Se,n=e.wslHostFreeWarnBytes??Hs,o=e.wslHostFreeCriticalBytes??Ls,s=e.statfs??Fs,i;try{i=s(t)}catch(R){return{ok:!1,path:t,freeBytes:0,totalBytes:0,usedPercent:100,warnBelowBytes:n,criticalBelowBytes:o,reason:`Windows host disk probe failed at ${t}: ${R.message}`,probeError:R.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,m=!c&&!d,g=(a/(1024*1024*1024)).toFixed(1),p=null;return m||(p=`Windows host disk ${t} at ${d?"critical":"warning"}: ${g} GiB free (<${(d?o:n)/1024/1024/1024} GiB); WSL VHDX cannot grow safely. ${js()}`),{ok:m,path:t,freeBytes:a,totalBytes:u,usedPercent:l,warnBelowBytes:n,criticalBelowBytes:o,reason:p,probeError:null}}function js(){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 Hs,Ls,Se,Jr=f(()=>{"use strict";Hs=25*1024*1024*1024,Ls=12*1024*1024*1024,Se="/mnt/c"});import{execFileSync as Jt}from"node:child_process";import{existsSync as tr,readFileSync as Xt,readdirSync as $s,statSync as Gs}from"node:fs";import Xr from"node:path";function rr(e,r){let t=process.env[e];if(!t)return r;let n=Number(t);return Number.isFinite(n)?n:r}function qt(){let e=process.env.KYNVER_WSL_WIN_USER?.trim();if(e)return e;try{let n=Jt("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()||Se;return r&&tr(Xr.join(t,"Users",r))?r:null}function Xs(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()||Se,n=e.windowsUser??qt();return n?`${t.replace(/\\/g,"/").replace(/\/$/,"")}/Users/${n}/AppData/Local/Temp/wsl-crashes`:null}function qs(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 Zs(){try{if(tr("/proc/sys/kernel/core_pattern"))return Xt("/proc/sys/kernel/core_pattern","utf8").trim()}catch{}try{return Jt("sysctl",["-n","kernel.core_pattern"],{encoding:"utf8",timeout:2e3,stdio:["ignore","pipe","ignore"]}).trim()||null}catch{return null}}function Qs(e){return!!(e&&/wsl-capture-crash/i.test(e))}function ei(e,r=Se){let t=Xr.join(r,"Users",e,".wslconfig");if(!tr(t))return{maxCrashDumpCount:null,crashDumpFolder:null};let n;try{n=Xt(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 ri(e){if(!tr(e))return[];let r=$s(e,{withFileTypes:!0}),t=[];for(let n of r){if(!n.isFile()||!n.name.toLowerCase().endsWith(".dmp"))continue;let o=Xr.join(e,n.name);try{let s=Gs(o),i=qs(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 _e(e={}){if(!(e.forceWsl===void 0?zr():e.forceWsl))return null;let t=e.hostMount?.trim()||process.env.KYNVER_WSL_HOST_MOUNT?.trim()||Se,n=e.windowsUser??qt(),o=e.warnBelowBytes??rr("KYNVER_WSL_CRASH_DUMP_WARN_BYTES",Ys),s=e.criticalBelowBytes??rr("KYNVER_WSL_CRASH_DUMP_CRITICAL_BYTES",Vs),i=e.warnCount??rr("KYNVER_WSL_CRASH_DUMP_WARN_COUNT",zs),a=e.criticalCount??rr("KYNVER_WSL_CRASH_DUMP_CRITICAL_COUNT",Js),u=(e.readCorePattern??Zs)(),l=Qs(u),c=null;n&&(c=(e.readWslConfig??ei)(n,t));let d=c?.maxCrashDumpCount??null,m=d===-1,g=Xs({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:m,reason:null,probeError:"windows_user_unresolved"};let p;try{p=(e.listDumps??ri)(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:m,reason:`WSL crash dump probe failed at ${g}: ${P.message}`,probeError:P.message}}let R=p.reduce((P,h)=>P+h.bytes,0),S=p.length,y=[...new Set(p.map(P=>P.executableHint).filter(P=>!!P))],A=R>=s,j=R>=o,K=S>=a,je=S>=i,te=!(A||K||j||je),ne=null;if(!te){let P=A||K?"critical":"warning",h=(R/1024**3).toFixed(1),q=y.length>0?y.join(", "):"unknown";ne=`WSL crash dumps ${P}: ${S} file(s), ${h} GiB at ${g} (executables: ${q}). `+ti({wslCaptureEnabled:l,dumpsDisabledInWslConfig:m})}return{ok:te,path:g,windowsUser:n,dumpCount:S,totalBytes:R,warnBelowBytes:o,criticalBelowBytes:s,warnCount:i,criticalCount:a,dumps:p,executables:y,corePattern:u,wslCaptureEnabled:l,maxCrashDumpCount:d,dumpsDisabledInWslConfig:m,reason:ne,probeError:null}}function ti(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 Ys,Vs,zs,Js,nr=f(()=>{"use strict";Jr();Ys=5*1024*1024*1024,Vs=10*1024*1024*1024,zs=2,Js=4});import{statfsSync as ni}from"node:fs";function or(e={}){let r=e.diskPath?.trim()||"/",t=e.diskFreeWarnBytes??oi,n=e.diskFreeCriticalBytes??si,o=e.diskMaxUsedPercent??ii,s=e.diskHardMaxUsedPercent??ai,i=ni(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,m=a<t*2,g=m&&l>o,p=m&&l>s,R=!c&&!d&&!g&&!p,S=e.skipWslHostCheck?null:zt(e.wslHost),y=e.skipWslCrashDumpCheck?null:_e(e.wslCrashDumps),A=R&&(S?S.ok:!0)&&(y?y.ok:!0),j=null;return A||(j=[d?`free space below critical ${n} bytes`:null,c?`free space below warning ${t} bytes`:null,p?`used percent above hard cap ${s}%`:null,g?`used percent above cap ${o}%`:null,S&&!S.ok?S.reason:null,y&&!y.ok?y.reason:null].filter(Boolean).join("; ")),ui({ok:A,path:r,freeBytes:a,totalBytes:u,usedPercent:l,warnBelowBytes:t,criticalBelowBytes:n,maxUsedPercent:o,hardMaxUsedPercent:s,reason:j,wslHost:S,wslCrashDumps:y?{ok:y.ok,path:y.path,dumpCount:y.dumpCount,totalBytes:y.totalBytes,executables:y.executables,wslCaptureEnabled:y.wslCaptureEnabled,dumpsDisabledInWslConfig:y.dumpsDisabledInWslConfig,reason:y.reason,probeError:y.probeError}:null})}function ui(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 oi,si,ii,ai,sr=f(()=>{"use strict";nr();Jr();oi=30*1024*1024*1024,si=15*1024*1024*1024,ii=80,ai=90});import{existsSync as li,readdirSync as ci,statSync as di}from"node:fs";import qr from"node:path";function ir(){return Qt()}function Zr(){let{runsDir:e}=ir();return Zt(e)}function ar(e){return Zt(G(e))}function pi(e){try{return di(e).isDirectory()}catch{return!1}}function Zt(e){if(!li(e))return[];let r=[];for(let t of ci(e,{withFileTypes:!0})){if(t.name==="runs")continue;let n=qr.join(e,t.name);if(!pi(n))continue;let o=v(qr.join(n,"run.json"),void 0);o?.id&&r.push(o)}return r}function Qr(e){let{runsDir:r}=ir();Ft(qr.join(et(r,e.id),"run.json"),e)}function Oe(e){let{harnessRoot:r}=ir();return De(r,e)}function De(e,r){return et(G(e),_(r))}var ae=f(()=>{"use strict";Y();b()});import{existsSync as mi,readdirSync as fi}from"node:fs";import gi from"node:path";function rt(e){let r=new Set;for(let n of Object.keys(e.workers||{}))r.add(_(n));let t=gi.join(Oe(e.id),"workers");if(!mi(t))return[...r];for(let n of fi(t,{withFileTypes:!0}))n.isDirectory()&&r.add(_(n.name));return[...r]}var tt=f(()=>{"use strict";ae();b()});function nt(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 en(e){let r=e.trim();if(!r)return null;let t=nt(r);if(t)return t;let n=[],o=/```(?:json)?\s*([\s\S]*?)```/gi,s;for(;(s=o.exec(r))!==null;){let u=nt(s[1]??"");u&&n.push(u)}let i=r.indexOf("{"),a=r.lastIndexOf("}");if(i>=0&&a>i){let u=nt(r.slice(i,a+1));u&&n.push(u)}return n.length>0?n[n.length-1]:null}function rn(e){let r=e.finalResult??e.final_result;if(r!=null)return typeof r=="string"?en(r)??(r.trim()||null):r;let t=typeof e.summary=="string"?e.summary.trim():"";if(!t)return null;let n=en(t);return n||t}var tn=f(()=>{"use strict"});import{existsSync as hi,readFileSync as ki}from"node:fs";function nn(e){return e==="complete"}function on(e){return nn(e.lastHeartbeatPhase)?e.terminalFinalResult!==void 0&&e.terminalFinalResult!==null?e.terminalFinalResult:e.lastHeartbeatSummary?.trim()||"completed":null}function ve(e){let r={heartbeatCount:0,lastHeartbeatAt:null,lastHeartbeatPhase:null,lastHeartbeatSummary:null,terminalFinalResult:null,heartbeatBlocker:null,timestampAnomalies:[],lastBoxResourceSnapshot:null,lastPrEvidence:[]};if(!hi(e))return r;let t=Date.now()+Ri,n=new Date(t).toISOString(),o=ki(e,"utf8").split(`
|
|
6
|
-
`).filter(Boolean);for(let s of o){let i=Ve(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)),
|
|
7
|
-
`).find(Boolean)??o,160):"npm audit failed"}function
|
|
8
|
-
${e.stderr}`.trim(),t=
|
|
9
|
-
`).filter(Boolean);for(let n of t){let o=Ve(n);if(!o)continue;let s=$i(o);if(s&&(r.firstEventAt||=s,r.lastEventAt=s),o.type==="stream_event"&&o.event&&typeof o.event=="object"&&o.event.type==="content_block_start"){let a=o.event.content_block;a?.type==="tool_use"&&(r.currentTool=String(a.name||"tool"))}if(o.type==="assistant"&&o.message&&typeof o.message=="object"){let a=o.message.content;if(Array.isArray(a)){let u=a.find(l=>l?.type==="tool_use");u&&(r.currentTool=String(u.name||r.currentTool))}}if(o.type==="tool_call"&&o.subtype==="started"){let a=o.tool_call&&typeof o.tool_call=="object"&&!Array.isArray(o.tool_call)?o.tool_call:void 0,u=Gi(a);u&&(r.currentTool=u)}let i=Xi(o);i&&qi(r,gn({command:i.command,exitCode:i.exitCode,stdout:i.stdout,stderr:i.stderr,interleavedOutput:i.interleaved})),o.type==="result"&&Yi(r,o),Ji(r,o)}return r}var Rn=f(()=>{"use strict";hn();b()});function Qi(e,r=240){let t=e.replace(/\s+/g," ").trim();return t.length>r?`${t.slice(0,r-1)}\u2026`:t}function yn(e){let r=(e??"").trim();if(!r)return null;for(let t of Zi)if(t.test.test(r))return{blocked:!0,reason:`${t.label}: ${Qi(r)}`};return null}var Zi,bn=f(()=>{"use strict";Zi=[{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 Sn(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function ea(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 ra(e){return!e?.checked||e.headIsAncestorOfBase!==!1?null:Sn(e.head)}function ta(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 _n(e){if(e.alive||ea(e.finalResult))return null;let r=(e.changedFiles??[]).filter(i=>i.trim()).length,t=Sn(e.headCommit)??ra(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:ta(s,r,t)}}var vn=f(()=>{"use strict"});function Me(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function na(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 oa(e){if(Me(e.headCommit)||Me(e.prUrl)||Me(e.artifactBundlePath)||Me(e.patchPath))return!0;let r=e.gitAncestry;return!!(r?.checked&&r.headIsAncestorOfBase===!1&&Me(r.head))}function Ee(e){return na(e.finalResult)?e.changedFiles.length===0?{blocked:!1}:oa(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 xn(e){if(e.blocked)return e.detail??e.reason??"dirty_worktree_no_pr"}var dr=f(()=>{"use strict"});function at(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 En(e){let r=e.targetPrReconciliation??e.target_pr_reconciliation??e.targetPrs??e.target_prs;return Array.isArray(r)?r.length:0}function pr(e){let r=e.trim();if(!r)return null;let t=at(r);if(t)return t;let n=[],o=/```(?:json)?\s*([\s\S]*?)```/gi,s;for(;(s=o.exec(r))!==null;){let c=at(s[1]??"");c&&n.push(c)}let i=r.indexOf("{"),a=r.lastIndexOf("}");if(i>=0&&a>i){let c=at(r.slice(i,a+1));c&&n.push(c)}if(n.length===0)return null;let u=n[n.length-1],l=En(u);for(let c of n){let d=En(c);d>l&&(u=c,l=d)}return u}var ut=f(()=>{"use strict"});function Cn(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 wn(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`${r[1].toLowerCase()}/pull/${r[2]}`:e.trim().toLowerCase()}function sa(e){return new Set(e.map(r=>wn(Cn(r)??r)).filter(Boolean))}function An(e,r,t){let n=Cn(e)??e;if(!n)return"unrelated";let o=wn(n);return sa(r).has(o)?"contract":t?(t.outcome==="skipped"||t.outcome==="blocked")&&t.reason?.trim()?"support":(t.outcome==="merged","unrelated"):"unrelated"}var Pn=f(()=>{"use strict"});function Ce(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function ia(e){return e==null?!1:typeof e=="string"?e.trim().length>0:typeof e=="object"?Object.keys(e).length>0:!0}function ue(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`https://github.com/${r[1]}/pull/${r[2]}`:Ce(e)}function mr(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`${r[1].toLowerCase()}/pull/${r[2]}`:e.trim().toLowerCase()}function In(e){let r=null;if(typeof e=="string"){let o=pr(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=ue(String(s.prUrl??s.pr_url??"")),a=Ce(s.outcome);!i||a!=="merged"&&a!=="skipped"&&a!=="blocked"||n.push({prUrl:i,outcome:a,mergeCommit:Ce(s.mergeCommit??s.merge_commit),reason:Ce(s.reason)})}return n}function On(e,r){let t=[],n=ue(Ce(e.prUrl)??"");if(n&&t.push(n),r&&typeof r=="object"&&!Array.isArray(r)){let o=r,s=ue(String(o.prUrl??o.pr_url??""));s&&t.push(s)}return[...new Set(t)]}function Dn(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(!ia(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?ue(Ce(r.targetPrUrl)??"")??(r.targetPrUrls.length===1?ue(r.targetPrUrls[0]):null):null;if(s){let d=On(t,n);if(!(n&&typeof n=="object"&&!Array.isArray(n)&&n.supersedesOriginalTargetPr===!0)){for(let R of d)if(R!==s)return{blocked:!0,reason:"duplicate_repair_pr",detail:`Repair worker opened or attached PR ${R} instead of canonical target ${s}`}}let p=In(n).find(R=>R.prUrl===s);if(!p||p.outcome!=="merged"&&!(p.reason?.trim()&&(p.outcome==="skipped"||p.outcome==="blocked")))return{blocked:!0,reason:"missing_repair_target_reconciliation",detail:`Repair worker must reconcile target PR ${s}`}}let i=In(n),a=new Map(i.map(d=>[mr(d.prUrl),d])),u=new Set(r.targetPrUrls.map(d=>mr(ue(d)??d)).filter(Boolean)),l=On(t,n);if(r.landingOnly)for(let d of l){let m=a.get(mr(d)),g=An(d,r.targetPrUrls,m);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 m=mr(ue(d)??d),g=a.get(m);if(!g){c.push(m);continue}g.outcome!=="merged"&&!g.reason?.trim()&&c.push(m)}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 Nn(e){if(e.blocked)return e.detail??e.reason}var Wn=f(()=>{"use strict";ut();Pn()});function la(e){let r=Date.now();if(e.completionBlocker&&!Mn(e.completionBlocker))return{state:"blocked",reason:e.completionBlocker};if(e.finalResult){if(e.localOnly&&da(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=Ee(o);if(s.blocked){let i=xn(s);return{state:"needs_attention",reason:s.reason?`landing blocked (${s.reason}): ${i}`:`landing blocked: ${i}`}}if(e.landingContract){let i=Dn({contract:e.landingContract,snapshot:o,finalResult:e.finalResult}),a=Nn(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(ca(e))return{state:"done",reason:"empty abandoned worker record"};let o=yn(e.error);if(o)return{state:"blocked",reason:o.reason};let s=_n({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>aa)return{state:"needs_attention",reason:`no first stream event ${Gr(t)}s after start`};let n=e.lastActivityAt?Date.parse(e.lastActivityAt):NaN;return Number.isFinite(n)&&r-n>ua?{state:"stale",reason:`no log/event/heartbeat activity for ${Gr(n)}s`}:{state:"ok",reason:"recent activity"}}function Mn(e){let r=e?.trim();return r?/completion acknowledged but board not advanced/i.test(r)&&/task already terminal/i.test(r):!1}function ca(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 da(e){let r=null;if(typeof e=="string"?r=pr(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 pa(e,r,t){let n=e.completionSnapshot?.finalResult;return e.completionAckSource==="local-pr-merged-reconcile"&&n!==void 0&&n!==null?n:r||(n??on(t))}function Te(e,r={}){let t=kn(e.stdoutPath),n=ve(e.heartbeatPath),o=typeof e.completionReportedAt=="string"&&e.completionReportedAt.trim().length>0,s=pa(e,t.finalResult,n),i=o?!1:Q(e.pid),a=ze(e.stdoutPath),u=ze(e.stderrPath),l=ze(e.heartbeatPath),c=Ie(e.worktreePath),d=Xe(e.worktreePath,{base:r.base,baseCommit:r.baseCommit}),m=Lt([t.lastEventAt,n.lastHeartbeatAt,Je(e.stdoutPath),Je(e.stderrPath),Je(e.heartbeatPath)]),g=t.error||!i&&!s&&Ht(e.stderrPath,10).trim()||void 0,p=typeof e.completionBlocker=="string"&&e.completionBlocker.trim()?e.completionBlocker.trim():null,R=Mn(p)?null:p,S=e.repairTargetPrUrl?{landingOnly:!1,targetPrUrls:[e.repairTargetPrUrl],targetPrUrl:e.repairTargetPrUrl,repairEnforceOriginalPr:!0}:null,y=la({alive:i,finalResult:s,firstEventAt:t.firstEventAt,stdoutBytes:a,stderrBytes:u,heartbeatBytes:l,lastActivityAt:m,heartbeatBlocker:n.heartbeatBlocker,startedAt:e.startedAt,error:g,changedFiles:c,gitAncestry:d,completionBlocker:R,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=R||y.state==="blocked"?"blocked":o||y.state==="done"?"done":s?"exited":i?"running":"exited";return{runId:e.runId,worker:e.name,pid:e.pid,alive:i,status:A,attention:y,branch:e.branch,worktreePath:e.worktreePath,ownedPaths:e.ownedPaths,stdoutBytes:a,stderrBytes:u,heartbeatBytes:l,firstEventAt:t.firstEventAt,lastEventAt:t.lastEventAt,lastActivityAt:m,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,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 le(e){return!!(e.finalResult||e.alive===!1||e.status==="exited"||e.status==="done")}function Tn(e){return e.finalResult?e.attention.state==="needs_attention"||e.attention.state==="blocked":!1}var aa,ua,ce=f(()=>{"use strict";ur();Rn();bn();vn();F();dr();Wn();ut();b();aa=18e4,ua=6e5});var Un=f(()=>{"use strict";ce()});function Kn(e,r={}){let t=r.perWorkerMemBytes??lt,n=r.memReserveBytes??ct,o=r.memUtilization??dt,s=Math.max(0,Math.floor(e*o)-n),i=Math.max(1,Math.floor(s/t));return Math.min(i,fr)}var lt,ct,dt,fr,Bn=f(()=>{"use strict";Vt();pe();ie();er();gr();sr();ae();tt();Un();b();lt=500*1024*1024,ct=4*1024*1024*1024,dt=.85,fr=64});function Ue(e,r){let t=Number(e);return!Number.isFinite(t)||t<=0?r:Math.floor(t)}function pt(e){let r=e.config??{},t=e.env??process.env,n=Ue(r.perWorkerMemBytes,lt),o=Ue(r.memReserveBytes,ct),s=Math.min(1,Math.max(.1,Number(r.memUtilization)>0?Number(r.memUtilization):dt)),i=Kn(e.totalMemBytes,{perWorkerMemBytes:n,memReserveBytes:o,memUtilization:s});if(e.configuredMaxWorkersOverride!==void 0&&e.configuredMaxWorkersOverride!==null)return{configuredMaxWorkers:Ue(e.configuredMaxWorkersOverride,i),autoCap:i,workerCapSource:"workspace_override"};if(r.maxConcurrentWorkers!==void 0&&r.maxConcurrentWorkers!==null){let l=Ue(r.maxConcurrentWorkers,0)||null;if(l)return{configuredMaxWorkers:Math.min(l,fr),autoCap:i,workerCapSource:"config"}}let u=(t.KYNVER_MAX_WORKERS_INTENTIONAL==="1"||t.KYNVER_MAX_WORKERS_INTENTIONAL==="true")&&t.KYNVER_MAX_WORKERS&&Ue(t.KYNVER_MAX_WORKERS,0)||null;return u?{configuredMaxWorkers:Math.min(u,fr),autoCap:i,workerCapSource:"env"}:{configuredMaxWorkers:null,autoCap:i,workerCapSource:"auto"}}var gr=f(()=>{"use strict";Bn()});import{homedir as ma}from"node:os";import fa from"node:path";var Fn,mt=f(()=>{"use strict";Fn=fa.join(ma(),".kynver",".env")});var Hn=f(()=>{"use strict"});var Ln=f(()=>{"use strict";Hn()});var jn=f(()=>{"use strict"});var ft=f(()=>{"use strict";Ln();jn()});var $n=f(()=>{"use strict"});var Gn=f(()=>{"use strict";$n()});var hr=f(()=>{"use strict";mt();oe();pe();ft();Gn()});var zn=f(()=>{"use strict";ie();ie()});var Jn=f(()=>{"use strict";mt();ft();hr()});import{existsSync as V,mkdirSync as ha,readdirSync as kr,renameSync as Xn,statSync as ka}from"node:fs";import z from"node:path";function Zn(e){try{return ka(e).isDirectory()}catch{return!1}}function Ra(e){if(!V(e))return!0;for(let r of qn){let t=z.join(e,r);if(V(t)&&(!Zn(t)||kr(t).length>0))return!1}return!0}function ya(e){let r=z.join(e,"runs");if(!V(r)||!Zn(r))return!1;for(let t of kr(r,{withFileTypes:!0})){if(!t.isDirectory()||t.name==="runs")continue;let n=z.join(r,t.name,"run.json");if(v(n,void 0)?.id)return!0}return!1}function ba(e){let r=z.join(e,"runs");if(!V(r))return!1;for(let t of kr(r,{withFileTypes:!0})){if(!t.isDirectory())continue;if(v(z.join(r,t.name,"run.json"),void 0)?.boxKind==="ghost")return!0}return!1}function Sa(e){let r=z.join(e,"ghost");return V(r)?!V(z.join(r,"runs")):ba(e)}function Qn(e){return ya(e.sharedRoot)?Ra(e.forgeRoot)?Sa(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 eo(e,r){ha(r,{recursive:!0});for(let t of qn){let n=z.join(e,t),o=z.join(r,t);if(V(n)){if(V(o)&&kr(o).length>0)throw new Error(`Forge legacy harness migration failed: ${o} is not empty`);if(V(o)){Xn(n,o);continue}Xn(n,o)}}}var qn,ro=f(()=>{"use strict";b();qn=["runs","worktrees"]});import{existsSync as C}from"node:fs";import{homedir as _a}from"node:os";import E from"node:path";function gt(e=process.env){return e.HOME?.trim()||_a()}function ht(e=process.env){return E.join(gt(e),".kynver","harness")}function Rr(e){let r=E.resolve(Z(e.trim()));for(;va.has(E.basename(r));)r=E.dirname(r);return r}function xa(e,r=process.env){return E.join(ht(r),e)}function Ea(e=process.env){let r=ht(e);if(C(E.join(r,"runs")))return!0;if(C(r)&&!C(E.join(r,"ghost"))&&!C(E.join(r,"forge")))return C(r);let t=E.join(gt(e),to);return C(t)}function yr(e){let r=e.env??process.env,t=r.KYNVER_HARNESS_ROOT?.trim()||r.OPUS_HARNESS_ROOT?.trim();if(t)return{harnessRoot:Rr(t),source:"env"};let n=e.configuredHarnessRoot?.trim();if(n)return{harnessRoot:Rr(n),source:"config"};let o=xa(e.boxKind,r);if(C(E.join(o,"runs"))||C(o)&&!Ca(o))return{harnessRoot:o,source:"box_scoped"};let i=ht(r);if(e.boxKind==="forge"){let a=Qn({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&&eo(i,o),{harnessRoot:o,source:"legacy_migrated"}}if(e.boxKind==="ghost"&&Ea(r)){if(C(E.join(i,"runs")))return{harnessRoot:i,source:"legacy_shared"};if(C(i)&&!C(E.join(i,"ghost"))&&!C(E.join(i,"forge")))return{harnessRoot:i,source:"legacy_shared"};let u=E.join(gt(r),to);if(C(u))return{harnessRoot:u,source:"legacy_shared"}}return{harnessRoot:o,source:"box_scoped"}}function Ca(e){if(!C(e))return!0;for(let r of["runs","worktrees"]){let t=E.join(e,r);if(C(t))return!1}return!0}var to,va,kt=f(()=>{"use strict";oe();ro();to=E.join(".openclaw","harness");va=new Set(["runs","worktrees"])});import no from"node:os";function br(e){return e?.trim()?e.trim():null}function wa(e,r){let t=r.trim().toLowerCase()||"host";return`${e}-${t}`.replace(/[^a-z0-9._-]+/g,"-")}function Aa(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 Sr(e=de(),r=process.env,t={}){let n=be(r,e),o=[...n.warnings],s=[],i=!!(e.boxKind?.trim()||br(r.KYNVER_BOX_KIND)),a=t.strict===!0||Aa(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 R="ambiguous box identity: KYNVER_AGENT_OS_SLUG is set without KYNVER_BOX_KIND or config.boxKind";a||t.requireExplicitBoxKind?s.push(R):o.push(`${R} \u2014 defaulting box kind to box (customer), not forge/ghost`)}let u=br(e.runnerId),l=br(r.KYNVER_RUNTIME_ID)??br(r.OPENCLAW_RUNTIME_ID),c=u??l??wa(n.boxKind,no.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 m=pt({config:e,env:r,totalMemBytes:no.totalmem()}),g=Qe(n.boxKind,m.configuredMaxWorkers??Vr(n.boxKind,m.autoCap)),p=yr({boxKind:n.boxKind,configuredHarnessRoot:e.harnessRoot,env:r});return p.migrationBlocker&&s.push(p.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:m.workerCapSource,harnessRoot:p.harnessRoot,harnessRootSource:p.source},errors:s,warnings:o}}var _r=f(()=>{"use strict";pe();ie();er();gr();kt()});var so=f(()=>{"use strict";qe();ie();zn();pe();hr();Jn();b();_r()});var Oa,Qd,io=f(()=>{"use strict";Oa=["claude","cursor","codex","gemini","gemini-api","openai-compatible"],Qd=Oa.join("|")});import{existsSync as Na,mkdirSync as ip,readFileSync as Wa,writeFileSync as ap}from"node:fs";import{homedir as Ma,totalmem as lp}from"node:os";import Rt from"node:path";function Ta(e){return{...e,...e.harnessRoot?.trim()?{harnessRoot:Z(e.harnessRoot.trim())}:{},...e.defaultRepo?.trim()?{defaultRepo:Z(e.defaultRepo.trim())}:{}}}function de(){if(!Na(ao))return{};try{return Ta(JSON.parse(Wa(ao,"utf8")))}catch{return{}}}var uo,ao,_p,vp,xp,pe=f(()=>{"use strict";qe();oe();b();ie();er();gr();sr();hr();so();io();_r();uo=Rt.join(Ma(),".kynver"),ao=Rt.join(uo,"config.json"),_p=Rt.join(uo,"credentials");vp=500*1024*1024,xp=4*1024*1024*1024});import yt from"node:path";function O(e){return Rr(e)}function ee(){let e=process.env.KYNVER_HARNESS_ROOT||process.env.OPUS_HARNESS_ROOT;if(e)return O(e);let r=de(),t=r.harnessRoot?.trim();if(t)return O(t);let n=Sr(r,process.env);return n.identity?n.identity.harnessRoot:yr({boxKind:"forge",configuredHarnessRoot:null}).harnessRoot}function G(e){return yt.join(O(e),"runs")}function we(e){return yt.join(O(e),"worktrees")}function Qt(){let e=ee();return{harnessRoot:e,runsDir:G(e),worktreesDir:we(e)}}function et(e,r){return yt.join(e,_(r))}var Y=f(()=>{"use strict";pe();kt();_r();b()});Y();import M from"node:path";dr();import Cr from"node:path";F();ce();var bt=[".next",".turbo","dist","build",".cache","node_modules/.cache"];function lo(e){let r=e.replace(/\\/g,"/").replace(/\/+$/,"");if(r==="node_modules"||r.startsWith("node_modules/"))return!0;for(let t of bt)if(r===t||r.startsWith(`${t}/`))return!0;return!1}function D(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!lo(n)})}function me(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 Ke(e){let r=e.gitAncestry?.relation;return r==="merged"||r==="synced"?D(e.changedFiles).length>0:!!(me(e.finalResult)||r==="ahead"||r==="diverged"||e.changedFiles.length>0&&e.finalResult)}b();function Be(e){return e.status||(e.status=Te(e.worker,{base:e.run.base,baseCommit:e.run.baseCommit})),e.status}function St(e,r){if(e.status)return D(e.status.changedFiles).length>0;let t=r?r.porcelain(e.worktreePath):Ie(e.worktreePath);return D(t).length>0}function Ua(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=Ua(e);if(o&&!Q(t.pid)){let i=r?.gitStatusCache?r.gitStatusCache.porcelain(e.worktreePath):Ie(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"}:Xe(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??me(s)};return e.status=c,c}return Be(e)}ce();ae();tt();ce();b();import Ka from"node:path";var Ba=new Set(["running","dispatching","pending","queued","needs_attention"]),fe=new Set(["completed","failed","cancelled","done"]);function ge(e){let r=rt(e);if(r.length===0)return"failed";let t=!1,n=!1,o=!1,s=!1;for(let i of r){let a=v(Ka.join(Oe(e.id),"workers",_(i),"worker.json"),void 0);if(!a)continue;let u=Te(a,{base:e.base,baseCommit:e.baseCommit});if(u.alive&&!u.finalResult){t=!0;break}typeof a.completionBlocker=="string"&&a.completionBlocker&&(o=!0),Tn(u)&&(s=!0),u.finalResult&&u.attention.state==="done"&&(n=!0)}return t||o||s?null:n?"completed":"failed"}function co(){let e=[];for(let r of Zr()){if(!Ba.has(r.status))continue;let t=ge(r);if(!t||t===r.status)continue;let n=r.status;r.status=t,Qr(r),e.push({runId:r.id,from:n,to:t})}return e}ce();ur();import{existsSync as vr,mkdirSync as am,readdirSync as fo,renameSync as um,statSync as Fa}from"node:fs";import he from"node:path";pe();qe();oe();F();ur();Y();ae();Y();b();import re from"node:path";var tm=`${re.sep}runs${re.sep}runs${re.sep}`;function po(e){return{workerJsonPath:re.join(e,"worker.json"),stdoutPath:re.join(e,"stdout.jsonl"),stderrPath:re.join(e,"stderr.log"),heartbeatPath:re.join(e,"heartbeat.jsonl"),lastStatusPath:re.join(e,"last-status.json")}}b();var Fe=900*1e3,km=3600*1e3;function go(e,r){let t=he.resolve(e),n=he.resolve(G(r)),o=he.relative(n,t);return o!==".."&&!o.startsWith("..")&&!he.isAbsolute(o)}function Ha(e){if(!vr(e))return[];try{return fo(e,{withFileTypes:!0}).filter(r=>r.isDirectory()&&r.name!=="runs").map(r=>r.name)}catch{return[]}}function La(e){let r=he.join(e,"workers");if(!vr(r))return[];try{return fo(r,{withFileTypes:!0}).filter(t=>t.isDirectory()).map(t=>t.name)}catch{return[]}}function mo(e,r,t){if(!vr(e))return!1;try{let n=r-Fa(e).mtimeMs;return Number.isFinite(n)&&n>=0&&n<t}catch{return!1}}function ja(e,r=Date.now(),t=Fe){if(!vr(e))return!1;let n=po(e),o=v(n.workerJsonPath,void 0);if(o?.status==="running"&&Q(o.pid))return!0;let s=ve(n.heartbeatPath);if(s.lastHeartbeatAt){let i=r-Date.parse(s.lastHeartbeatAt);if(Number.isFinite(i)&&i>=0&&i<t)return!0}return!!(mo(n.stdoutPath,r,t)||mo(n.heartbeatPath,r,t))}function $a(e,r=Date.now(),t=Fe){for(let n of La(e))if(ja(he.join(e,"workers",n),r,t))return!0;return!1}function ho(e,r=Date.now()){let t=new Set,n=G(e);for(let o of Ha(n)){let s=he.join(n,o);$a(s,r)&&t.add(`${e}\0${o}`)}return t}b();function vt(e,r=Date.now(),t=Fe){let n=ve(e.heartbeatPath);if(!n.lastHeartbeatAt)return!1;let o=r-Date.parse(n.lastHeartbeatAt);return Number.isFinite(o)&&o>=0&&o<t}function xr(e,r=Date.now(),t=Fe){return Q(e.pid)?!0:vt(e,r,t)}function Ga(e,r){return r?r.runTerminalCache.derive(e.run):ge(e.run)}function J(e,r=Date.now()){return xr(e.worker,r)}function xt(e,r){return fe.has(e.run.status)?!1:Ga(e,r)!==null}function ko(e,r,t=Date.now()){if(J(e,t))return!0;if(fe.has(e.run.status)||xt(e,r))return!1;let n=Be(e);return le(n)?!1:!!J(e,t)}dr();ce();function Ro(e,r){if(!(typeof e.worker.completionBlocker=="string"?e.worker.completionBlocker.trim():""))return!1;if(J(e))return!0;let n=r??Be(e);return!!(!le(n)||Ke(n)||D(n.changedFiles).length>0||Ee({finalResult:n.finalResult,changedFiles:n.changedFiles,gitAncestry:n.gitAncestry,prUrl:me(n.finalResult)}).blocked)}F();b();import{existsSync as bo,mkdirSync as Ya,writeFileSync as yo}from"node:fs";import Er from"node:path";function So(e,r,t){return Er.join(e,"salvage",_(r),_(t))}function _o(e){return bo(Er.join(So(e.harnessRoot,e.runId,e.workerName),"evidence.json"))}function vo(e){let r=So(e.harnessRoot,e.indexed.runId,e.indexed.workerName);Ya(r,{recursive:!0});let t=Er.join(r,"salvage.patch"),n=!1;if(bo(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
|
-
`);a.trim()&&(
|
|
4
|
+
`):""}function Q(e){if(!e)return!1;try{return process.kill(e,0),!0}catch{return!1}}function $t(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 Gr(e){return Math.max(0,Math.round((Date.now()-e)/1e3))}var b=f(()=>{"use strict"});var Us,ll,Ks,cl,Gt=f(()=>{"use strict";Us=["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"],ll=new Set(Us),Ks=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],cl=new Set(Ks)});import{spawnSync as Vt}from"node:child_process";function ye(e,r,t={}){let n=Vt("git",r,$r({cwd:e,encoding:"utf8"}));if(n.status!==0&&!t.allowFailure){let o=Bs(e,r,n);if(t.throwError)throw new Error(o);Ye(o)}return n.stdout||""}function Bs(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 Ie(e){return ye(e,["status","--short"],{allowFailure:!0}).split(`
|
|
5
|
+
`).map(r=>r.trim()).filter(Boolean)}function w(e,r){try{let t=Vt("git",r,$r({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 Yt(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 Xe(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 Yr(n,"missing worktree path");let s=w(e,["rev-parse","HEAD"]);if(s.status!==0)return Yr(n,s.error||s.stderr||s.stdout||"failed to resolve HEAD");let i;if(o)i=o;else{let m=w(e,["rev-parse",n]);if(m.status!==0)return Yr(n,m.error||m.stderr||m.stdout||`failed to resolve ${n}`,s.stdout.trim());i=m.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=Yt(e,i,a),l=Yt(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 Yr(e,r,t=null){return{checked:!1,base:e,head:t,baseHead:null,baseIsAncestorOfHead:null,headIsAncestorOfBase:null,relation:"unknown",error:r}}var K=f(()=>{"use strict";oe();b();Gt()});var Vr=f(()=>{"use strict";K()});var qe=f(()=>{"use strict";K();oe();Vr()});var zr=f(()=>{"use strict";b()});function se(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 Ze(e,r){return e[r]?.trim()||null}function zt(e){let r=e?.split(":")[0]?.trim();return r?se(r):null}function be(e=process.env,r={}){let t=[],n=zt(r.boxId),o=zt(Ze(e,"KYNVER_BOX_ID")),s=r.boxKind?.trim();if(s)return n&&n!==se(s)&&t.push(`config.boxId=${r.boxId} conflicts with boxKind=${s}; using explicit boxKind=${s}`),{boxKind:se(s),source:"config",slugInferenceBlocked:!1,warnings:t};let i=Ze(e,"KYNVER_BOX_KIND");if(i)return o&&o!==se(i)&&t.push(`KYNVER_BOX_ID=${Ze(e,"KYNVER_BOX_ID")} conflicts with KYNVER_BOX_KIND=${i}; using explicit KYNVER_BOX_KIND=${i}`),{boxKind:se(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=Ze(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 ie=f(()=>{"use strict"});function Jr(e,r){return e==="forge"?4:Math.max(1,r)}function Qe(e,r){return e==="forge"?Math.min(Math.max(1,r),4):Math.max(1,r)}var er=f(()=>{"use strict"});var Jt=f(()=>{"use strict"});import{existsSync as Fs,readFileSync as Hs,statfsSync as Ls}from"node:fs";function Xr(){if(process.platform!=="linux")return!1;for(let e of["/proc/sys/kernel/osrelease","/proc/version"])try{if(!Fs(e))continue;let r=Hs(e,"utf8");if(/microsoft|wsl/i.test(r))return!0}catch{}return!1}function Xt(e={}){if(!(e.forceWsl===void 0?Xr():e.forceWsl))return null;let t=e.wslHostMount?.trim()||process.env.KYNVER_WSL_HOST_MOUNT?.trim()||Se,n=e.wslHostFreeWarnBytes??js,o=e.wslHostFreeCriticalBytes??$s,s=e.statfs??Ls,i;try{i=s(t)}catch(R){return{ok:!1,path:t,freeBytes:0,totalBytes:0,usedPercent:100,warnBelowBytes:n,criticalBelowBytes:o,reason:`Windows host disk probe failed at ${t}: ${R.message}`,probeError:R.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,m=!c&&!d,g=(a/(1024*1024*1024)).toFixed(1),p=null;return m||(p=`Windows host disk ${t} at ${d?"critical":"warning"}: ${g} GiB free (<${(d?o:n)/1024/1024/1024} GiB); WSL VHDX cannot grow safely. ${Gs()}`),{ok:m,path:t,freeBytes:a,totalBytes:u,usedPercent:l,warnBelowBytes:n,criticalBelowBytes:o,reason:p,probeError:null}}function Gs(){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 js,$s,Se,qr=f(()=>{"use strict";js=25*1024*1024*1024,$s=12*1024*1024*1024,Se="/mnt/c"});import{execFileSync as qt}from"node:child_process";import{existsSync as tr,readFileSync as Zt,readdirSync as Ys,statSync as Vs}from"node:fs";import Zr from"node:path";function rr(e,r){let t=process.env[e];if(!t)return r;let n=Number(t);return Number.isFinite(n)?n:r}function Qt(){let e=process.env.KYNVER_WSL_WIN_USER?.trim();if(e)return e;try{let n=qt("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()||Se;return r&&tr(Zr.join(t,"Users",r))?r:null}function Zs(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()||Se,n=e.windowsUser??Qt();return n?`${t.replace(/\\/g,"/").replace(/\/$/,"")}/Users/${n}/AppData/Local/Temp/wsl-crashes`:null}function Qs(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 ei(){try{if(tr("/proc/sys/kernel/core_pattern"))return Zt("/proc/sys/kernel/core_pattern","utf8").trim()}catch{}try{return qt("sysctl",["-n","kernel.core_pattern"],{encoding:"utf8",timeout:2e3,stdio:["ignore","pipe","ignore"]}).trim()||null}catch{return null}}function ri(e){return!!(e&&/wsl-capture-crash/i.test(e))}function ti(e,r=Se){let t=Zr.join(r,"Users",e,".wslconfig");if(!tr(t))return{maxCrashDumpCount:null,crashDumpFolder:null};let n;try{n=Zt(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(!tr(e))return[];let r=Ys(e,{withFileTypes:!0}),t=[];for(let n of r){if(!n.isFile()||!n.name.toLowerCase().endsWith(".dmp"))continue;let o=Zr.join(e,n.name);try{let s=Vs(o),i=Qs(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 ve(e={}){if(!(e.forceWsl===void 0?Xr():e.forceWsl))return null;let t=e.hostMount?.trim()||process.env.KYNVER_WSL_HOST_MOUNT?.trim()||Se,n=e.windowsUser??Qt(),o=e.warnBelowBytes??rr("KYNVER_WSL_CRASH_DUMP_WARN_BYTES",zs),s=e.criticalBelowBytes??rr("KYNVER_WSL_CRASH_DUMP_CRITICAL_BYTES",Js),i=e.warnCount??rr("KYNVER_WSL_CRASH_DUMP_WARN_COUNT",Xs),a=e.criticalCount??rr("KYNVER_WSL_CRASH_DUMP_CRITICAL_COUNT",qs),u=(e.readCorePattern??ei)(),l=ri(u),c=null;n&&(c=(e.readWslConfig??ti)(n,t));let d=c?.maxCrashDumpCount??null,m=d===-1,g=Zs({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:m,reason:null,probeError:"windows_user_unresolved"};let p;try{p=(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:m,reason:`WSL crash dump probe failed at ${g}: ${P.message}`,probeError:P.message}}let R=p.reduce((P,h)=>P+h.bytes,0),S=p.length,y=[...new Set(p.map(P=>P.executableHint).filter(P=>!!P))],A=R>=s,j=R>=o,B=S>=a,je=S>=i,te=!(A||B||j||je),ne=null;if(!te){let P=A||B?"critical":"warning",h=(R/1024**3).toFixed(1),q=y.length>0?y.join(", "):"unknown";ne=`WSL crash dumps ${P}: ${S} file(s), ${h} GiB at ${g} (executables: ${q}). `+oi({wslCaptureEnabled:l,dumpsDisabledInWslConfig:m})}return{ok:te,path:g,windowsUser:n,dumpCount:S,totalBytes:R,warnBelowBytes:o,criticalBelowBytes:s,warnCount:i,criticalCount:a,dumps:p,executables:y,corePattern:u,wslCaptureEnabled:l,maxCrashDumpCount:d,dumpsDisabledInWslConfig:m,reason:ne,probeError:null}}function oi(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 zs,Js,Xs,qs,nr=f(()=>{"use strict";qr();zs=5*1024*1024*1024,Js=10*1024*1024*1024,Xs=2,qs=4});import{statfsSync as si}from"node:fs";function or(e={}){let r=e.diskPath?.trim()||"/",t=e.diskFreeWarnBytes??ii,n=e.diskFreeCriticalBytes??ai,o=e.diskMaxUsedPercent??ui,s=e.diskHardMaxUsedPercent??li,i=si(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,m=a<t*2,g=m&&l>o,p=m&&l>s,R=!c&&!d&&!g&&!p,S=e.skipWslHostCheck?null:Xt(e.wslHost),y=e.skipWslCrashDumpCheck?null:ve(e.wslCrashDumps),A=R&&(S?S.ok:!0)&&(y?y.ok:!0),j=null;return A||(j=[d?`free space below critical ${n} bytes`:null,c?`free space below warning ${t} bytes`:null,p?`used percent above hard cap ${s}%`:null,g?`used percent above cap ${o}%`:null,S&&!S.ok?S.reason:null,y&&!y.ok?y.reason:null].filter(Boolean).join("; ")),ci({ok:A,path:r,freeBytes:a,totalBytes:u,usedPercent:l,warnBelowBytes:t,criticalBelowBytes:n,maxUsedPercent:o,hardMaxUsedPercent:s,reason:j,wslHost:S,wslCrashDumps:y?{ok:y.ok,path:y.path,dumpCount:y.dumpCount,totalBytes:y.totalBytes,executables:y.executables,wslCaptureEnabled:y.wslCaptureEnabled,dumpsDisabledInWslConfig:y.dumpsDisabledInWslConfig,reason:y.reason,probeError:y.probeError}:null})}function ci(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 ii,ai,ui,li,sr=f(()=>{"use strict";nr();qr();ii=30*1024*1024*1024,ai=15*1024*1024*1024,ui=80,li=90});import{existsSync as di,readdirSync as pi,statSync as mi}from"node:fs";import Qr from"node:path";function ir(){return rn()}function et(){let{runsDir:e}=ir();return en(e)}function ar(e){return en(G(e))}function fi(e){try{return mi(e).isDirectory()}catch{return!1}}function en(e){if(!di(e))return[];let r=[];for(let t of pi(e,{withFileTypes:!0})){if(t.name==="runs")continue;let n=Qr.join(e,t.name);if(!fi(n))continue;let o=_(Qr.join(n,"run.json"),void 0);o?.id&&r.push(o)}return r}function rt(e){let{runsDir:r}=ir();Lt(Qr.join(tt(r,e.id),"run.json"),e)}function Oe(e){let{harnessRoot:r}=ir();return De(r,e)}function De(e,r){return tt(G(e),v(r))}var ae=f(()=>{"use strict";Y();b()});import{existsSync as gi,readdirSync as hi}from"node:fs";import ki from"node:path";function nt(e){let r=new Set;for(let n of Object.keys(e.workers||{}))r.add(v(n));let t=ki.join(Oe(e.id),"workers");if(!gi(t))return[...r];for(let n of hi(t,{withFileTypes:!0}))n.isDirectory()&&r.add(v(n.name));return[...r]}var ot=f(()=>{"use strict";ae();b()});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 tn(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 u=st(s[1]??"");u&&n.push(u)}let i=r.indexOf("{"),a=r.lastIndexOf("}");if(i>=0&&a>i){let u=st(r.slice(i,a+1));u&&n.push(u)}return n.length>0?n[n.length-1]:null}function nn(e){let r=e.finalResult??e.final_result;if(r!=null)return typeof r=="string"?tn(r)??(r.trim()||null):r;let t=typeof e.summary=="string"?e.summary.trim():"";if(!t)return null;let n=tn(t);return n||t}var on=f(()=>{"use strict"});import{existsSync as Ri,readFileSync as yi}from"node:fs";function sn(e){return e==="complete"}function an(e){return sn(e.lastHeartbeatPhase)?e.terminalFinalResult!==void 0&&e.terminalFinalResult!==null?e.terminalFinalResult:e.lastHeartbeatSummary?.trim()||"completed":null}function _e(e){let r={heartbeatCount:0,lastHeartbeatAt:null,lastHeartbeatPhase:null,lastHeartbeatSummary:null,terminalFinalResult:null,heartbeatBlocker:null,timestampAnomalies:[],lastBoxResourceSnapshot:null,lastPrEvidence:[]};if(!Ri(e))return r;let t=Date.now()+bi,n=new Date(t).toISOString(),o=yi(e,"utf8").split(`
|
|
6
|
+
`).filter(Boolean);for(let s of o){let i=Ve(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)),sn(r.lastHeartbeatPhase)&&(r.terminalFinalResult=nn(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 bi,ur=f(()=>{"use strict";on();b();bi=6e4});function ln(e){return e?(e.split("/").pop()??e).replace(/\.exe$/i,"").toLowerCase():null}function lr(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 cn(e){let r=ln(e[0]);return!!(r&&Si.has(r))}function _i(e){let r=e.trim();return r.includes("/")?r.split("/").pop()??r:r}function xi(e){if(!e||e.includes("*"))return null;let r=_i(e);return!r||r.includes("/")?null:/\.(?:json|md|mjs|cjs|js|ts|tsx|yaml|yml)$/iu.test(r)?r:null}function dn(e){return!e||e.includes("/")||e.includes("*")?!1:/\.(?:json|md|mjs|cjs|js|ts|tsx|yaml|yml)$/iu.test(e)}function it(e){if(!e)return!1;let r=e.trim();return r.startsWith("!")&&!r.includes("/")&&!r.endsWith("/**")}function Ei(e){if(!e.startsWith("--glob="))return e;let r=e.slice(7);return r.startsWith("!")&&!r.includes("/")&&!r.endsWith("/**")?`--glob=${r}/**`:e}function Ci(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;un.has(n)&&(t+=1);continue}r.push(n)}}return r}function wi(e){let r=!1,t=e.map((o,s)=>{let i=Ei(o),a=e[s-1];return a&&un.has(a)&&o.startsWith("!")&&!o.includes("/")&&!o.endsWith("/**")&&(i=`${o}/**`),i!==o&&(r=!0),i}),n=Ci(t);if(n.length===2){let[o,s]=n;if(it(s))return{argv:[t[0]??"rg",o,"-g",`${s}/**`,"."],changed:!0};let i=xi(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 pn(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 cr(e){let r=e.trim();if(!r)return{command:r,wrapped:!1};let t=lr(r);if(!t.length)return{command:r,wrapped:!1};let n=ln(t[0]);if(!n||!vi.has(n))return{command:r,wrapped:!1};let o=pn(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 Ai(e,r){let t=e.trim(),n=lr(t),o=pn(n);if(o<0)return r;let s=n.slice(0,o).join(" "),i=r.includes("'")?`"${r.replace(/"/g,'\\"')}"`:`'${r}'`;return`${s} ${i}`}function Pi(e){let r=e.trim(),t=cr(r),n=lr(t.command);if(!n.length||!cn(n))return{segment:r,changed:!1};let o=wi(n);if(!o.changed)return{segment:r,changed:!1};let s=o.argv.join(" ");return t.wrapped?{segment:Ai(r,s),changed:!0}:{segment:s,changed:!0}}function at(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=Pi(i);return a.changed&&(o=!0),a.segment});return o?{command:s.join(t),changed:!0}:{command:r,changed:!1}}function mn(e){let r=cr(e).command,t=lr(r.trim());return t.length&&cn(t)?!0:/\b(rg|ripgrep)\b/i.test(r)}function fn(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 Ii(e){let{pattern:r,target:t}=fn(e);return r?it(t)?{kind:"rg_exclude_syntax",pattern:r,target:t}:dn(t)?{kind:"bad_scope",pattern:r,target:t}:{kind:"not_repo_search",pattern:r,target:t}:{kind:"not_repo_search"}}function Oi(e){let{pattern:r,target:t}=fn(e);if(!r)return null;if(it(t)){let n=`${t.trim()}/**`;return{command:`rg "${r}" -g '${n}' .`,changed:!0}}return t&&dn(t)?{command:`rg -g ${t} "${r}" .`,changed:!0}:null}function Di(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 Wi(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 ut(e){let r=e.meta?.trim()||(e.command?Wi(e.command):null)||null;if(r){let t=Ii(r),n=Di(t);if(n)return n;let o=Oi(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=at(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 Si,vi,un,gn=f(()=>{"use strict";Si=new Set(["rg","ripgrep","grep"]),vi=new Set(["bash","sh","dash","zsh"]),un=new Set(["-e","--regexp","-f","--file","-m","--max-count","-A","--after-context","-B","--before-context","-C","--context","-g","--glob","--iglob"])});function We(e,r=200){let t=e.replace(/\s+/g," ").trim();return t.length>r?`${t.slice(0,r-1)}\u2026`:t}function Ti(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 Ne(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function Ui(e){let r=e.metadata;if(!Ne(r))return null;let t=r.vulnerabilities;if(!Ne(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 Ki(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 Bi(e,r){let t=e.error;if(Ne(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?We(o.split(`
|
|
7
|
+
`).find(Boolean)??o,160):"npm audit failed"}function Fi(e){let r=`${e.stdout}
|
|
8
|
+
${e.stderr}`.trim(),t=Ti(r);if(!t||!Ne(t)){let o=We(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(Ne(t.error))return{kind:"command_failure",exitCode:e.exitCode,summary:`npm audit command failed: ${Bi(t,e.stderr)}`};let n=Ui(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:Ki(n),audit:n}:{kind:"command_failure",exitCode:e.exitCode,summary:"npm audit failed: JSON response missing vulnerability metadata",parseError:"missing_metadata"}}function Hi(e){return Ni.test(e)}function Li(e){let r=cr(e).command;return hn.test(e)||hn.test(r)||mn(e)}function ji(e){let r=ut({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&&Mi.test(n)){let i=We(n,160);return{kind:"command_failure",exitCode:1,summary:r??`ripgrep failed (exit 1): ${i}`}}let o=at(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=We(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 kn(e){let r=e.stdout??"",t=e.stderr??"",n=e.interleavedOutput??"";if(Hi(e.command)){let i=r.trim()||n.trim()||t.trim();return Fi({exitCode:e.exitCode,stdout:i,stderr:t})}if(Li(e.command))return ji({command:e.command,exitCode:e.exitCode,stdout:r,stderr:t,interleaved:n});let o=ut({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=We(n||r||t||`exit ${e.exitCode}`,180);return{kind:"command_failure",exitCode:e.exitCode,summary:`command failed (exit ${e.exitCode}): ${s}`}}var Ni,hn,Mi,Rn=f(()=>{"use strict";gn();Ni=/\bnpm\s+audit\b/i,hn=/\b(rg|ripgrep)\b/i,Mi=/\b(error|invalid|unknown|panic|not found)\b/i});import{existsSync as $i,readFileSync as Gi}from"node:fs";function Yi(e){let r=e.timestamp_ms;return e.timestamp||e.ts||(r?new Date(r).toISOString():void 0)}function Vi(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 zi(e,r){e.finalResult=r.result||r.subtype||r.terminal_reason||"completed",r.is_error&&(e.error=String(r.result||r.api_error_status||"stream result error"))}function xe(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:void 0}function Ji(e){let r=e.usage;return r&&typeof r=="object"&&!Array.isArray(r)?r:null}function Xi(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 qi(e,r){let t=Ji(r);if(!t)return;let n=xe(t.input_tokens)??xe(t.inputTokens)??xe(t.prompt_tokens),o=xe(t.output_tokens)??xe(t.outputTokens)??xe(t.completion_tokens);if(n===void 0&&o===void 0)return;let s=Xi(r)??e.usage?.model;e.usage={...n!==void 0?{inputTokens:n}:{},...o!==void 0?{outputTokens:o}:{},...s?{model:s}:{}}}function Zi(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 Qi(e,r){r.kind==="success"||r.kind==="search_no_matches"||(e.lastShellOutcome=r)}function yn(e){let r={firstEventAt:null,lastEventAt:null,currentTool:null,finalResult:null,error:null,lastShellOutcome:null,usage:null};if(!$i(e))return r;let t=Gi(e,"utf8").split(`
|
|
9
|
+
`).filter(Boolean);for(let n of t){let o=Ve(n);if(!o)continue;let s=Yi(o);if(s&&(r.firstEventAt||=s,r.lastEventAt=s),o.type==="stream_event"&&o.event&&typeof o.event=="object"&&o.event.type==="content_block_start"){let a=o.event.content_block;a?.type==="tool_use"&&(r.currentTool=String(a.name||"tool"))}if(o.type==="assistant"&&o.message&&typeof o.message=="object"){let a=o.message.content;if(Array.isArray(a)){let u=a.find(l=>l?.type==="tool_use");u&&(r.currentTool=String(u.name||r.currentTool))}}if(o.type==="tool_call"&&o.subtype==="started"){let a=o.tool_call&&typeof o.tool_call=="object"&&!Array.isArray(o.tool_call)?o.tool_call:void 0,u=Vi(a);u&&(r.currentTool=u)}let i=Zi(o);i&&Qi(r,kn({command:i.command,exitCode:i.exitCode,stdout:i.stdout,stderr:i.stderr,interleavedOutput:i.interleaved})),o.type==="result"&&zi(r,o),qi(r,o)}return r}var bn=f(()=>{"use strict";Rn();b()});function ra(e,r=240){let t=e.replace(/\s+/g," ").trim();return t.length>r?`${t.slice(0,r-1)}\u2026`:t}function Sn(e){let r=(e??"").trim();if(!r)return null;for(let t of ea)if(t.test.test(r))return{blocked:!0,reason:`${t.label}: ${ra(r)}`};return null}var ea,vn=f(()=>{"use strict";ea=[{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 _n(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 na(e){return!e?.checked||e.headIsAncestorOfBase!==!1?null:_n(e.head)}function oa(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 xn(e){if(e.alive||ta(e.finalResult))return null;let r=(e.changedFiles??[]).filter(i=>i.trim()).length,t=_n(e.headCommit)??na(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:oa(s,r,t)}}var En=f(()=>{"use strict"});function Me(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function sa(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 ia(e){if(Me(e.headCommit)||Me(e.prUrl)||Me(e.artifactBundlePath)||Me(e.patchPath))return!0;let r=e.gitAncestry;return!!(r?.checked&&r.headIsAncestorOfBase===!1&&Me(r.head))}function Ee(e){return sa(e.finalResult)?e.changedFiles.length===0?{blocked:!1}:ia(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 Cn(e){if(e.blocked)return e.detail??e.reason??"dirty_worktree_no_pr"}var dr=f(()=>{"use strict"});function lt(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 wn(e){let r=e.targetPrReconciliation??e.target_pr_reconciliation??e.targetPrs??e.target_prs;return Array.isArray(r)?r.length:0}function pr(e){let r=e.trim();if(!r)return null;let t=lt(r);if(t)return t;let n=[],o=/```(?:json)?\s*([\s\S]*?)```/gi,s;for(;(s=o.exec(r))!==null;){let c=lt(s[1]??"");c&&n.push(c)}let i=r.indexOf("{"),a=r.lastIndexOf("}");if(i>=0&&a>i){let c=lt(r.slice(i,a+1));c&&n.push(c)}if(n.length===0)return null;let u=n[n.length-1],l=wn(u);for(let c of n){let d=wn(c);d>l&&(u=c,l=d)}return u}var ct=f(()=>{"use strict"});function An(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 Pn(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`${r[1].toLowerCase()}/pull/${r[2]}`:e.trim().toLowerCase()}function aa(e){return new Set(e.map(r=>Pn(An(r)??r)).filter(Boolean))}function In(e,r,t){let n=An(e)??e;if(!n)return"unrelated";let o=Pn(n);return aa(r).has(o)?"contract":t?(t.outcome==="skipped"||t.outcome==="blocked")&&t.reason?.trim()?"support":(t.outcome==="merged","unrelated"):"unrelated"}var On=f(()=>{"use strict"});function Ce(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function ua(e){return e==null?!1:typeof e=="string"?e.trim().length>0:typeof e=="object"?Object.keys(e).length>0:!0}function ue(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`https://github.com/${r[1]}/pull/${r[2]}`:Ce(e)}function mr(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`${r[1].toLowerCase()}/pull/${r[2]}`:e.trim().toLowerCase()}function Dn(e){let r=null;if(typeof e=="string"){let o=pr(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=ue(String(s.prUrl??s.pr_url??"")),a=Ce(s.outcome);!i||a!=="merged"&&a!=="skipped"&&a!=="blocked"||n.push({prUrl:i,outcome:a,mergeCommit:Ce(s.mergeCommit??s.merge_commit),reason:Ce(s.reason)})}return n}function Wn(e,r){let t=[],n=ue(Ce(e.prUrl)??"");if(n&&t.push(n),r&&typeof r=="object"&&!Array.isArray(r)){let o=r,s=ue(String(o.prUrl??o.pr_url??""));s&&t.push(s)}return[...new Set(t)]}function Nn(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(!ua(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?ue(Ce(r.targetPrUrl)??"")??(r.targetPrUrls.length===1?ue(r.targetPrUrls[0]):null):null;if(s){let d=Wn(t,n);if(!(n&&typeof n=="object"&&!Array.isArray(n)&&n.supersedesOriginalTargetPr===!0)){for(let R of d)if(R!==s)return{blocked:!0,reason:"duplicate_repair_pr",detail:`Repair worker opened or attached PR ${R} instead of canonical target ${s}`}}let p=Dn(n).find(R=>R.prUrl===s);if(!p||p.outcome!=="merged"&&!(p.reason?.trim()&&(p.outcome==="skipped"||p.outcome==="blocked")))return{blocked:!0,reason:"missing_repair_target_reconciliation",detail:`Repair worker must reconcile target PR ${s}`}}let i=Dn(n),a=new Map(i.map(d=>[mr(d.prUrl),d])),u=new Set(r.targetPrUrls.map(d=>mr(ue(d)??d)).filter(Boolean)),l=Wn(t,n);if(r.landingOnly)for(let d of l){let m=a.get(mr(d)),g=In(d,r.targetPrUrls,m);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 m=mr(ue(d)??d),g=a.get(m);if(!g){c.push(m);continue}g.outcome!=="merged"&&!g.reason?.trim()&&c.push(m)}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 Mn(e){if(e.blocked)return e.detail??e.reason}var Tn=f(()=>{"use strict";ct();On()});function da(e){let r=Date.now();if(e.completionBlocker&&!Un(e.completionBlocker))return{state:"blocked",reason:e.completionBlocker};if(e.finalResult){if(e.localOnly&&ma(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=Ee(o);if(s.blocked){let i=Cn(s);return{state:"needs_attention",reason:s.reason?`landing blocked (${s.reason}): ${i}`:`landing blocked: ${i}`}}if(e.landingContract){let i=Nn({contract:e.landingContract,snapshot:o,finalResult:e.finalResult}),a=Mn(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(pa(e))return{state:"done",reason:"empty abandoned worker record"};let o=Sn(e.error);if(o)return{state:"blocked",reason:o.reason};let s=xn({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>la)return{state:"needs_attention",reason:`no first stream event ${Gr(t)}s after start`};let n=e.lastActivityAt?Date.parse(e.lastActivityAt):NaN;return Number.isFinite(n)&&r-n>ca?{state:"stale",reason:`no log/event/heartbeat activity for ${Gr(n)}s`}:{state:"ok",reason:"recent activity"}}function Un(e){let r=e?.trim();return r?/completion acknowledged but board not advanced/i.test(r)&&/task already terminal/i.test(r):!1}function pa(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 ma(e){let r=null;if(typeof e=="string"?r=pr(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 fa(e,r,t){let n=e.completionSnapshot?.finalResult;return e.completionAckSource==="local-pr-merged-reconcile"&&n!==void 0&&n!==null?n:r||(n??an(t))}function Te(e,r={}){let t=yn(e.stdoutPath),n=_e(e.heartbeatPath),o=typeof e.completionReportedAt=="string"&&e.completionReportedAt.trim().length>0,s=fa(e,t.finalResult,n),i=o?!1:Q(e.pid),a=ze(e.stdoutPath),u=ze(e.stderrPath),l=ze(e.heartbeatPath),c=Ie(e.worktreePath),d=Xe(e.worktreePath,{base:r.base,baseCommit:r.baseCommit}),m=$t([t.lastEventAt,n.lastHeartbeatAt,Je(e.stdoutPath),Je(e.stderrPath),Je(e.heartbeatPath)]),g=t.error||!i&&!s&&jt(e.stderrPath,10).trim()||void 0,p=typeof e.completionBlocker=="string"&&e.completionBlocker.trim()?e.completionBlocker.trim():null,R=Un(p)?null:p,S=e.repairTargetPrUrl?{landingOnly:!1,targetPrUrls:[e.repairTargetPrUrl],targetPrUrl:e.repairTargetPrUrl,repairEnforceOriginalPr:!0}:null,y=da({alive:i,finalResult:s,firstEventAt:t.firstEventAt,stdoutBytes:a,stderrBytes:u,heartbeatBytes:l,lastActivityAt:m,heartbeatBlocker:n.heartbeatBlocker,startedAt:e.startedAt,error:g,changedFiles:c,gitAncestry:d,completionBlocker:R,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=R||y.state==="blocked"?"blocked":o||y.state==="done"?"done":s?"exited":i?"running":"exited";return{runId:e.runId,worker:e.name,pid:e.pid,alive:i,status:A,attention:y,branch:e.branch,worktreePath:e.worktreePath,ownedPaths:e.ownedPaths,stdoutBytes:a,stderrBytes:u,heartbeatBytes:l,firstEventAt:t.firstEventAt,lastEventAt:t.lastEventAt,lastActivityAt:m,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,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 le(e){return!!(e.finalResult||e.alive===!1||e.status==="exited"||e.status==="done")}function Kn(e){return e.finalResult?e.attention.state==="needs_attention"||e.attention.state==="blocked":!1}var la,ca,ce=f(()=>{"use strict";ur();bn();vn();En();K();dr();Tn();ct();b();la=18e4,ca=6e5});var Bn=f(()=>{"use strict";ce()});function Fn(e,r={}){let t=r.perWorkerMemBytes??dt,n=r.memReserveBytes??pt,o=r.memUtilization??mt,s=Math.max(0,Math.floor(e*o)-n),i=Math.max(1,Math.floor(s/t));return Math.min(i,fr)}var dt,pt,mt,fr,Hn=f(()=>{"use strict";Jt();pe();ie();er();gr();sr();ae();ot();Bn();b();dt=500*1024*1024,pt=4*1024*1024*1024,mt=.85,fr=64});function Ue(e,r){let t=Number(e);return!Number.isFinite(t)||t<=0?r:Math.floor(t)}function ft(e){let r=e.config??{},t=e.env??process.env,n=Ue(r.perWorkerMemBytes,dt),o=Ue(r.memReserveBytes,pt),s=Math.min(1,Math.max(.1,Number(r.memUtilization)>0?Number(r.memUtilization):mt)),i=Fn(e.totalMemBytes,{perWorkerMemBytes:n,memReserveBytes:o,memUtilization:s});if(e.configuredMaxWorkersOverride!==void 0&&e.configuredMaxWorkersOverride!==null)return{configuredMaxWorkers:Ue(e.configuredMaxWorkersOverride,i),autoCap:i,workerCapSource:"workspace_override"};if(r.maxConcurrentWorkers!==void 0&&r.maxConcurrentWorkers!==null){let l=Ue(r.maxConcurrentWorkers,0)||null;if(l)return{configuredMaxWorkers:Math.min(l,fr),autoCap:i,workerCapSource:"config"}}let u=(t.KYNVER_MAX_WORKERS_INTENTIONAL==="1"||t.KYNVER_MAX_WORKERS_INTENTIONAL==="true")&&t.KYNVER_MAX_WORKERS&&Ue(t.KYNVER_MAX_WORKERS,0)||null;return u?{configuredMaxWorkers:Math.min(u,fr),autoCap:i,workerCapSource:"env"}:{configuredMaxWorkers:null,autoCap:i,workerCapSource:"auto"}}var gr=f(()=>{"use strict";Hn()});import{homedir as ga}from"node:os";import ha from"node:path";var Ln,gt=f(()=>{"use strict";Ln=ha.join(ga(),".kynver",".env")});var jn=f(()=>{"use strict"});var $n=f(()=>{"use strict";jn()});var Gn=f(()=>{"use strict"});var ht=f(()=>{"use strict";$n();Gn()});var Yn=f(()=>{"use strict"});var Vn=f(()=>{"use strict";Yn()});var hr=f(()=>{"use strict";gt();oe();pe();ht();Vn()});var Xn=f(()=>{"use strict";ie();ie()});var qn=f(()=>{"use strict";gt();ht();hr()});import{existsSync as V,mkdirSync as Ra,readdirSync as kr,renameSync as Zn,statSync as ya}from"node:fs";import z from"node:path";function eo(e){try{return ya(e).isDirectory()}catch{return!1}}function ba(e){if(!V(e))return!0;for(let r of Qn){let t=z.join(e,r);if(V(t)&&(!eo(t)||kr(t).length>0))return!1}return!0}function Sa(e){let r=z.join(e,"runs");if(!V(r)||!eo(r))return!1;for(let t of kr(r,{withFileTypes:!0})){if(!t.isDirectory()||t.name==="runs")continue;let n=z.join(r,t.name,"run.json");if(_(n,void 0)?.id)return!0}return!1}function va(e){let r=z.join(e,"runs");if(!V(r))return!1;for(let t of kr(r,{withFileTypes:!0})){if(!t.isDirectory())continue;if(_(z.join(r,t.name,"run.json"),void 0)?.boxKind==="ghost")return!0}return!1}function _a(e){let r=z.join(e,"ghost");return V(r)?!V(z.join(r,"runs")):va(e)}function ro(e){return Sa(e.sharedRoot)?ba(e.forgeRoot)?_a(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 to(e,r){Ra(r,{recursive:!0});for(let t of Qn){let n=z.join(e,t),o=z.join(r,t);if(V(n)){if(V(o)&&kr(o).length>0)throw new Error(`Forge legacy harness migration failed: ${o} is not empty`);if(V(o)){Zn(n,o);continue}Zn(n,o)}}}var Qn,no=f(()=>{"use strict";b();Qn=["runs","worktrees"]});import{existsSync as C}from"node:fs";import{homedir as xa}from"node:os";import E from"node:path";function kt(e=process.env){return e.HOME?.trim()||xa()}function Rt(e=process.env){return E.join(kt(e),".kynver","harness")}function Rr(e){let r=E.resolve(Z(e.trim()));for(;Ea.has(E.basename(r));)r=E.dirname(r);return r}function Ca(e,r=process.env){return E.join(Rt(r),e)}function wa(e=process.env){let r=Rt(e);if(C(E.join(r,"runs")))return!0;if(C(r)&&!C(E.join(r,"ghost"))&&!C(E.join(r,"forge")))return C(r);let t=E.join(kt(e),oo);return C(t)}function yr(e){let r=e.env??process.env,t=r.KYNVER_HARNESS_ROOT?.trim()||r.OPUS_HARNESS_ROOT?.trim();if(t)return{harnessRoot:Rr(t),source:"env"};let n=e.configuredHarnessRoot?.trim();if(n)return{harnessRoot:Rr(n),source:"config"};let o=Ca(e.boxKind,r);if(C(E.join(o,"runs"))||C(o)&&!Aa(o))return{harnessRoot:o,source:"box_scoped"};let i=Rt(r);if(e.boxKind==="forge"){let a=ro({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&&to(i,o),{harnessRoot:o,source:"legacy_migrated"}}if(e.boxKind==="ghost"&&wa(r)){if(C(E.join(i,"runs")))return{harnessRoot:i,source:"legacy_shared"};if(C(i)&&!C(E.join(i,"ghost"))&&!C(E.join(i,"forge")))return{harnessRoot:i,source:"legacy_shared"};let u=E.join(kt(r),oo);if(C(u))return{harnessRoot:u,source:"legacy_shared"}}return{harnessRoot:o,source:"box_scoped"}}function Aa(e){if(!C(e))return!0;for(let r of["runs","worktrees"]){let t=E.join(e,r);if(C(t))return!1}return!0}var oo,Ea,yt=f(()=>{"use strict";oe();no();oo=E.join(".openclaw","harness");Ea=new Set(["runs","worktrees"])});import so from"node:os";function br(e){return e?.trim()?e.trim():null}function Pa(e,r){let t=r.trim().toLowerCase()||"host";return`${e}-${t}`.replace(/[^a-z0-9._-]+/g,"-")}function Ia(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 Sr(e=de(),r=process.env,t={}){let n=be(r,e),o=[...n.warnings],s=[],i=!!(e.boxKind?.trim()||br(r.KYNVER_BOX_KIND)),a=t.strict===!0||Ia(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 R="ambiguous box identity: KYNVER_AGENT_OS_SLUG is set without KYNVER_BOX_KIND or config.boxKind";a||t.requireExplicitBoxKind?s.push(R):o.push(`${R} \u2014 defaulting box kind to box (customer), not forge/ghost`)}let u=br(e.runnerId),l=br(r.KYNVER_RUNTIME_ID)??br(r.OPENCLAW_RUNTIME_ID),c=u??l??Pa(n.boxKind,so.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 m=ft({config:e,env:r,totalMemBytes:so.totalmem()}),g=Qe(n.boxKind,m.configuredMaxWorkers??Jr(n.boxKind,m.autoCap)),p=yr({boxKind:n.boxKind,configuredHarnessRoot:e.harnessRoot,env:r});return p.migrationBlocker&&s.push(p.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:m.workerCapSource,harnessRoot:p.harnessRoot,harnessRootSource:p.source},errors:s,warnings:o}}var vr=f(()=>{"use strict";pe();ie();er();gr();yt()});var ao=f(()=>{"use strict";qe();ie();Xn();pe();hr();qn();zr();vr()});var Wa,up,uo=f(()=>{"use strict";Wa=["claude","cursor","codex","gemini","gemini-api","openai-compatible"],up=Wa.join("|")});import{existsSync as Ma,mkdirSync as hp,readFileSync as Ta,writeFileSync as kp}from"node:fs";import{homedir as Ua,totalmem as yp}from"node:os";import bt from"node:path";function Ka(e){return{...e,...e.harnessRoot?.trim()?{harnessRoot:Z(e.harnessRoot.trim())}:{},...e.defaultRepo?.trim()?{defaultRepo:Z(e.defaultRepo.trim())}:{}}}function de(){if(!Ma(lo))return{};try{return Ka(JSON.parse(Ta(lo,"utf8")))}catch{return{}}}var co,lo,Dp,Wp,Np,pe=f(()=>{"use strict";qe();oe();zr();ie();er();gr();sr();hr();ao();uo();vr();co=bt.join(Ua(),".kynver"),lo=bt.join(co,"config.json"),Dp=bt.join(co,"credentials");Wp=500*1024*1024,Np=4*1024*1024*1024});import St from"node:path";function O(e){return Rr(e)}function ee(){let e=process.env.KYNVER_HARNESS_ROOT||process.env.OPUS_HARNESS_ROOT;if(e)return O(e);let r=de(),t=r.harnessRoot?.trim();if(t)return O(t);let n=Sr(r,process.env);return n.identity?n.identity.harnessRoot:yr({boxKind:"forge",configuredHarnessRoot:null}).harnessRoot}function G(e){return St.join(O(e),"runs")}function we(e){return St.join(O(e),"worktrees")}function rn(){let e=ee();return{harnessRoot:e,runsDir:G(e),worktreesDir:we(e)}}function tt(e,r){return St.join(e,v(r))}var Y=f(()=>{"use strict";pe();yt();vr();b()});Y();import M from"node:path";dr();import Cr from"node:path";K();ce();var vt=[".next",".turbo","dist","build",".cache","node_modules/.cache"];function po(e){let r=e.replace(/\\/g,"/").replace(/\/+$/,"");if(r==="node_modules"||r.startsWith("node_modules/"))return!0;for(let t of vt)if(r===t||r.startsWith(`${t}/`))return!0;return!1}function D(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!po(n)})}function me(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 Ke(e){let r=e.gitAncestry?.relation;return r==="merged"||r==="synced"?D(e.changedFiles).length>0:!!(me(e.finalResult)||r==="ahead"||r==="diverged"||e.changedFiles.length>0&&e.finalResult)}b();function Be(e){return e.status||(e.status=Te(e.worker,{base:e.run.base,baseCommit:e.run.baseCommit})),e.status}function _t(e,r){if(e.status)return D(e.status.changedFiles).length>0;let t=r?r.porcelain(e.worktreePath):Ie(e.worktreePath);return D(t).length>0}function Ba(e){let r=e.worker.completionSnapshot?.finalResult;return r??(e.worker.taskPrUrl?{prUrl:e.worker.taskPrUrl}:null)}function xt(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=Ba(e);if(o&&!Q(t.pid)){let i=r?.gitStatusCache?r.gitStatusCache.porcelain(e.worktreePath):Ie(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"}:Xe(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??me(s)};return e.status=c,c}return Be(e)}ce();ae();ot();ce();b();import Fa from"node:path";var Ha=new Set(["running","dispatching","pending","queued","needs_attention"]),fe=new Set(["completed","failed","cancelled","done"]);function ge(e){let r=nt(e);if(r.length===0)return"failed";let t=!1,n=!1,o=!1,s=!1;for(let i of r){let a=_(Fa.join(Oe(e.id),"workers",v(i),"worker.json"),void 0);if(!a)continue;let u=Te(a,{base:e.base,baseCommit:e.baseCommit});if(u.alive&&!u.finalResult){t=!0;break}typeof a.completionBlocker=="string"&&a.completionBlocker&&(o=!0),Kn(u)&&(s=!0),u.finalResult&&u.attention.state==="done"&&(n=!0)}return t||o||s?null:n?"completed":"failed"}function mo(){let e=[];for(let r of et()){if(!Ha.has(r.status))continue;let t=ge(r);if(!t||t===r.status)continue;let n=r.status;r.status=t,rt(r),e.push({runId:r.id,from:n,to:t})}return e}ce();ur();import{existsSync as _r,mkdirSync as ym,readdirSync as ho,renameSync as bm,statSync as La}from"node:fs";import he from"node:path";pe();qe();oe();Vr();K();ur();Y();ae();Y();b();import re from"node:path";var fm=`${re.sep}runs${re.sep}runs${re.sep}`;function fo(e){return{workerJsonPath:re.join(e,"worker.json"),stdoutPath:re.join(e,"stdout.jsonl"),stderrPath:re.join(e,"stderr.log"),heartbeatPath:re.join(e,"heartbeat.jsonl"),lastStatusPath:re.join(e,"last-status.json")}}b();var Fe=900*1e3,Pm=3600*1e3;function ko(e,r){let t=he.resolve(e),n=he.resolve(G(r)),o=he.relative(n,t);return o!==".."&&!o.startsWith("..")&&!he.isAbsolute(o)}function ja(e){if(!_r(e))return[];try{return ho(e,{withFileTypes:!0}).filter(r=>r.isDirectory()&&r.name!=="runs").map(r=>r.name)}catch{return[]}}function $a(e){let r=he.join(e,"workers");if(!_r(r))return[];try{return ho(r,{withFileTypes:!0}).filter(t=>t.isDirectory()).map(t=>t.name)}catch{return[]}}function go(e,r,t){if(!_r(e))return!1;try{let n=r-La(e).mtimeMs;return Number.isFinite(n)&&n>=0&&n<t}catch{return!1}}function Ga(e,r=Date.now(),t=Fe){if(!_r(e))return!1;let n=fo(e),o=_(n.workerJsonPath,void 0);if(o?.status==="running"&&Q(o.pid))return!0;let s=_e(n.heartbeatPath);if(s.lastHeartbeatAt){let i=r-Date.parse(s.lastHeartbeatAt);if(Number.isFinite(i)&&i>=0&&i<t)return!0}return!!(go(n.stdoutPath,r,t)||go(n.heartbeatPath,r,t))}function Ya(e,r=Date.now(),t=Fe){for(let n of $a(e))if(Ga(he.join(e,"workers",n),r,t))return!0;return!1}function Ro(e,r=Date.now()){let t=new Set,n=G(e);for(let o of ja(n)){let s=he.join(n,o);Ya(s,r)&&t.add(`${e}\0${o}`)}return t}b();function Et(e,r=Date.now(),t=Fe){let n=_e(e.heartbeatPath);if(!n.lastHeartbeatAt)return!1;let o=r-Date.parse(n.lastHeartbeatAt);return Number.isFinite(o)&&o>=0&&o<t}function xr(e,r=Date.now(),t=Fe){return Q(e.pid)?!0:Et(e,r,t)}function Va(e,r){return r?r.runTerminalCache.derive(e.run):ge(e.run)}function J(e,r=Date.now()){return xr(e.worker,r)}function Ct(e,r){return fe.has(e.run.status)?!1:Va(e,r)!==null}function yo(e,r,t=Date.now()){if(J(e,t))return!0;if(fe.has(e.run.status)||Ct(e,r))return!1;let n=Be(e);return le(n)?!1:!!J(e,t)}dr();ce();function bo(e,r){if(!(typeof e.worker.completionBlocker=="string"?e.worker.completionBlocker.trim():""))return!1;if(J(e))return!0;let n=r??Be(e);return!!(!le(n)||Ke(n)||D(n.changedFiles).length>0||Ee({finalResult:n.finalResult,changedFiles:n.changedFiles,gitAncestry:n.gitAncestry,prUrl:me(n.finalResult)}).blocked)}K();b();import{existsSync as vo,mkdirSync as za,writeFileSync as So}from"node:fs";import Er from"node:path";function _o(e,r,t){return Er.join(e,"salvage",v(r),v(t))}function xo(e){return vo(Er.join(_o(e.harnessRoot,e.runId,e.workerName),"evidence.json"))}function Eo(e){let r=_o(e.harnessRoot,e.indexed.runId,e.indexed.workerName);za(r,{recursive:!0});let t=Er.join(r,"salvage.patch"),n=!1;if(vo(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
|
+
`);a.trim()&&(So(t,a.endsWith(`
|
|
11
11
|
`)?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 Va=new Set(["completion_blocked","dirty_worktree","pr_or_unmerged_commits","landing_blocked"]);function za(e){return!Va.has(e.skipReason)||J(e.indexed,e.now)?!1:_o({harnessRoot:e.harnessRoot,runId:e.indexed.runId,workerName:e.indexed.workerName})?!0:e.writeSalvageEvidence?(vo({harnessRoot:e.harnessRoot,indexed:e.indexed,skipReason:e.skipReason,status:e.status,now:e.now}),!0):!1}function Ja(e){let{indexed:r,worktreesAgeMs:t,terminalWorktreesAgeMs:n}=e;return r&&(fe.has(r.run.status)||e.liveness&&xt(r,e.liveness)||e.liveness&&le(_t(r,e.liveness))&&!J(r))?n:t}function Xa(e){return!e.indexed||e.includeOrphans&&e.worktreesAgeMs<=0?0:Ja(e)}function qa(e,r){if(e.harnessRoot?.trim())return Cr.resolve(e.harnessRoot);let t=r.worker.workerDir;if(!t)return null;let n=`${Cr.sep}runs${Cr.sep}`,o=t.indexOf(n);return o<0?null:t.slice(0,o+n.length-1)}function xo(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=Xa(e);if(n<=0&&!t&&u<=0)return"worktrees_disabled";if(u>0&&o<u)return"below_age_threshold";if(J(r,a))return"active_worker";let l=_t(r,e.liveness),c=qa(e,r),d=p=>c&&za({indexed:r,harnessRoot:c,skipReason:p,status:l,now:a,writeSalvageEvidence:e.writeSalvageEvidence===!0})?null:p;if(Ro(r,l)){let p=d("completion_blocked");if(p)return p}if(St(r,e.liveness?.gitStatusCache)){let p=d("dirty_worktree");if(p)return p}let m=e.liveness?.gitRevCache?.countAheadOfMain(e.worktreePath);if(m!=null&&m>0){let p=d("pr_or_unmerged_commits");if(p)return p}if(ko(r,e.liveness,a)||!le(l))return"run_still_active";if(Ke(l)){let p=d("pr_or_unmerged_commits");if(p)return p}if(D(l.changedFiles).length>0){let p=d("dirty_worktree");if(p)return p}if(Ee({finalResult:l.finalResult,changedFiles:l.changedFiles,gitAncestry:l.gitAncestry,prUrl:me(l.finalResult)}).blocked){let p=d("landing_blocked");if(p)return p}if(i&&e.worktreePath){let p=i({worktreePath:e.worktreePath,indexed:!!r,runId:r?.runId,worker:r?.workerName});if(p)return p.detail?{reason:p.reason,detail:p.detail}:p.reason}return null}function Et(e){let{indexed:r,nodeModulesAgeMs:t,ageMs:n,worktreePath:o,activeWorktreePaths:s,diskPressure:i}=e;return!i&&n<t?"below_age_threshold":s.has(Cr.resolve(o))||r&&J(r)?"active_worker":r&&St(r,e.gitStatusCache)?"dirty_worktree":null}function Eo(e){return Et(e)}var Ct=216e5,wr=6048e5;var wt=36e5,Ar=120;var Co=new Set(["active_worker","run_still_active","completion_blocked","landing_blocked"]);function wo(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)Co.has(s.reason)&&o(s.path,s.reason,s.detail);for(let s of e)!s.skipped||!s.skipReason||Co.has(s.skipReason)&&o(s.path,s.skipReason);return t}import{existsSync as Oo,readdirSync as Do,statSync as eu}from"node:fs";import No from"node:path";ae();Y();import Ao from"node:path";b();function Qa(e,r){return xr(e,r)}function Po(e,r=Date.now()){let t=new Set,n=new Set;for(let o of e){for(let s of ar(o)){let i=!1;for(let a of Object.keys(s.workers||{})){let u=v(Ao.join(De(o,s.id),"workers",_(a),"worker.json"),void 0);if(!u?.worktreePath)continue;let l=Ao.resolve(u.worktreePath);Qa(u,r)&&(i=!0,t.add(l))}i&&n.add(`${o}\0${s.id}`)}for(let s of ho(o))n.add(s)}return{activeWorktreePaths:t,liveRunKeys:n}}function Io(e,r,t,n){return t?n.has(`${r}\0${t}`):!1}b();function ru(e,r){try{let t=eu(e).mtimeMs;return Math.max(0,r-t)}catch{return 0}}function tu(e,r){let t=No.join(e,"runs",r,"run.json");return Oo(t)?v(t,null):null}function Wo(e){try{return Do(e).length===0}catch{return!1}}function Mo(e){let{harnessRoot:r,runId:t,runPath:n,ageMs:o,runDirectoriesAgeMs:s,activeGuards:i}=e;if(Io(n,r,t,i.liveRunKeys)||!Wo(n))return"run_still_active";let a=tu(r,t);return a&&!fe.has(a.status)&&!ge(a)?"run_still_active":s>0&&o<s?"below_age_threshold":null}function To(e){if(!Oo(e.worktreesDir))return[];let r=[],t;try{t=Do(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=No.join(e.worktreesDir,o);Wo(s)&&r.push({kind:"remove_run_directory",path:s,bytes:null,harnessRoot:e.harnessRoot,runId:o,ageMs:ru(s,e.now)})}return r}F();import{existsSync as Pt,rmSync as Vo}from"node:fs";import{execFileSync as nu}from"node:child_process";import{existsSync as Uo,readdirSync as ou,statSync as su}from"node:fs";import iu from"node:path";var au=2500;function uu(e,r=au){if(!Uo(e))return 0;try{let n=nu("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 X(e,r=5e4){if(!Uo(e))return 0;let t=uu(e);if(t!==null)return t;let n=0,o=0,s=[e];for(;s.length>0;){let i=s.pop(),a;try{a=ou(i)}catch{continue}for(let u of a){if(o++>r)return null;let l=iu.join(i,u),c;try{c=su(l)}catch{continue}c.isDirectory()?s.push(l):n+=c.size}}return n}import{existsSync as pu,rmSync as mu}from"node:fs";Y();import{lstatSync as lu,readdirSync as cu}from"node:fs";function Ko(e){try{let r=lu(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 Bo(e,r=32){let t=Ko(e);if(!t)return!1;if(t.foreign)return!0;try{let n=cu(e),o=0;for(let s of n){if(o>=r)break;let i=`${e.replace(/\/$/,"")}/${s}`,a=Ko(i);if(o+=1,a?.foreign)return!0}}catch{}return!1}import{spawnSync as du}from"node:child_process";import Lo from"node:path";import N from"node:path";function Fo(e,r,t,n){let o=N.resolve(e),s=`${N.sep}${n}`,i=o.endsWith(s)?o:null;if(!i)return"path_outside_harness";let a=N.relative(t,i);if(a.startsWith("..")||N.isAbsolute(a))return"path_outside_harness";let u=a.split(N.sep);return u.length<3||u[u.length-1]!==n||!o.startsWith(N.resolve(r))?"path_outside_harness":null}function Pr(e,r,t){return Fo(e,r,t,"node_modules")}function Ir(e,r,t){return Fo(e,r,t,".next")}function Or(e,r,t){let n=N.resolve(e),o=N.relative(t,n);return o.startsWith("..")||N.isAbsolute(o)||o.split(N.sep).length<3||!n.startsWith(N.resolve(r))?"path_outside_harness":null}function Ho(e,r,t){let n=N.resolve(e);return Pr(n,r,t)===null||Ir(n,r,t)===null||Or(n,r,t)===null}function $o(){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 jo(e){let r=du("sudo",["-n",...e],{encoding:"utf8",stdio:["ignore","pipe","pipe"]});return{ok:r.status===0,stderr:`${r.stderr??""}${r.stdout??""}`.trim()}}function Go(e,r,t){if(!Ho(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=jo(["chown","-R",`${n}:${o}`,Lo.resolve(e)]);if(s.ok)return{ok:!0,method:"chown_then_rm"};let i=jo(["rm","-rf",Lo.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 At="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 fu(e){let r=e?.code;return r==="EACCES"||r==="EPERM"}function Yo(e,r,t={}){if(!pu(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?we(n):null,i=e.bytes??X(e.path)??void 0,a=t.removePath??mu,u=t.hasForeignOwnedEntry??Bo;try{return a(e.path,{recursive:!0,force:!0}),{executed:!0,skipped:!1,bytes:i}}catch(l){if(!fu(l)||!n||!o)return{executed:!1,skipped:!0,skipReason:"remove_failed",error:l.message};let c=u(e.path),d=$o();if(!(d==="force"||d==="auto"&&c))return c?{executed:!1,skipped:!0,skipReason:"foreign_owner",error:`${l.message}; ${At}`}:{executed:!1,skipped:!0,skipReason:"remove_failed",error:l.message};let g=Go(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(p){return{executed:!1,skipped:!0,skipReason:"foreign_owner",error:`${p.message}; privileged chown succeeded but rm still failed`}}return{executed:!1,skipped:!0,skipReason:"foreign_owner",error:`${l.message}; privileged reclaim failed: ${g.error}; ${At}`}}}function It(e){let r=e.harnessRoot;return!r||!go(e.path,r)?null:{...e,executed:!1,skipped:!0,skipReason:"run_metadata_protected"}}function Ot(e,r){let t=It(e);if(t)return t;let n=Yo(e,r);return{...e,bytes:n.bytes??e.bytes,executed:n.executed,skipped:n.skipped,skipReason:n.skipReason,error:n.error}}function zo(e,r){return Ot(e,r)}function Jo(e,r){return Ot(e,r)}function Xo(e,r){return Ot(e,r)}function qo(e,r){let t=It(e);if(t)return t;if(!Pt(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??X(e.path);return Vo(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 Zo(e,r){let t=It(e);if(t)return t;if(!Pt(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??X(e.path);return n&&ye(n,["worktree","remove","--force",e.path],{allowFailure:!0}),Pt(e.path)&&Vo(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 Dr,readdirSync as Nr,statSync as gu}from"node:fs";import H from"node:path";function Dt(e,r){try{let t=gu(e).mtimeMs;return Math.max(0,r-t)}catch{return 0}}function es(e,r){let t=H.relative(r,e);return t===""||!t.startsWith("..")&&!H.isAbsolute(t)}function Qo(e,r,t,n){let o=[];for(let s of bt){if(s===".next")continue;let i=H.join(e,s);if(!Dr(i))continue;let a=H.resolve(i);t.has(a)||es(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:Dt(a,r.now)}))}return o}function rs(e){let r=[],t=new Set;for(let n of e.index.values())e.runIdFilter&&n.runId!==e.runIdFilter||r.push(...Qo(n.worktreePath,e,t,{runId:n.runId,worker:n.workerName,repo:n.run.repo}));if(!e.includeOrphans||!Dr(e.worktreesDir))return r;for(let n of Nr(e.worktreesDir,{withFileTypes:!0})){if(!n.isDirectory())continue;let o=H.join(e.worktreesDir,n.name);for(let s of Nr(o,{withFileTypes:!0})){if(!s.isDirectory())continue;let i=H.join(o,s.name);r.push(...Qo(i,e,t,{runId:n.name,worker:s.name}))}}return r}function ts(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;Dr(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:Dt(a,e.now)})))}if(!t||!Dr(e.worktreesDir))return n;let s=new Set;for(let i of e.index.values())s.add(H.resolve(i.worktreePath));for(let i of Nr(e.worktreesDir,{withFileTypes:!0})){if(!i.isDirectory()||e.runIdFilter&&i.name!==e.runIdFilter)continue;let a=H.join(e.worktreesDir,i.name),u;try{u=Nr(a,{withFileTypes:!0})}catch{continue}for(let l of u){if(!l.isDirectory())continue;let c=H.resolve(H.join(a,l.name));o.has(c)||s.has(c)||es(c,e.harnessRoot)&&(o.add(c),n.push({kind:"remove_worktree",path:c,bytes:null,runId:i.name,worker:l.name,ageMs:Dt(c,e.now)}))}}return n}import{existsSync as ss,readdirSync as ns,statSync as hu}from"node:fs";import Ae from"node:path";var ku=[{dirName:"node_modules",kind:"remove_node_modules"},{dirName:".next",kind:"remove_next_cache"}];function Ru(e,r){try{let t=hu(e).mtimeMs;return Math.max(0,r-t)}catch{return 0}}function yu(e,r){let t=Ae.relative(r,e);return t===""||!t.startsWith("..")&&!Ae.isAbsolute(t)}function bu(e,r,t,n,o,s){if(!ss(n))return;let i=Ae.resolve(n);r.has(i)||yu(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:Ru(i,t.now)}))}function os(e,r,t,n,o){for(let s of ku)bu(e,r,t,Ae.join(n,s.dirName),s.kind,o)}function is(e){let r=[],t=new Set;for(let n of e.index.values())e.runIdFilter&&n.runId!==e.runIdFilter||os(r,t,e,n.worktreePath,{runId:n.runId,worker:n.workerName,repo:n.run.repo});if(!e.includeOrphans||!ss(e.worktreesDir))return r;for(let n of ns(e.worktreesDir,{withFileTypes:!0})){if(!n.isDirectory()||e.runIdFilter&&n.name!==e.runIdFilter)continue;let o=Ae.join(e.worktreesDir,n.name),s;try{s=ns(o,{withFileTypes:!0})}catch{continue}for(let i of s){if(!i.isDirectory())continue;let a=Ae.join(o,i.name);os(r,t,e,a,{runId:n.name,worker:i.name})}}return r}F();import{existsSync as as,statSync as Su}from"node:fs";import L from"node:path";function _u(e,r){try{let t=Su(e).mtimeMs;return Math.max(0,r-t)}catch{return 0}}function vu(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(D(s).length>0)return"dirty_worktree";let i=w(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=w(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}Y();import{existsSync as
|
|
16
|
-
`).map(t=>t.trim()).filter(Boolean)}var Ur=class{cache=new Map;porcelain(r){let t=r,n=this.cache.get(t);if(n!==void 0)return n;let o=
|
|
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 So(Er.join(r,"evidence.json"),`${JSON.stringify(o,null,2)}
|
|
13
|
+
`),o}var Ja=new Set(["completion_blocked","dirty_worktree","pr_or_unmerged_commits","landing_blocked"]);function Xa(e){return!Ja.has(e.skipReason)||J(e.indexed,e.now)?!1:xo({harnessRoot:e.harnessRoot,runId:e.indexed.runId,workerName:e.indexed.workerName})?!0:e.writeSalvageEvidence?(Eo({harnessRoot:e.harnessRoot,indexed:e.indexed,skipReason:e.skipReason,status:e.status,now:e.now}),!0):!1}function qa(e){let{indexed:r,worktreesAgeMs:t,terminalWorktreesAgeMs:n}=e;return r&&(fe.has(r.run.status)||e.liveness&&Ct(r,e.liveness)||e.liveness&&le(xt(r,e.liveness))&&!J(r))?n:t}function Za(e){return!e.indexed||e.includeOrphans&&e.worktreesAgeMs<=0?0:qa(e)}function Qa(e,r){if(e.harnessRoot?.trim())return Cr.resolve(e.harnessRoot);let t=r.worker.workerDir;if(!t)return null;let n=`${Cr.sep}runs${Cr.sep}`,o=t.indexOf(n);return o<0?null:t.slice(0,o+n.length-1)}function Co(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=Za(e);if(n<=0&&!t&&u<=0)return"worktrees_disabled";if(u>0&&o<u)return"below_age_threshold";if(J(r,a))return"active_worker";let l=xt(r,e.liveness),c=Qa(e,r),d=p=>c&&Xa({indexed:r,harnessRoot:c,skipReason:p,status:l,now:a,writeSalvageEvidence:e.writeSalvageEvidence===!0})?null:p;if(bo(r,l)){let p=d("completion_blocked");if(p)return p}if(_t(r,e.liveness?.gitStatusCache)){let p=d("dirty_worktree");if(p)return p}let m=e.liveness?.gitRevCache?.countAheadOfMain(e.worktreePath);if(m!=null&&m>0){let p=d("pr_or_unmerged_commits");if(p)return p}if(yo(r,e.liveness,a)||!le(l))return"run_still_active";if(Ke(l)){let p=d("pr_or_unmerged_commits");if(p)return p}if(D(l.changedFiles).length>0){let p=d("dirty_worktree");if(p)return p}if(Ee({finalResult:l.finalResult,changedFiles:l.changedFiles,gitAncestry:l.gitAncestry,prUrl:me(l.finalResult)}).blocked){let p=d("landing_blocked");if(p)return p}if(i&&e.worktreePath){let p=i({worktreePath:e.worktreePath,indexed:!!r,runId:r?.runId,worker:r?.workerName});if(p)return p.detail?{reason:p.reason,detail:p.detail}:p.reason}return null}function wt(e){let{indexed:r,nodeModulesAgeMs:t,ageMs:n,worktreePath:o,activeWorktreePaths:s,diskPressure:i}=e;return!i&&n<t?"below_age_threshold":s.has(Cr.resolve(o))||r&&J(r)?"active_worker":r&&_t(r,e.gitStatusCache)?"dirty_worktree":null}function wo(e){return wt(e)}var At=216e5,wr=6048e5;var Pt=36e5,Ar=120;var Ao=new Set(["active_worker","run_still_active","completion_blocked","landing_blocked"]);function Po(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)Ao.has(s.reason)&&o(s.path,s.reason,s.detail);for(let s of e)!s.skipped||!s.skipReason||Ao.has(s.skipReason)&&o(s.path,s.skipReason);return t}import{existsSync as Wo,readdirSync as No,statSync as tu}from"node:fs";import Mo from"node:path";ae();Y();import Io from"node:path";b();function ru(e,r){return xr(e,r)}function Oo(e,r=Date.now()){let t=new Set,n=new Set;for(let o of e){for(let s of ar(o)){let i=!1;for(let a of Object.keys(s.workers||{})){let u=_(Io.join(De(o,s.id),"workers",v(a),"worker.json"),void 0);if(!u?.worktreePath)continue;let l=Io.resolve(u.worktreePath);ru(u,r)&&(i=!0,t.add(l))}i&&n.add(`${o}\0${s.id}`)}for(let s of Ro(o))n.add(s)}return{activeWorktreePaths:t,liveRunKeys:n}}function Do(e,r,t,n){return t?n.has(`${r}\0${t}`):!1}b();function nu(e,r){try{let t=tu(e).mtimeMs;return Math.max(0,r-t)}catch{return 0}}function ou(e,r){let t=Mo.join(e,"runs",r,"run.json");return Wo(t)?_(t,null):null}function To(e){try{return No(e).length===0}catch{return!1}}function Uo(e){let{harnessRoot:r,runId:t,runPath:n,ageMs:o,runDirectoriesAgeMs:s,activeGuards:i}=e;if(Do(n,r,t,i.liveRunKeys)||!To(n))return"run_still_active";let a=ou(r,t);return a&&!fe.has(a.status)&&!ge(a)?"run_still_active":s>0&&o<s?"below_age_threshold":null}function Ko(e){if(!Wo(e.worktreesDir))return[];let r=[],t;try{t=No(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=Mo.join(e.worktreesDir,o);To(s)&&r.push({kind:"remove_run_directory",path:s,bytes:null,harnessRoot:e.harnessRoot,runId:o,ageMs:nu(s,e.now)})}return r}K();import{existsSync as Ot,rmSync as Jo}from"node:fs";import{execFileSync as su}from"node:child_process";import{existsSync as Bo,readdirSync as iu,statSync as au}from"node:fs";import uu from"node:path";var lu=2500;function cu(e,r=lu){if(!Bo(e))return 0;try{let n=su("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 X(e,r=5e4){if(!Bo(e))return 0;let t=cu(e);if(t!==null)return t;let n=0,o=0,s=[e];for(;s.length>0;){let i=s.pop(),a;try{a=iu(i)}catch{continue}for(let u of a){if(o++>r)return null;let l=uu.join(i,u),c;try{c=au(l)}catch{continue}c.isDirectory()?s.push(l):n+=c.size}}return n}import{existsSync as fu,rmSync as gu}from"node:fs";Y();import{lstatSync as du,readdirSync as pu}from"node:fs";function Fo(e){try{let r=du(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 Ho(e,r=32){let t=Fo(e);if(!t)return!1;if(t.foreign)return!0;try{let n=pu(e),o=0;for(let s of n){if(o>=r)break;let i=`${e.replace(/\/$/,"")}/${s}`,a=Fo(i);if(o+=1,a?.foreign)return!0}}catch{}return!1}import{spawnSync as mu}from"node:child_process";import $o from"node:path";import W from"node:path";function Lo(e,r,t,n){let o=W.resolve(e),s=`${W.sep}${n}`,i=o.endsWith(s)?o:null;if(!i)return"path_outside_harness";let a=W.relative(t,i);if(a.startsWith("..")||W.isAbsolute(a))return"path_outside_harness";let u=a.split(W.sep);return u.length<3||u[u.length-1]!==n||!o.startsWith(W.resolve(r))?"path_outside_harness":null}function Pr(e,r,t){return Lo(e,r,t,"node_modules")}function Ir(e,r,t){return Lo(e,r,t,".next")}function Or(e,r,t){let n=W.resolve(e),o=W.relative(t,n);return o.startsWith("..")||W.isAbsolute(o)||o.split(W.sep).length<3||!n.startsWith(W.resolve(r))?"path_outside_harness":null}function jo(e,r,t){let n=W.resolve(e);return Pr(n,r,t)===null||Ir(n,r,t)===null||Or(n,r,t)===null}function Yo(){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 Go(e){let r=mu("sudo",["-n",...e],{encoding:"utf8",stdio:["ignore","pipe","pipe"]});return{ok:r.status===0,stderr:`${r.stderr??""}${r.stdout??""}`.trim()}}function Vo(e,r,t){if(!jo(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=Go(["chown","-R",`${n}:${o}`,$o.resolve(e)]);if(s.ok)return{ok:!0,method:"chown_then_rm"};let i=Go(["rm","-rf",$o.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 It="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 hu(e){let r=e?.code;return r==="EACCES"||r==="EPERM"}function zo(e,r,t={}){if(!fu(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?we(n):null,i=e.bytes??X(e.path)??void 0,a=t.removePath??gu,u=t.hasForeignOwnedEntry??Ho;try{return a(e.path,{recursive:!0,force:!0}),{executed:!0,skipped:!1,bytes:i}}catch(l){if(!hu(l)||!n||!o)return{executed:!1,skipped:!0,skipReason:"remove_failed",error:l.message};let c=u(e.path),d=Yo();if(!(d==="force"||d==="auto"&&c))return c?{executed:!1,skipped:!0,skipReason:"foreign_owner",error:`${l.message}; ${It}`}:{executed:!1,skipped:!0,skipReason:"remove_failed",error:l.message};let g=Vo(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(p){return{executed:!1,skipped:!0,skipReason:"foreign_owner",error:`${p.message}; privileged chown succeeded but rm still failed`}}return{executed:!1,skipped:!0,skipReason:"foreign_owner",error:`${l.message}; privileged reclaim failed: ${g.error}; ${It}`}}}function Dt(e){let r=e.harnessRoot;return!r||!ko(e.path,r)?null:{...e,executed:!1,skipped:!0,skipReason:"run_metadata_protected"}}function Wt(e,r){let t=Dt(e);if(t)return t;let n=zo(e,r);return{...e,bytes:n.bytes??e.bytes,executed:n.executed,skipped:n.skipped,skipReason:n.skipReason,error:n.error}}function Xo(e,r){return Wt(e,r)}function qo(e,r){return Wt(e,r)}function Zo(e,r){return Wt(e,r)}function Qo(e,r){let t=Dt(e);if(t)return t;if(!Ot(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??X(e.path);return Jo(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 es(e,r){let t=Dt(e);if(t)return t;if(!Ot(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??X(e.path);return n&&ye(n,["worktree","remove","--force",e.path],{allowFailure:!0}),Ot(e.path)&&Jo(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 Dr,readdirSync as Wr,statSync as ku}from"node:fs";import H from"node:path";function Nt(e,r){try{let t=ku(e).mtimeMs;return Math.max(0,r-t)}catch{return 0}}function ts(e,r){let t=H.relative(r,e);return t===""||!t.startsWith("..")&&!H.isAbsolute(t)}function rs(e,r,t,n){let o=[];for(let s of vt){if(s===".next")continue;let i=H.join(e,s);if(!Dr(i))continue;let a=H.resolve(i);t.has(a)||ts(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:Nt(a,r.now)}))}return o}function ns(e){let r=[],t=new Set;for(let n of e.index.values())e.runIdFilter&&n.runId!==e.runIdFilter||r.push(...rs(n.worktreePath,e,t,{runId:n.runId,worker:n.workerName,repo:n.run.repo}));if(!e.includeOrphans||!Dr(e.worktreesDir))return r;for(let n of Wr(e.worktreesDir,{withFileTypes:!0})){if(!n.isDirectory())continue;let o=H.join(e.worktreesDir,n.name);for(let s of Wr(o,{withFileTypes:!0})){if(!s.isDirectory())continue;let i=H.join(o,s.name);r.push(...rs(i,e,t,{runId:n.name,worker:s.name}))}}return r}function os(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;Dr(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:Nt(a,e.now)})))}if(!t||!Dr(e.worktreesDir))return n;let s=new Set;for(let i of e.index.values())s.add(H.resolve(i.worktreePath));for(let i of Wr(e.worktreesDir,{withFileTypes:!0})){if(!i.isDirectory()||e.runIdFilter&&i.name!==e.runIdFilter)continue;let a=H.join(e.worktreesDir,i.name),u;try{u=Wr(a,{withFileTypes:!0})}catch{continue}for(let l of u){if(!l.isDirectory())continue;let c=H.resolve(H.join(a,l.name));o.has(c)||s.has(c)||ts(c,e.harnessRoot)&&(o.add(c),n.push({kind:"remove_worktree",path:c,bytes:null,runId:i.name,worker:l.name,ageMs:Nt(c,e.now)}))}}return n}import{existsSync as as,readdirSync as ss,statSync as Ru}from"node:fs";import Ae from"node:path";var yu=[{dirName:"node_modules",kind:"remove_node_modules"},{dirName:".next",kind:"remove_next_cache"}];function bu(e,r){try{let t=Ru(e).mtimeMs;return Math.max(0,r-t)}catch{return 0}}function Su(e,r){let t=Ae.relative(r,e);return t===""||!t.startsWith("..")&&!Ae.isAbsolute(t)}function vu(e,r,t,n,o,s){if(!as(n))return;let i=Ae.resolve(n);r.has(i)||Su(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:bu(i,t.now)}))}function is(e,r,t,n,o){for(let s of yu)vu(e,r,t,Ae.join(n,s.dirName),s.kind,o)}function us(e){let r=[],t=new Set;for(let n of e.index.values())e.runIdFilter&&n.runId!==e.runIdFilter||is(r,t,e,n.worktreePath,{runId:n.runId,worker:n.workerName,repo:n.run.repo});if(!e.includeOrphans||!as(e.worktreesDir))return r;for(let n of ss(e.worktreesDir,{withFileTypes:!0})){if(!n.isDirectory()||e.runIdFilter&&n.name!==e.runIdFilter)continue;let o=Ae.join(e.worktreesDir,n.name),s;try{s=ss(o,{withFileTypes:!0})}catch{continue}for(let i of s){if(!i.isDirectory())continue;let a=Ae.join(o,i.name);is(r,t,e,a,{runId:n.name,worker:i.name})}}return r}K();import{existsSync as ls,statSync as _u}from"node:fs";import L from"node:path";function xu(e,r){try{let t=_u(e).mtimeMs;return Math.max(0,r-t)}catch{return 0}}function Eu(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 Cu(e,r){let t=L.relative(L.resolve(r),L.resolve(e));return t!==""&&!t.startsWith("..")&&!L.isAbsolute(t)}var wu=200;function cs(e){if(!e.includeOrphans||!ls(e.worktreesDir))return[];let r=new Set;for(let s of e.index.values())s.run.repo&&r.add(L.resolve(s.run.repo));let t=new Set;for(let s of e.index.values())t.add(L.resolve(s.worktreePath));let n=[],o=new Set;for(let s of r){let i=0,a;try{a=ye(s,["worktree","list","--porcelain"],{allowFailure:!0})}catch{continue}let u=Eu(a);for(let l of u){if(i>=wu)break;let c=L.resolve(l.path);if(c===L.resolve(s)||!Cu(c,e.worktreesDir)||t.has(c)||o.has(c)||!ls(c))continue;let m=L.relative(e.worktreesDir,c).split(L.sep),g=m[0],p=m[1]??"unknown";o.add(c),i+=1,n.push({kind:"remove_worktree",path:c,bytes:null,runId:g,worker:p,repo:s,ageMs:xu(c,e.now)})}}return n}ae();b();import He from"node:path";function ds(e,r){let t=He.resolve(r),n=new Map;for(let[o,s]of e){let i=s.harnessRoot?He.resolve(s.harnessRoot):null;i&&i!==t||n.set(o,s)}return n}function ps(e){let r=new Map;for(let t of ar(e))for(let n of Object.keys(t.workers||{})){let o=He.join(De(e,t.id),"workers",v(n),"worker.json"),s=_(o,void 0);s?.worktreePath&&r.set(He.resolve(s.worktreePath),{harnessRoot:e,worktreePath:He.resolve(s.worktreePath),runId:t.id,workerName:n,run:t,worker:s})}return r}function Le(e){let r=process.env[e];return r==="1"||r==="true"||r==="yes"}function ke(e,r){let t=process.env[e];if(!t)return r;let n=Number(t);return Number.isFinite(n)&&n>=0?n:r}function ms(e={}){let r=e.execute===!0||e.execute!==!1&&Le("KYNVER_CLEANUP_EXECUTE"),t=e.finalizeStaleRuns!==!1&&!Le("KYNVER_CLEANUP_SKIP_FINALIZE"),n=e.nodeModulesAgeMs??ke("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??ke("KYNVER_CLEANUP_WORKTREES_AGE_MS",0),i=e.terminalWorktreesAgeMs??ke("KYNVER_CLEANUP_TERMINAL_WORKTREES_AGE_MS",216e5),a=e.runDirectoriesAgeMs??ke("KYNVER_CLEANUP_RUN_DIRECTORIES_AGE_MS",36e5),u=e.maxActionsPerSweep??ke("KYNVER_CLEANUP_MAX_ACTIONS_PER_SWEEP",120),l=e.includeOrphans===!0||Le("KYNVER_CLEANUP_INCLUDE_ORPHANS"),d=Le("KYNVER_CLEANUP_SCOPE_ALL")||process.env.KYNVER_CLEANUP_SCOPE==="all"?e.runIdFilter:e.runIdFilter??(process.env.KYNVER_CLEANUP_RUN_ID||void 0),m=e.accountBytes!==!1&&!Le("KYNVER_CLEANUP_SKIP_BYTE_ACCOUNTING"),g=ke("KYNVER_CLEANUP_STORAGE_ENTRY_CAP",2e3),p=e.storagePerRunEntryCap!==void 0?e.storagePerRunEntryCap:m&&g>0?g:null,R=ke("KYNVER_CLEANUP_BYTE_ENTRY_CAP",2e3),S=e.byteAccountingEntryCap??(Number.isFinite(R)&&R>0?Math.floor(R):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:m,storagePerRunEntryCap:p,byteAccountingEntryCap:S}}K();import{existsSync as Mt,statSync as Pu}from"node:fs";import Nr from"node:path";b();var Iu=1800*1e3;function fs(e){let r=e.now??Date.now(),t=e.heartbeatFreshMs??Iu;if(!Mt(e.worktreePath))return null;if(e.runId&&e.workerName){let l=Nr.join(e.harnessRoot,"runs",e.runId,"workers",e.workerName),c=_(Nr.join(l,"worker.json"),void 0);if(c&&Et(c,r,t))return"active_worker";if(!c){let d=Nr.join(l,"heartbeat.jsonl");if(Mt(d))try{let m=r-Pu(d).mtimeMs;if(Number.isFinite(m)&&m>=0&&m<t)return"active_worker"}catch{}}}let n=Nr.join(e.worktreePath,".git");if(!Mt(n))return null;let o=w(e.worktreePath,["status","--porcelain"]);if(o.status!==0)return"pr_or_unmerged_commits";let s=o.stdout.split(`
|
|
15
|
+
`).map(l=>l.trim()).filter(l=>l.length>0);if(D(s).length>0)return"dirty_worktree";let i=w(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=w(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}Y();import{existsSync as Ou,readdirSync as gs,statSync as Du}from"node:fs";import Wu from"node:path";function hs(e={}){let r=O(e.harnessRoot??ee()),t=we(r),n=e.now??Date.now(),o=new Date(n).toISOString();if(!Ou(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=gs(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=Wu.join(t,c.name);try{let m=Du(d);u=u===null?m.mtimeMs:Math.min(u,m.mtimeMs)}catch{}try{for(let m of gs(d,{withFileTypes:!0}))m.isDirectory()&&(a+=1)}catch{}if(s!==null&&e.perRunEntryCap!==null){let m=e.perRunEntryCap??5e4;if(m<=0)s=null;else{let g=X(d,m);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}}Y();import{existsSync as Nu}from"node:fs";import{homedir as Mu}from"node:os";import ks from"node:path";var Tu=["/var/tmp/kynver-harness",ks.join(Mu(),".openclaw","harness")];function Tt(e,r,t){if(!t?.trim())return;let n=O(t.trim());e.has(n)||(e.add(n),r.push(n))}function Uu(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 Rs(e={}){let r=new Set,t=[];Tt(r,t,e.harnessRoot??ee());let n=process.env.KYNVER_CLEANUP_EXTRA_ROOTS?.split(",").map(o=>o.trim()).filter(Boolean);for(let o of n??[])Tt(r,t,o);if(Uu(e))for(let o of Tu){let s=ks.resolve(o);!r.has(s)&&Nu(s)&&Tt(r,t,s)}return t}sr();function Ku(e){let r=process.env[e];return r==="1"||r==="true"||r==="yes"}function Bu(e,r){let t=process.env[e];if(!t)return r;let n=Number(t);return Number.isFinite(n)?n:r}function ys(e={}){let r=e.diskPath?.trim()||process.env.KYNVER_DISK_GUARD_PATH?.trim()||"/",t=Bu("KYNVER_DISK_GUARD_MAX_USED_PERCENT",75),n=or({...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 bs(e,r){if(!r.pressured)return e;let t=e.execute||!Ku("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}}nr();import{unlinkSync as Fu}from"node:fs";function Mr(e){let r=process.env[e];return r==="1"||r==="true"||r==="yes"}function Ss(e,r){let t=process.env[e];if(!t)return r;let n=Number(t);return Number.isFinite(n)?n:r}function Hu(e,r,t){return e.length===0?[]:t?[...e]:e.length<=r?[]:e.slice(r)}function vs(e={}){let r=e.execute===!0||Mr("KYNVER_WSL_CRASH_DUMP_EXECUTE")||Mr("KYNVER_CLEANUP_EXECUTE"),t=e.purgeAll===!0||Mr("KYNVER_WSL_CRASH_DUMP_PURGE_ALL"),n=Math.max(0,e.keepNewest??Ss("KYNVER_WSL_CRASH_DUMP_KEEP_NEWEST",t?0:1)),o=ve({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=Hu(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{Fu(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 _s(e){return e?Mr("KYNVER_WSL_CRASH_DUMP_CLEANUP")||!e.ok?!0:e.dumpCount>Ss("KYNVER_WSL_CRASH_DUMP_KEEP_NEWEST",1):!1}nr();function N(e,r){if(process.env.KYNVER_CLEANUP_QUIET==="1")return;let t=r?`: ${r}`:"";console.error(`[kynver cleanup] ${e}${t}`)}K();var Tr=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=w(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 Lu}from"node:child_process";import{existsSync as ju}from"node:fs";import $u from"node:path";var Gu=5e3;function Yu(e,r){if(!ju($u.join(e,".git")))return{status:null,stdout:"",stderr:"",error:"not_a_git_repo"};try{let t=Lu("git",r,{cwd:e,encoding:"utf8",timeout:Gu}),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 xs(e){let r=Yu(e,["status","--short"]);return r.error==="not_a_git_repo"?[]:r.error==="git_timeout"||r.status!==0?null:r.stdout.split(`
|
|
16
|
+
`).map(t=>t.trim()).filter(Boolean)}var Ur=class{cache=new Map;porcelain(r){let t=r,n=this.cache.get(t);if(n!==void 0)return n;let o=xs(t)??[];return this.cache.set(t,o),o}};var Kr=class{cache=new Map;derive(r){let t=this.cache.get(r.id);if(t!==void 0)return t;let n=ge(r);return this.cache.set(r.id,n),n}};function Vu(e){let r={};for(let t of e)r[t.kind]=(r[t.kind]??0)+1;return r}function Es(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:Vu(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 zu(e={}){let r=e.harnessRoot?O(e.harnessRoot):ee(),t=Rs({harnessRoot:r}),n=e.now??Date.now();return{harnessRoot:r,scanRoots:t,now:n}}function Ju(e){return typeof e=="string"?{reason:e}:e}function Pe(e,r,t,n){e.push({path:r,reason:t,...n?{detail:n}:{}})}function Br(e,r,t){return!r||e.bytes!=null?e:{...e,bytes:X(e.path,t)}}function Cs(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 Xu(e,r){return e.kind==="remove_next_cache"?qo(e,r):Xo(e,r)}function qu(e,r,t){return e.kind==="remove_next_cache"?Ir(e.path,r,t):Pr(e.path,r,t)}function Zu(e){let r=new Map;for(let t of e)for(let[n,o]of ps(t))r.set(n,o);return r}function ws(e,r){return e.runId&&e.worker?M.join(r,e.runId,e.worker):M.resolve(e.path,"..")}function Qu(e={}){let r=ms(e),t=ys();r=bs(r,t);let n=zu(e);N("scan",`${n.scanRoots.length} harness root(s)`);let o=Oo(n.scanRoots,n.now),s=r.finalizeStaleRuns?mo().map(h=>({runId:h.runId,from:h.from,to:h.to})):[];s.length>0&&N("finalize",`${s.length} stale run(s) marked terminal`),N("index","building worktree index");let i=Zu(n.scanRoots);N("index",`${i.size} indexed worktree(s)`);let a={runTerminalCache:new Kr,gitStatusCache:new Ur,gitRevCache:new Tr},u=[],l=[],c=new Set,d=r.maxActionsPerSweep,m=()=>l.length>=d;for(let h of n.scanRoots){if(m())break;N("root",h);let q=M.join(h,"worktrees"),$e=ds(i,h),Ge={harnessRoot:h,worktreesDir:q,nodeModulesAgeMs:r.nodeModulesAgeMs,worktreesAgeMs:r.worktreesAgeMs,includeOrphans:r.includeOrphans,runIdFilter:r.runIdFilter,index:$e,now:n.now},Fr=r.scanDependencyCaches?us(Ge):[];N("dependency",r.scanDependencyCaches?`${Fr.length} cache candidate(s) at ${h}`:"skipped (worktree-only sweep)");let Hr=0;for(let T of Fr){if(m())break;Hr+=1,Hr%50===0&&N("dependency",`${Hr}/${Fr.length} evaluated`);let x=M.resolve(T.path);if(c.has(x))continue;c.add(x);let k={...T,path:x},I=qu(k,h,q);if(I){Pe(u,k.path,I),l.push({...k,executed:!1,skipped:!0,skipReason:I});continue}let U=ws(k,q),Re=$e.get(M.resolve(U))??null,F=wt({indexed:Re,includeOrphans:!0,nodeModulesAgeMs:r.nodeModulesAgeMs,ageMs:k.ageMs,worktreePath:U,activeWorktreePaths:o.activeWorktreePaths,diskPressure:r.diskPressure,gitStatusCache:a.gitStatusCache});if(F){Pe(u,k.path,F),l.push({...k,executed:!1,skipped:!0,skipReason:F});continue}l.push(Xu(Br(k,r.accountBytes,r.byteAccountingEntryCap),r.execute))}if(r.scanDependencyCaches)for(let T of ns(Ge)){if(m())break;let x=M.resolve(T.path);if(c.has(x))continue;c.add(x);let k={...T,path:x},I=Or(k.path,h,q);if(I){Pe(u,k.path,I),l.push({...k,executed:!1,skipped:!0,skipReason:I});continue}let U=ws(k,q),Re=$e.get(M.resolve(U))??null,F=wo({indexed:Re,includeOrphans:!0,nodeModulesAgeMs:r.nodeModulesAgeMs,ageMs:k.ageMs,worktreePath:U,activeWorktreePaths:o.activeWorktreePaths,diskPressure:r.diskPressure,gitStatusCache:a.gitStatusCache});if(F){Pe(u,k.path,F),l.push({...k,executed:!1,skipped:!0,skipReason:F});continue}l.push(Zo(Br(k,r.accountBytes,r.byteAccountingEntryCap),r.execute))}let Lr=[...os(Ge),...cs(Ge)];N("worktrees",`${Lr.length} candidate(s) at ${h}`);let Ut=new Set,jr=0;for(let T of Lr){if(m())break;jr+=1,jr%50===0&&N("worktrees",`${jr}/${Lr.length} evaluated`);let x=M.resolve(T.path);if(Ut.has(x))continue;Ut.add(x);let k={...T,path:x},I=$e.get(M.resolve(k.path))??null,U=I?null:fs({worktreePath:k.path,harnessRoot:h,runId:k.runId,workerName:k.worker,now:n.now}),Re=Co({indexed:I,worktreePath:M.resolve(k.path),includeOrphans:r.includeOrphans,worktreesAgeMs:r.worktreesAgeMs,terminalWorktreesAgeMs:r.terminalWorktreesAgeMs,ageMs:k.ageMs,orphanSafety:U,worktreeRemovalGuard:e.worktreeRemovalGuard,liveness:a,now:n.now,harnessRoot:h,writeSalvageEvidence:r.execute});if(Re){let{reason:F,detail:As}=Ju(Re);Pe(u,k.path,F,As),l.push({...k,executed:!1,skipped:!0,skipReason:F});continue}l.push(es(Br(k,r.accountBytes,r.byteAccountingEntryCap),r.execute))}if(!m()&&r.runDirectoriesAgeMs>=0)for(let T of Ko({harnessRoot:h,worktreesDir:q,runDirectoriesAgeMs:r.runDirectoriesAgeMs,runIdFilter:r.runIdFilter,activeGuards:o,now:n.now})){if(m())break;let x=M.resolve(T.path);if(c.has(x))continue;c.add(x);let k={...T,path:x},I=k.runId??M.basename(x),U=Uo({harnessRoot:h,runId:I,runPath:x,ageMs:k.ageMs,runDirectoriesAgeMs:r.runDirectoriesAgeMs,activeGuards:o});if(U){Pe(u,k.path,U),l.push({...k,executed:!1,skipped:!0,skipReason:U});continue}l.push(Qo(Br(k,r.accountBytes,r.byteAccountingEntryCap),r.execute))}}let g=0,p=0,R=0,S=0,y=0,A=0;for(let h of l)h.bytes&&(g+=h.bytes),!h.skipped&&!h.executed&&h.bytes&&(R+=h.bytes),h.executed?(y+=1,S+=h.bytes??0,h.kind==="remove_run_directory"&&(p+=1)):h.skipped&&(A+=1,h.skipReason==="dry_run"&&h.bytes&&(R+=h.bytes));let j=r.accountBytes?hs({harnessRoot:n.harnessRoot,now:n.now,perRunEntryCap:r.storagePerRunEntryCap}):void 0,B=ve(),je=r.execute&&_s(B),$=je?vs({execute:!0}):null,te=B?{observed:!0,execute:je,dumpCount:B.dumpCount,totalBytes:B.totalBytes,removedCount:$?.removed.length??0,removedBytes:$?.removedBytes??0,executables:B.executables,path:B.path,reason:B.reason}:void 0;$&&$.removed.length>0&&(S+=$.removedBytes,y+=$.removed.length,N("wsl-crashes",`removed ${$.removed.length} dump(s), ${$.removedBytes} bytes`)),N("complete",`${l.length} action(s), ${A} skipped, ${y} removed`);let ne=Po(l,u),P=Es({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:R,removedBytes:S,removedPaths:y,skippedPaths:A,skipReasons:Cs(l,u)},...j?{storage:j}:{},...ne.length>0?{preservedLivePaths:ne}:{},...p>0?{removedRunDirectories:p}:{},...te?{wslCrashDumps:te}:{}});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:R,removedBytes:S,removedPaths:y,skippedPaths:A,skipReasons:Cs(l,u)},...j?{storage:j}:{},...ne.length>0?{preservedLivePaths:ne}:{},...p>0?{removedRunDirectories:p}:{},...te?{wslCrashDumps:te}:{},compactSummary:P}}export{Ar as DEFAULT_MAX_ACTIONS_PER_SWEEP,At as DEFAULT_NODE_MODULES_AGE_MS,Pt as DEFAULT_RUN_DIRECTORIES_AGE_MS,wr as DEFAULT_WORKTREES_AGE_MS,Qu as runHarnessCleanup};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var r=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(o){throw n=[o],o}};import{homedir as
|
|
1
|
+
var r=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(o){throw n=[o],o}};import{homedir as F}from"node:os";import $ from"node:path";function Oe(e){return e==="~"?F():e.startsWith("~/")||e.startsWith("~\\")?$.join(F(),e.slice(2)):e}function l(e){return $.resolve(Oe(e))}var c=r(()=>{"use strict"});function L(e){return process.platform!=="win32"?e:{windowsHide:!0,...e}}var s=r(()=>{"use strict"});var Ie,hr,Pe,yr,H=r(()=>{"use strict";Ie=["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"],hr=new Set(Ie),Pe=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],yr=new Set(Pe)});import{spawnSync as Ke}from"node:child_process";function S(e,t){try{let n=Ke("git",t,L({cwd:e,encoding:"utf8"}));return{status:n.status,stdout:n.stdout||"",stderr:n.stderr||"",error:n.error?n.error.message:null}}catch(n){return{status:null,stdout:"",stderr:"",error:n.message}}}var g=r(()=>{"use strict";c();s();H()});var _=r(()=>{"use strict";g()});import{existsSync as E,readFileSync as Y}from"node:fs";import{homedir as Ue}from"node:os";import i from"node:path";import{fileURLToPath as De}from"node:url";function Te(e){let t=i.join(e,"package.json");if(!E(t))return null;try{let n=JSON.parse(Y(t,"utf8"));return typeof n.name=="string"?n.name.trim():null}catch{return null}}function V(e){return Te(e)==="kynver"}function j(e){let t=i.resolve(e);if(!E(t))return null;let n=S(t,["rev-parse","--show-toplevel"]);if(n.status!==0)return null;let o=n.stdout.trim();return o.length?i.resolve(o):null}function Be(e=import.meta.url){let t=i.dirname(De(e));for(let n=0;n<8;n+=1){let o=i.join(t,"package.json");if(E(o))try{if(JSON.parse(Y(o,"utf8")).name==="@kynver-app/runtime")return t}catch{}let a=i.dirname(t);if(a===t)break;t=a}return null}function v(e,t,n,o,a){if(!n)return;let u=i.resolve(n);e.has(u)||(a?.requireMonorepo??!0)&&!V(u)||(e.add(u),t.push({repo:u,source:o}))}function Me(e){let t=e?.cwd??process.cwd(),n=new Set,o=[];v(n,o,j(t),"cwd_git",{requireMonorepo:!1});let a=Be(e?.runtimeModuleUrl??import.meta.url);a&&v(n,o,j(a),"runtime_checkout");let u=Ue();for(let p of We)v(n,o,l(i.join(u,p)),"well_known_path");let B=i.resolve(e?.cwd??process.cwd());return o.filter(p=>{if(p.source!=="runtime_checkout"||!V(p.repo))return!0;let M=i.resolve(p.repo);return B===M||B.startsWith(`${M}${i.sep}`)})}function C(e){return Me(e)[0]??null}var We,h=r(()=>{"use strict";g();c();_();We=["Kynver","repos/Kynver","repos/kynver-source-main","code/Kynver","projects/Kynver"]});var A=r(()=>{"use strict";s()});var d=r(()=>{"use strict"});var y=r(()=>{"use strict"});var G=r(()=>{"use strict"});var Hr,jr,w=r(()=>{"use strict";Hr=25*1024*1024*1024,jr=12*1024*1024*1024});var Jr,qr,z=r(()=>{"use strict";w();Jr=5*1024*1024*1024,qr=10*1024*1024*1024});var nn,tn,O=r(()=>{"use strict";z();w();nn=30*1024*1024*1024,tn=15*1024*1024*1024});var q=r(()=>{"use strict";s()});import Fe from"node:path";var fn,I=r(()=>{"use strict";c();q();fn=Fe.join(".openclaw","harness")});var R=r(()=>{"use strict";m();d();y();k();I()});var Q=r(()=>{"use strict";m();I();R();s()});var N=r(()=>{"use strict";Q();s()});var ee=r(()=>{"use strict";N();s()});var re=r(()=>{"use strict"});var ne=r(()=>{"use strict";re();s()});var te=r(()=>{"use strict"});var oe=r(()=>{"use strict";te()});var se=r(()=>{"use strict";oe();s()});var ie=r(()=>{"use strict"});var ae=r(()=>{"use strict"});var ue=r(()=>{"use strict"});var K=r(()=>{"use strict"});var le=r(()=>{"use strict"});var ce=r(()=>{"use strict";K();le()});var de=r(()=>{"use strict";ne();se();ie();ae();g();ue();ce();K();s()});var me=r(()=>{"use strict";de()});var ze,Je,fe=r(()=>{"use strict";G();m();d();y();k();O();N();ee();me();s();ze=500*1024*1024,Je=4*1024*1024*1024});var k=r(()=>{"use strict";fe()});import{homedir as qe}from"node:os";import Xe from"node:path";var pe,U=r(()=>{"use strict";pe=Xe.join(qe(),".kynver",".env")});var ge=r(()=>{"use strict"});var he=r(()=>{"use strict";ge()});var ye=r(()=>{"use strict"});var D=r(()=>{"use strict";he();ye()});var be=r(()=>{"use strict"});var Re=r(()=>{"use strict";be()});var x=r(()=>{"use strict";U();c();m();D();Re()});var Se=r(()=>{"use strict";d();d()});var _e=r(()=>{"use strict";U();D();x()});var Ee=r(()=>{"use strict";h();d();Se();m();x();_e();A();R()});var nr,os,Ce=r(()=>{"use strict";nr=["claude","cursor","codex","gemini","gemini-api","openai-compatible"],os=nr.join("|")});import{existsSync as tr,mkdirSync as ms,readFileSync as or,writeFileSync as fs}from"node:fs";import{homedir as sr,totalmem as gs}from"node:os";import W from"node:path";function ir(e){return{...e,...e.harnessRoot?.trim()?{harnessRoot:l(e.harnessRoot.trim())}:{},...e.defaultRepo?.trim()?{defaultRepo:l(e.defaultRepo.trim())}:{}}}function f(){if(!tr(Ae))return{};try{return ir(JSON.parse(or(Ae,"utf8")))}catch{return{}}}var we,Ae,ws,Os,Is,m=r(()=>{"use strict";h();c();A();d();y();k();O();x();Ee();Ce();R();we=W.join(sr(),".kynver"),Ae=W.join(we,"config.json"),ws=W.join(we,"credentials");Os=500*1024*1024,Is=4*1024*1024*1024});m();h();c();_();import ar from"node:path";function ur(e){return ar.resolve(l(e.trim()))}function T(e,t,n){let o=e?.trim();return o?{repo:ur(o),source:t,persistedInConfig:n}:null}function lr(e){return e?{repo:e.repo,source:e.source,persistedInConfig:!1}:null}function cr(e={}){let t=e.env??process.env,n=e.config??f(),o=T(n.defaultRepo,"config",!0);if(o)return o;let a=T(t.KYNVER_DEFAULT_REPO,"env_default_repo",!1);if(a)return a;let u=T(t.KYNVER_HARNESS_REPO,"env_harness_repo",!1);return u||lr(C({cwd:e.cwd,runtimeModuleUrl:e.runtimeModuleUrl}))}export{cr as resolveDefaultRepo};
|