@kynver-app/runtime 0.2.130 → 0.2.138

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