@kynver-app/runtime 0.2.150 → 0.2.151

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 P=(e,r,t)=>()=>{if(t)throw t[0];try{return e&&(r=e(e=0)),r}catch(n){throw t=[n],n}};import{spawnSync as Kb}from"node:child_process";function jb(e){return["/PID",String(e),"/T","/F"]}function Vb(e){return e.error?{method:"taskkill",outcome:"failed",detail:e.error.message}:e.status===0?{method:"taskkill",outcome:"signalled"}:e.status===Hb||/not found/i.test(e.stderr)?{method:"taskkill",outcome:"not_found"}:{method:"taskkill",outcome:"failed",detail:`taskkill exit ${e.status??"null"}: ${e.stderr.trim().slice(0,300)}`}}function Gb(e){let r=Kb("taskkill",e,{encoding:"utf8",windowsHide:!0,stdio:["ignore","pipe","pipe"],timeout:$b});return{status:r.status,stderr:r.stderr??"",...r.error?{error:r.error}:{}}}function Yb(e){return Number.isInteger(e)&&e>0}function Me(e,r="SIGTERM",t={}){if(!Yb(e))return{method:"none",outcome:"not_found"};if((t.platform??process.platform)==="win32"){let s=t.runTaskkill??Gb;return Vb(s(jb(e)))}let o=t.kill??((s,i)=>{process.kill(s,i)});try{return o(-e,r),{method:"group",outcome:"signalled"}}catch{}try{return o(e,r),{method:"pid",outcome:"signalled"}}catch(s){let i=s.code;return i==="ESRCH"?{method:"pid",outcome:"not_found"}:{method:"pid",outcome:"failed",detail:i??s.message}}}function ce(e=process.platform){return e!=="win32"}var Hb,$b,aa=P(()=>{"use strict";Hb=128,$b=15e3});import{existsSync as qb,mkdirSync as Jb,readFileSync as td,readdirSync as vL,renameSync as zb,rmSync as Xb,statSync as nd,writeFileSync as Qb}from"node:fs";import{randomBytes as Zb}from"node:crypto";import eS from"node:path";function Je(e){console.error(e),process.exit(1)}function ae(e){return process.platform!=="win32"?e:{windowsHide:!0,...e}}function Rr(e,r){return e||Je(`missing ${r}`),e}function Cn(e){try{return JSON.parse(e)}catch{return null}}function I(e,r){try{return JSON.parse(td(e,"utf8"))}catch(t){if(arguments.length>1)return r;Je(`failed to read ${e}: ${t.message}`)}}function ue(e,r){Jb(eS.dirname(e),{recursive:!0});let t=`${e}.${process.pid}.${Zb(4).toString("hex")}.tmp`;try{Qb(t,`${JSON.stringify(r,null,2)}
2
- `),zb(t,e)}catch(n){try{Xb(t,{force:!0})}catch{}throw n}}function x(e){return String(e||"").toLowerCase().replace(/[^a-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"worker"}function Yo(e){return String(e).replace(/\/+$/,"")}function qo(e){try{return nd(e).size}catch{return 0}}function Jo(e){try{return nd(e).mtime.toISOString()}catch{return null}}function Mt(e,r){return qb(e)?td(e,"utf8").split(`
1
+ var P=(e,r,t)=>()=>{if(t)throw t[0];try{return e&&(r=e(e=0)),r}catch(n){throw t=[n],n}};import{spawnSync as Kb}from"node:child_process";function jb(e){return["/PID",String(e),"/T","/F"]}function Vb(e){return e.error?{method:"taskkill",outcome:"failed",detail:e.error.message}:e.status===0?{method:"taskkill",outcome:"signalled"}:e.status===Hb||/not found/i.test(e.stderr)?{method:"taskkill",outcome:"not_found"}:{method:"taskkill",outcome:"failed",detail:`taskkill exit ${e.status??"null"}: ${e.stderr.trim().slice(0,300)}`}}function Gb(e){let r=Kb("taskkill",e,{encoding:"utf8",windowsHide:!0,stdio:["ignore","pipe","pipe"],timeout:$b});return{status:r.status,stderr:r.stderr??"",...r.error?{error:r.error}:{}}}function Yb(e){return Number.isInteger(e)&&e>0}function Me(e,r="SIGTERM",t={}){if(!Yb(e))return{method:"none",outcome:"not_found"};if((t.platform??process.platform)==="win32"){let s=t.runTaskkill??Gb;return Vb(s(jb(e)))}let o=t.kill??((s,i)=>{process.kill(s,i)});try{return o(-e,r),{method:"group",outcome:"signalled"}}catch{}try{return o(e,r),{method:"pid",outcome:"signalled"}}catch(s){let i=s.code;return i==="ESRCH"?{method:"pid",outcome:"not_found"}:{method:"pid",outcome:"failed",detail:i??s.message}}}function ce(e=process.platform){return e!=="win32"}var Hb,$b,aa=P(()=>{"use strict";Hb=128,$b=15e3});import{existsSync as qb,mkdirSync as Jb,readFileSync as td,readdirSync as vL,renameSync as zb,rmSync as Xb,statSync as nd,writeFileSync as Qb}from"node:fs";import{randomBytes as Zb}from"node:crypto";import eS from"node:path";function Je(e){console.error(e),process.exit(1)}function ae(e){return process.platform!=="win32"?e:{windowsHide:!0,...e}}function vr(e,r){return e||Je(`missing ${r}`),e}function Pn(e){try{return JSON.parse(e)}catch{return null}}function I(e,r){try{return JSON.parse(td(e,"utf8"))}catch(t){if(arguments.length>1)return r;Je(`failed to read ${e}: ${t.message}`)}}function ue(e,r){Jb(eS.dirname(e),{recursive:!0});let t=`${e}.${process.pid}.${Zb(4).toString("hex")}.tmp`;try{Qb(t,`${JSON.stringify(r,null,2)}
2
+ `),zb(t,e)}catch(n){try{Xb(t,{force:!0})}catch{}throw n}}function x(e){return String(e||"").toLowerCase().replace(/[^a-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"worker"}function qo(e){return String(e).replace(/\/+$/,"")}function Jo(e){try{return nd(e).size}catch{return 0}}function zo(e){try{return nd(e).mtime.toISOString()}catch{return null}}function Wt(e,r){return qb(e)?td(e,"utf8").split(`
3
3
  `).slice(-r).join(`
4
- `):""}function zo(e){Atomics.wait(new Int32Array(new SharedArrayBuffer(4)),0,0,e)}function Y(e){if(!e)return!1;try{return process.kill(e,0),!0}catch{return!1}}function od(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 la(e){return Math.max(0,Math.round((Date.now()-e)/1e3))}var O=P(()=>{"use strict";aa()});import{existsSync as rS,readFileSync as tS}from"node:fs";import{homedir as nS}from"node:os";import oS from"node:path";function ua(e){return!e||typeof e!="object"||Array.isArray(e)?null:e}function ca(e){return typeof e=="string"&&e.trim()?e:null}function sd(e){let r=ua(e);if(!r)return null;let t=r.desiredState;if(t!=="running"&&t!=="paused"&&t!=="stopped")return null;let n=r.policyVersion;if(typeof n!="number"||!Number.isInteger(n)||n<0)return null;let o=ca(r.requestedAt);return o?{desiredState:t,policyVersion:n,requestedAt:o,requestedByLabel:ca(r.requestedByLabel),reason:ca(r.reason)}:null}function id(e){let r=ua(ua(e)?.response);return!r||r.runtimeControl===void 0?null:sd(r.runtimeControl)}function ad(e,r=nS()){let t=e.replace(/[^A-Za-z0-9_-]/g,"_");return oS.join(r,".kynver",`runtime-control-${t}.json`)}function ld(e,r,t){try{let n=Wt(e,t);if(n&&n.policyVersion>r.policyVersion)return;ue(ad(e,t),{contractVersion:1,agentOsId:e,control:r,deliveredAt:new Date().toISOString()})}catch{}}function Wt(e,r){try{let t=ad(e,r);if(!rS(t))return null;let n=JSON.parse(tS(t,"utf8"));return n.agentOsId!==e?null:sd(n.control)}catch{return null}}function Xo(e){return e?.desiredState??"running"}function sS(e){return e==="keeper"||e==="desktop"}function iS(e,r,t=!1){let n=Xo(e);return n==="paused"?"paused":n==="stopped"?t&&r===0?"stopped":"stopping":"running"}function cd(e){return e.control?{policyVersion:e.control.policyVersion,state:iS(e.control,e.inFlightWorkers,e.exiting),supervised:sS(e.supervisor),inFlightWorkers:Math.max(0,Math.floor(e.inFlightWorkers))}:null}function ud(e){let r=Xo(e);return r==="paused"?"runtime_paused":r==="stopped"?"runtime_stopped":null}function pd(e){dd=e}function md(){return dd}var dd,Pn=P(()=>{"use strict";O();dd=null});import{homedir as fd}from"node:os";import gd from"node:path";function aS(e){return e==="~"?fd():e.startsWith("~/")||e.startsWith("~\\")?gd.join(fd(),e.slice(2)):e}function We(e){return gd.resolve(aS(e))}var Vr=P(()=>{"use strict"});function gS(e){let r=e[fS];return r?new Set(r.split(/[\s,]+/).map(t=>t.trim()).filter(Boolean)):new Set}function hS(e,r={}){return cS.has(e)?!0:pS.has(e)||r.operatorAllow?.has(e)||mS.some(t=>e.endsWith(t))?!1:uS.some(t=>e.endsWith(t))}function da(e){let r=gS(e),t={...e};for(let n of Object.keys(t))hS(n,{operatorAllow:r})&&delete t[n];return t}var lS,cS,uS,dS,pS,mS,fS,pa=P(()=>{"use strict";lS=["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"],cS=new Set(lS),uS=["_SECRET","_API_KEY","_KEK","_KEY","_TOKEN","_PASSWORD","_PASSPHRASE","_SALT"],dS=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],pS=new Set(dS),mS=["_PUBLIC_KEY"],fS="KYNVER_WORKER_ENV_ALLOW"});import{spawnSync as kd}from"node:child_process";function Z(e,r,t={}){let n=kd("git",r,ae({cwd:e,encoding:"utf8"}));if(n.status!==0&&!t.allowFailure){let o=kS(e,r,n);if(t.throwError)throw new Error(o);Je(o)}return n.stdout||""}function kS(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 An(e){return Z(e,["status","--short"],{allowFailure:!0}).split(`
5
- `).map(r=>r.trim()).filter(Boolean)}function ne(e,r){try{let t=kd("git",r,ae({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 hd(e,r,t){let n=ne(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 Qo(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 Lt(n,"missing worktree path");let s=ne(e,["rev-parse","HEAD"]);if(s.status!==0)return Lt(n,s.error||s.stderr||s.stdout||"failed to resolve HEAD");let i;if(o)i=o;else{let p=ne(e,["rev-parse",n]);if(p.status!==0)return Lt(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 l=hd(e,i,a),c=hd(e,a,i),u=l.error||c.error||void 0;if(l.isAncestor==null||c.isAncestor==null)return{checked:!1,base:n,head:a,baseHead:i,baseIsAncestorOfHead:l.isAncestor,headIsAncestorOfBase:c.isAncestor,relation:"unknown",...u?{error:u}:{}};let d=l.isAncestor?"ahead":c.isAncestor?"merged":"diverged";return{checked:!0,base:n,head:a,baseHead:i,baseIsAncestorOfHead:l.isAncestor,headIsAncestorOfBase:c.isAncestor,relation:d,...u?{error:u}:{}}}function Lt(e,r,t=null){return{checked:!1,base:e,head:t,baseHead:null,baseIsAncestorOfHead:null,headIsAncestorOfBase:null,relation:"unknown",error:r}}var de=P(()=>{"use strict";Vr();O();pa()});import{homedir as yd}from"node:os";import ma from"node:path";function RS(e=yd()){return ma.join(e,".kynver",yS)}function vd(e,r=yd()){return ma.resolve(e)===ma.resolve(RS(r))}var yS,Rd,fa=P(()=>{"use strict";de();yS="workspace",Rd="main"});import{existsSync as ha,readFileSync as Sd}from"node:fs";import{homedir as vS}from"node:os";import ze from"node:path";import{fileURLToPath as bS}from"node:url";function wS(e){let r=ze.join(e,"package.json");if(!ha(r))return null;try{let t=JSON.parse(Sd(r,"utf8"));return typeof t.name=="string"?t.name.trim():null}catch{return null}}function wd(e){return wS(e)==="kynver"}function bd(e){let r=ze.resolve(e);if(!ha(r))return null;let t=ne(r,["rev-parse","--show-toplevel"]);if(t.status!==0)return null;let n=t.stdout.trim();return n.length?ze.resolve(n):null}function xS(e=import.meta.url){let r=ze.dirname(bS(e));for(let t=0;t<8;t+=1){let n=ze.join(r,"package.json");if(ha(n))try{if(JSON.parse(Sd(n,"utf8")).name==="@kynver-app/runtime")return r}catch{}let o=ze.dirname(r);if(o===r)break;r=o}return null}function ga(e,r,t,n,o){if(!t)return;let s=ze.resolve(t);e.has(s)||(o?.requireMonorepo??!0)&&!wd(s)||(e.add(s),r.push({repo:s,source:n}))}function _S(e){let r=e?.cwd??process.cwd(),t=new Set,n=[];ga(t,n,bd(r),"cwd_git",{requireMonorepo:!1});let o=xS(e?.runtimeModuleUrl??import.meta.url);o&&ga(t,n,bd(o),"runtime_checkout");let s=vS();for(let a of SS)ga(t,n,We(ze.join(s,a)),"well_known_path");let i=ze.resolve(e?.cwd??process.cwd());return n.filter(a=>{if(a.source!=="runtime_checkout"||!wd(a.repo))return!0;let l=ze.resolve(a.repo);return i===l||i.startsWith(`${l}${ze.sep}`)})}function Zo(e){return _S(e)[0]??null}var SS,In=P(()=>{"use strict";de();Vr();fa();SS=["Kynver","repos/Kynver","repos/kynver-source-main","code/Kynver","projects/Kynver"]});import{existsSync as Ed,readFileSync as ES}from"node:fs";import ct from"node:path";function PS(e){return e.includes("/")||e.includes("\\")}function AS(e){return(e.PATHEXT||CS).split(";").map(r=>r.trim().toLowerCase()).filter(r=>r.startsWith("."))}function IS(e){let r=Object.keys(e).find(t=>t.toUpperCase()==="PATH");return r?e[r]??"":""}function OS(e,r={}){let t=r.env??process.env,n=r.exists??Ed,o=AS(t),s=ct.win32.extname(e)!=="",i=a=>s?[a]:o.map(l=>`${a}${l}`);if(PS(e)||ct.win32.isAbsolute(e))return i(e).find(a=>n(a))??null;for(let a of IS(t).split(";").map(l=>l.trim()).filter(Boolean)){let l=i(ct.win32.join(a,e)).find(c=>n(c));if(l)return l}return null}function _d(e){return e.replace(/^[\\/]+/,"")}function NS(e){let r=e.split(/\r?\n/),t=new Map;for(let s of r){let i=TS.exec(s);i&&t.set(i[1].toUpperCase(),i[2])}let n=r.filter(s=>s.includes("%*")).pop();if(!n)return null;let o=xd.exec(n);if(o)return _d(o[1]);for(let s of n.matchAll(/%([A-Za-z_]\w*)%/g)){let i=t.get(s[1].toUpperCase()),a=i?xd.exec(i):null;if(a)return _d(a[1])}return null}function DS(e,r={}){if((r.platform??process.platform)!=="win32")return{executable:e,prefixArgs:[],kind:"passthrough"};let n=OS(e,r);if(!n)return{executable:e,prefixArgs:[],kind:"passthrough"};let o=ct.win32.extname(n).toLowerCase();if(o!==".cmd"&&o!==".bat")return{executable:n,prefixArgs:[],kind:"exe"};let s=r.readText??(m=>ES(m,"utf8")),i=r.exists??Ed,a;try{a=s(n)}catch{throw new On(n)}let l=NS(a);if(!l)throw new On(n);let c=ct.win32.dirname(n),u=ct.win32.join(c,l);if(!i(u))throw new On(n);let d=ct.win32.join(c,"node.exe");return{executable:i(d)?d:r.nodeExecutable??process.execPath,prefixArgs:[u],kind:"node-shim"}}function pe(e,r,t={}){let n=DS(e,t);return[n.executable,[...n.prefixArgs,...r]]}var On,CS,xd,TS,vr=P(()=>{"use strict";On=class extends Error{constructor(t){super(`${t} is a batch file that is not a Node CLI shim; it cannot be spawned without a shell. Point the matching KYNVER_*_BIN setting at the real .exe or the CLI's JS entry, or run the daemon inside WSL.`);this.shimPath=t;this.name="UnresolvableWindowsShimError"}shimPath},CS=".COM;.EXE;.BAT;.CMD";xd=/%~?dp0%?\\?([^"%\r\n]+?\.(?:c|m)?js)\b/i,TS=/^\s*SET\s+"?([A-Za-z_]\w*)=([^"\r\n]*)"?\s*$/i});var Cd=P(()=>{"use strict";vr()});function Id(e){let r=Yo(e);try{let t=new URL(r);return t.hostname.toLowerCase()===Pd?(t.hostname=`www.${Pd}`,Yo(t.toString())):r}catch{return r}}function Tn(e){if(e?.trim())return Id(Yo(e.trim()))}async function Nn(e,r,t=fetch){let n=Id(e),o=new Headers(r?.headers),s=0;for(;s<=Ad;){let i=await t(n,{...r,headers:o,redirect:"manual"});if(![301,302,303,307,308].includes(i.status))return i;let a=i.headers.get("location");if(!a)return i;let l=new URL(a,n);if(l.origin!==new URL(n).origin||l.username||l.password)throw await i.body?.cancel(),new Error("kynver API fetch refused unsafe redirect (origin change or embedded credentials)");let c=(r?.method??"GET").toUpperCase();if(!["GET","HEAD"].includes(c)&&i.status!==307&&i.status!==308)return i;await i.body?.cancel(),n=l.toString(),s+=1}throw new Error(`kynver API fetch exceeded ${Ad} redirects for ${e}`)}var Pd,Ad,Dn=P(()=>{"use strict";O();Pd="kynver.com";Ad=10});function ut(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 es(e,r){return e[r]?.trim()||null}function Od(e){let r=e?.split(":")[0]?.trim();return r?ut(r):null}function br(e=process.env,r={}){let t=[],n=Od(r.boxId),o=Od(es(e,"KYNVER_BOX_ID")),s=r.boxKind?.trim();if(s)return n&&n!==ut(s)&&t.push(`config.boxId=${r.boxId} conflicts with boxKind=${s}; using explicit boxKind=${s}`),{boxKind:ut(s),source:"config",slugInferenceBlocked:!1,warnings:t};let i=es(e,"KYNVER_BOX_KIND");if(i)return o&&o!==ut(i)&&t.push(`KYNVER_BOX_ID=${es(e,"KYNVER_BOX_ID")} conflicts with KYNVER_BOX_KIND=${i}; using explicit KYNVER_BOX_KIND=${i}`),{boxKind:ut(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=es(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}}function Sr(e={},r=process.env){return br(r,e).boxKind}var Le=P(()=>{"use strict"});function ka(e,r){return e==="forge"?4:Math.max(1,r)}function Mn(e,r){return e==="forge"?Math.min(Math.max(1,r),4):Math.max(1,r)}var rs=P(()=>{"use strict"});import{readFileSync as MS}from"node:fs";import Td from"node:os";function Nd(e){if(e!==void 0){let r=e.match(/^MemAvailable:\s+(\d+)\s*kB/m);return r?Number(r[1])*1024:Td.freemem()}if(process.platform==="linux")try{let t=MS("/proc/meminfo","utf8").match(/^MemAvailable:\s+(\d+)\s*kB/m);if(t)return Number(t[1])*1024}catch{}return Td.freemem()}var Dd=P(()=>{"use strict"});import{existsSync as WS,readFileSync as LS,statfsSync as BS}from"node:fs";function ya(){if(process.platform!=="linux")return!1;for(let e of["/proc/sys/kernel/osrelease","/proc/version"])try{if(!WS(e))continue;let r=LS(e,"utf8");if(/microsoft|wsl/i.test(r))return!0}catch{}return!1}function Md(e={}){if(!(e.forceWsl===void 0?ya():e.forceWsl))return null;let t=e.wslHostMount?.trim()||process.env.KYNVER_WSL_HOST_MOUNT?.trim()||Bt,n=e.wslHostFreeWarnBytes??US,o=e.wslHostFreeCriticalBytes??FS,s=e.statfs??BS,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),l=Number(i.blocks)*Number(i.bsize),c=l>0?(l-a)/l*100:100,u=a<n,d=a<o,p=!u&&!d,m=(a/(1024*1024*1024)).toFixed(1),f=null;return p||(f=`Windows host disk ${t} at ${d?"critical":"warning"}: ${m} GiB free (<${(d?o:n)/1024/1024/1024} GiB); WSL VHDX cannot grow safely. ${KS()}`),{ok:p,path:t,freeBytes:a,totalBytes:l,usedPercent:c,warnBelowBytes:n,criticalBelowBytes:o,reason:f,probeError:null}}function KS(){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 US,FS,Bt,Ra=P(()=>{"use strict";US=25*1024*1024*1024,FS=12*1024*1024*1024,Bt="/mnt/c"});import{execFileSync as Wd}from"node:child_process";import{existsSync as ns,readFileSync as Ld,readdirSync as HS,statSync as $S}from"node:fs";import va from"node:path";function ts(e,r){let t=process.env[e];if(!t)return r;let n=Number(t);return Number.isFinite(n)?n:r}function Bd(){let e=process.env.KYNVER_WSL_WIN_USER?.trim();if(e)return e;try{let n=Wd("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()||Bt;return r&&ns(va.join(t,"Users",r))?r:null}function qS(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()||Bt,n=e.windowsUser??Bd();return n?`${t.replace(/\\/g,"/").replace(/\/$/,"")}/Users/${n}/AppData/Local/Temp/wsl-crashes`:null}function JS(e){let r=/^wsl-crash-\d+-(\d+)-(.+)-(\d+)\.dmp$/i.exec(e);if(!r)return{executableHint:null,signal:null,pid:null};let t=Number(r[1]),n=r[2]??"",o=Number(r[3]),s=n.split("_").filter(Boolean);return{executableHint:s.length>0?s[s.length-1]:null,signal:Number.isFinite(o)?o:null,pid:Number.isFinite(t)?t:null}}function zS(){try{if(ns("/proc/sys/kernel/core_pattern"))return Ld("/proc/sys/kernel/core_pattern","utf8").trim()}catch{}try{return Wd("sysctl",["-n","kernel.core_pattern"],{encoding:"utf8",timeout:2e3,stdio:["ignore","pipe","ignore"]}).trim()||null}catch{return null}}function XS(e){return!!(e&&/wsl-capture-crash/i.test(e))}function QS(e,r=Bt){let t=va.join(r,"Users",e,".wslconfig");if(!ns(t))return{maxCrashDumpCount:null,crashDumpFolder:null};let n;try{n=Ld(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 l=a.indexOf("=");if(l<0)continue;let c=a.slice(0,l).trim().toLowerCase(),u=a.slice(l+1).trim();if(c==="maxcrashdumpcount"){let d=Number(u);o=Number.isFinite(d)?d:null}else c==="crashdumpfolder"&&(s=u.replace(/^["']|["']$/g,"")||null)}return{maxCrashDumpCount:o,crashDumpFolder:s}}function ZS(e){if(!ns(e))return[];let r=HS(e,{withFileTypes:!0}),t=[];for(let n of r){if(!n.isFile()||!n.name.toLowerCase().endsWith(".dmp"))continue;let o=va.join(e,n.name);try{let s=$S(o),i=JS(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 Ut(e={}){if(!(e.forceWsl===void 0?ya():e.forceWsl))return null;let t=e.hostMount?.trim()||process.env.KYNVER_WSL_HOST_MOUNT?.trim()||Bt,n=e.windowsUser??Bd(),o=e.warnBelowBytes??ts("KYNVER_WSL_CRASH_DUMP_WARN_BYTES",jS),s=e.criticalBelowBytes??ts("KYNVER_WSL_CRASH_DUMP_CRITICAL_BYTES",VS),i=e.warnCount??ts("KYNVER_WSL_CRASH_DUMP_WARN_COUNT",GS),a=e.criticalCount??ts("KYNVER_WSL_CRASH_DUMP_CRITICAL_COUNT",YS),l=(e.readCorePattern??zS)(),c=XS(l),u=null;n&&(u=(e.readWslConfig??QS)(n,t));let d=u?.maxCrashDumpCount??null,p=d===-1,m=qS({hostMount:t,windowsUser:n,crashDumpDir:e.crashDumpDir});if(!m)return{ok:!0,path:null,windowsUser:n,dumpCount:0,totalBytes:0,warnBelowBytes:o,criticalBelowBytes:s,warnCount:i,criticalCount:a,dumps:[],executables:[],corePattern:l,wslCaptureEnabled:c,maxCrashDumpCount:d,dumpsDisabledInWslConfig:p,reason:null,probeError:"windows_user_unresolved"};let f;try{f=(e.listDumps??ZS)(m)}catch($){return{ok:!1,path:m,windowsUser:n,dumpCount:0,totalBytes:0,warnBelowBytes:o,criticalBelowBytes:s,warnCount:i,criticalCount:a,dumps:[],executables:[],corePattern:l,wslCaptureEnabled:c,maxCrashDumpCount:d,dumpsDisabledInWslConfig:p,reason:`WSL crash dump probe failed at ${m}: ${$.message}`,probeError:$.message}}let y=f.reduce(($,C)=>$+C.bytes,0),k=f.length,b=[...new Set(f.map($=>$.executableHint).filter($=>!!$))],g=y>=s,h=y>=o,w=k>=a,E=k>=i,_=!(g||w||h||E),K=null;if(!_){let $=g||w?"critical":"warning",C=(y/1024**3).toFixed(1),re=b.length>0?b.join(", "):"unknown";K=`WSL crash dumps ${$}: ${k} file(s), ${C} GiB at ${m} (executables: ${re}). `+ew({wslCaptureEnabled:c,dumpsDisabledInWslConfig:p})}return{ok:_,path:m,windowsUser:n,dumpCount:k,totalBytes:y,warnBelowBytes:o,criticalBelowBytes:s,warnCount:i,criticalCount:a,dumps:f,executables:b,corePattern:l,wslCaptureEnabled:c,maxCrashDumpCount:d,dumpsDisabledInWslConfig:p,reason:K,probeError:null}}function ew(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 jS,VS,GS,YS,os=P(()=>{"use strict";Ra();jS=5*1024*1024*1024,VS=10*1024*1024*1024,GS=2,YS=4});import{statfsSync as rw}from"node:fs";function Gr(e={}){let r=e.diskPath?.trim()||"/",t=e.diskFreeWarnBytes??tw,n=e.diskFreeCriticalBytes??nw,o=e.diskMaxUsedPercent??ow,s=e.diskHardMaxUsedPercent??sw,i=rw(r),a=Number(i.bavail)*Number(i.bsize),l=Number(i.blocks)*Number(i.bsize),c=l>0?(l-a)/l*100:100,u=a<t,d=a<n,p=a<t*2,m=p&&c>o,f=p&&c>s,y=!u&&!d&&!m&&!f,k=e.skipWslHostCheck?null:Md(e.wslHost),b=e.skipWslCrashDumpCheck?null:Ut(e.wslCrashDumps),g=y&&(k?k.ok:!0)&&(b?b.ok:!0),h=null;return g||(h=[d?`free space below critical ${n} bytes`:null,u?`free space below warning ${t} bytes`:null,f?`used percent above hard cap ${s}%`:null,m?`used percent above cap ${o}%`:null,k&&!k.ok?k.reason:null,b&&!b.ok?b.reason:null].filter(Boolean).join("; ")),iw({ok:g,path:r,freeBytes:a,totalBytes:l,usedPercent:c,warnBelowBytes:t,criticalBelowBytes:n,maxUsedPercent:o,hardMaxUsedPercent:s,reason:h,wslHost:k,wslCrashDumps:b?{ok:b.ok,path:b.path,dumpCount:b.dumpCount,totalBytes:b.totalBytes,executables:b.executables,wslCaptureEnabled:b.wslCaptureEnabled,dumpsDisabledInWslConfig:b.dumpsDisabledInWslConfig,reason:b.reason,probeError:b.probeError}:null})}function iw(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 tw,nw,ow,sw,Wn=P(()=>{"use strict";os();Ra();tw=30*1024*1024*1024,nw=15*1024*1024*1024,ow=80,sw=90});import{existsSync as aw,readdirSync as lw}from"node:fs";import cw from"node:path";function ar(e){let r=new Set;for(let n of Object.keys(e.workers||{}))r.add(x(n));let t=cw.join(N(e.id),"workers");if(!aw(t))return[...r];for(let n of lw(t,{withFileTypes:!0}))n.isDirectory()&&r.add(x(n.name));return[...r]}var Ln=P(()=>{"use strict";B();O()});function ba(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 Ud(e){let r=e.trim();if(!r)return null;let t=ba(r);if(t)return t;let n=[],o=/```(?:json)?\s*([\s\S]*?)```/gi,s;for(;(s=o.exec(r))!==null;){let l=ba(s[1]??"");l&&n.push(l)}let i=r.indexOf("{"),a=r.lastIndexOf("}");if(i>=0&&a>i){let l=ba(r.slice(i,a+1));l&&n.push(l)}return n.length>0?n[n.length-1]:null}function Fd(e){let r=e.finalResult??e.final_result;if(r!=null)return typeof r=="string"?Ud(r)??(r.trim()||null):r;let t=typeof e.summary=="string"?e.summary.trim():"";if(!t)return null;let n=Ud(t);return n||t}var Kd=P(()=>{"use strict"});import{existsSync as uw,readFileSync as dw}from"node:fs";function Hd(e){return e==="complete"}function wr(e){return Hd(e.lastHeartbeatPhase)?e.terminalFinalResult!==void 0&&e.terminalFinalResult!==null?e.terminalFinalResult:e.lastHeartbeatSummary?.trim()||"completed":null}function me(e){let r={heartbeatCount:0,lastHeartbeatAt:null,lastHeartbeatPhase:null,lastHeartbeatSummary:null,terminalFinalResult:null,heartbeatBlocker:null,timestampAnomalies:[],lastBoxResourceSnapshot:null,lastPrEvidence:[]};if(!uw(e))return r;let t=Date.now()+pw,n=new Date(t).toISOString(),o=dw(e,"utf8").split(`
6
- `).filter(Boolean);for(let s of o){let i=Cn(s);if(!i||typeof i!="object"||Array.isArray(i))continue;let a=i;if(r.heartbeatCount++,a.ts){let l=String(a.ts),c=Date.parse(l);Number.isFinite(c)&&c>t?r.timestampAnomalies.push({kind:"future_heartbeat_timestamp",observedAt:l,clampedTo:n}):r.lastHeartbeatAt=l}a.phase!==void 0&&a.phase!==null&&(r.lastHeartbeatPhase=String(a.phase)),a.summary!==void 0&&a.summary!==null&&(r.lastHeartbeatSummary=String(a.summary)),Hd(r.lastHeartbeatPhase)&&(r.terminalFinalResult=Fd(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(l=>!!l&&typeof l=="object"&&typeof l.prUrl=="string"))}return r}var pw,dt=P(()=>{"use strict";Kd();O();pw=6e4});function jd(e){return e?(e.split("/").pop()??e).replace(/\.exe$/i,"").toLowerCase():null}function ss(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 Vd(e){let r=jd(e[0]);return!!(r&&mw.has(r))}function gw(e){let r=e.trim();return r.includes("/")?r.split("/").pop()??r:r}function hw(e){if(!e||e.includes("*"))return null;let r=gw(e);return!r||r.includes("/")?null:/\.(?:json|md|mjs|cjs|js|ts|tsx|yaml|yml)$/iu.test(r)?r:null}function Gd(e){return!e||e.includes("/")||e.includes("*")?!1:/\.(?:json|md|mjs|cjs|js|ts|tsx|yaml|yml)$/iu.test(e)}function Sa(e){if(!e)return!1;let r=e.trim();return r.startsWith("!")&&!r.includes("/")&&!r.endsWith("/**")}function kw(e){if(!e.startsWith("--glob="))return e;let r=e.slice(7);return r.startsWith("!")&&!r.includes("/")&&!r.endsWith("/**")?`--glob=${r}/**`:e}function yw(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;$d.has(n)&&(t+=1);continue}r.push(n)}}return r}function Rw(e){let r=!1,t=e.map((o,s)=>{let i=kw(o),a=e[s-1];return a&&$d.has(a)&&o.startsWith("!")&&!o.includes("/")&&!o.endsWith("/**")&&(i=`${o}/**`),i!==o&&(r=!0),i}),n=yw(t);if(n.length===2){let[o,s]=n;if(Sa(s))return{argv:[t[0]??"rg",o,"-g",`${s}/**`,"."],changed:!0};let i=hw(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 Yd(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 is(e){let r=e.trim();if(!r)return{command:r,wrapped:!1};let t=ss(r);if(!t.length)return{command:r,wrapped:!1};let n=jd(t[0]);if(!n||!fw.has(n))return{command:r,wrapped:!1};let o=Yd(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 vw(e,r){let t=e.trim(),n=ss(t),o=Yd(n);if(o<0)return r;let s=n.slice(0,o).join(" "),i=r.includes("'")?`"${r.replace(/"/g,'\\"')}"`:`'${r}'`;return`${s} ${i}`}function bw(e){let r=e.trim(),t=is(r),n=ss(t.command);if(!n.length||!Vd(n))return{segment:r,changed:!1};let o=Rw(n);if(!o.changed)return{segment:r,changed:!1};let s=o.argv.join(" ");return t.wrapped?{segment:vw(r,s),changed:!0}:{segment:s,changed:!0}}function wa(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=bw(i);return a.changed&&(o=!0),a.segment});return o?{command:s.join(t),changed:!0}:{command:r,changed:!1}}function qd(e){let r=is(e).command,t=ss(r.trim());return t.length&&Vd(t)?!0:/\b(rg|ripgrep)\b/i.test(r)}function Jd(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 Sw(e){let{pattern:r,target:t}=Jd(e);return r?Sa(t)?{kind:"rg_exclude_syntax",pattern:r,target:t}:Gd(t)?{kind:"bad_scope",pattern:r,target:t}:{kind:"not_repo_search",pattern:r,target:t}:{kind:"not_repo_search"}}function ww(e){let{pattern:r,target:t}=Jd(e);if(!r)return null;if(Sa(t)){let n=`${t.trim()}/**`;return{command:`rg "${r}" -g '${n}' .`,changed:!0}}return t&&Gd(t)?{command:`rg -g ${t} "${r}" .`,changed:!0}:null}function xw(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 _w(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 xa(e){let r=e.meta?.trim()||(e.command?_w(e.command):null)||null;if(r){let t=Sw(r),n=xw(t);if(n)return n;let o=ww(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=wa(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 mw,fw,$d,zd=P(()=>{"use strict";mw=new Set(["rg","ripgrep","grep"]),fw=new Set(["bash","sh","dash","zsh"]),$d=new Set(["-e","--regexp","-f","--file","-m","--max-count","-A","--after-context","-B","--before-context","-C","--context","-g","--glob","--iglob"])});function Bn(e,r=200){let t=e.replace(/\s+/g," ").trim();return t.length>r?`${t.slice(0,r-1)}\u2026`:t}function Pw(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 Un(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function Aw(e){let r=e.metadata;if(!Un(r))return null;let t=r.vulnerabilities;if(!Un(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 Iw(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 Ow(e,r){let t=e.error;if(Un(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?Bn(o.split(`
4
+ `):""}function Xo(e){Atomics.wait(new Int32Array(new SharedArrayBuffer(4)),0,0,e)}function Y(e){if(!e)return!1;try{return process.kill(e,0),!0}catch{return!1}}function od(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 la(e){return Math.max(0,Math.round((Date.now()-e)/1e3))}var O=P(()=>{"use strict";aa()});import{existsSync as rS,readFileSync as tS}from"node:fs";import{homedir as nS}from"node:os";import oS from"node:path";function ua(e){return!e||typeof e!="object"||Array.isArray(e)?null:e}function ca(e){return typeof e=="string"&&e.trim()?e:null}function sd(e){let r=ua(e);if(!r)return null;let t=r.desiredState;if(t!=="running"&&t!=="paused"&&t!=="stopped")return null;let n=r.policyVersion;if(typeof n!="number"||!Number.isInteger(n)||n<0)return null;let o=ca(r.requestedAt);return o?{desiredState:t,policyVersion:n,requestedAt:o,requestedByLabel:ca(r.requestedByLabel),reason:ca(r.reason)}:null}function id(e){let r=ua(ua(e)?.response);return!r||r.runtimeControl===void 0?null:sd(r.runtimeControl)}function ad(e,r=nS()){let t=e.replace(/[^A-Za-z0-9_-]/g,"_");return oS.join(r,".kynver",`runtime-control-${t}.json`)}function ld(e,r,t){try{let n=Lt(e,t);if(n&&n.policyVersion>r.policyVersion)return;ue(ad(e,t),{contractVersion:1,agentOsId:e,control:r,deliveredAt:new Date().toISOString()})}catch{}}function Lt(e,r){try{let t=ad(e,r);if(!rS(t))return null;let n=JSON.parse(tS(t,"utf8"));return n.agentOsId!==e?null:sd(n.control)}catch{return null}}function Qo(e){return e?.desiredState??"running"}function sS(e){return e==="keeper"||e==="desktop"}function iS(e,r,t=!1){let n=Qo(e);return n==="paused"?"paused":n==="stopped"?t&&r===0?"stopped":"stopping":"running"}function cd(e){return e.control?{policyVersion:e.control.policyVersion,state:iS(e.control,e.inFlightWorkers,e.exiting),supervised:sS(e.supervisor),inFlightWorkers:Math.max(0,Math.floor(e.inFlightWorkers))}:null}function ud(e){let r=Qo(e);return r==="paused"?"runtime_paused":r==="stopped"?"runtime_stopped":null}function pd(e){dd=e}function md(){return dd}var dd,An=P(()=>{"use strict";O();dd=null});import{homedir as fd}from"node:os";import gd from"node:path";function aS(e){return e==="~"?fd():e.startsWith("~/")||e.startsWith("~\\")?gd.join(fd(),e.slice(2)):e}function We(e){return gd.resolve(aS(e))}var Gr=P(()=>{"use strict"});function gS(e){let r=e[fS];return r?new Set(r.split(/[\s,]+/).map(t=>t.trim()).filter(Boolean)):new Set}function hS(e,r={}){return cS.has(e)?!0:pS.has(e)||r.operatorAllow?.has(e)||mS.some(t=>e.endsWith(t))?!1:uS.some(t=>e.endsWith(t))}function da(e){let r=gS(e),t={...e};for(let n of Object.keys(t))hS(n,{operatorAllow:r})&&delete t[n];return t}var lS,cS,uS,dS,pS,mS,fS,pa=P(()=>{"use strict";lS=["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"],cS=new Set(lS),uS=["_SECRET","_API_KEY","_KEK","_KEY","_TOKEN","_PASSWORD","_PASSPHRASE","_SALT"],dS=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],pS=new Set(dS),mS=["_PUBLIC_KEY"],fS="KYNVER_WORKER_ENV_ALLOW"});import{spawnSync as kd}from"node:child_process";function Z(e,r,t={}){let n=kd("git",r,ae({cwd:e,encoding:"utf8"}));if(n.status!==0&&!t.allowFailure){let o=kS(e,r,n);if(t.throwError)throw new Error(o);Je(o)}return n.stdout||""}function kS(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 In(e){return Z(e,["status","--short"],{allowFailure:!0}).split(`
5
+ `).map(r=>r.trim()).filter(Boolean)}function ne(e,r){try{let t=kd("git",r,ae({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 hd(e,r,t){let n=ne(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 Zo(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 Bt(n,"missing worktree path");let s=ne(e,["rev-parse","HEAD"]);if(s.status!==0)return Bt(n,s.error||s.stderr||s.stdout||"failed to resolve HEAD");let i;if(o)i=o;else{let p=ne(e,["rev-parse",n]);if(p.status!==0)return Bt(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 l=hd(e,i,a),c=hd(e,a,i),u=l.error||c.error||void 0;if(l.isAncestor==null||c.isAncestor==null)return{checked:!1,base:n,head:a,baseHead:i,baseIsAncestorOfHead:l.isAncestor,headIsAncestorOfBase:c.isAncestor,relation:"unknown",...u?{error:u}:{}};let d=l.isAncestor?"ahead":c.isAncestor?"merged":"diverged";return{checked:!0,base:n,head:a,baseHead:i,baseIsAncestorOfHead:l.isAncestor,headIsAncestorOfBase:c.isAncestor,relation:d,...u?{error:u}:{}}}function Bt(e,r,t=null){return{checked:!1,base:e,head:t,baseHead:null,baseIsAncestorOfHead:null,headIsAncestorOfBase:null,relation:"unknown",error:r}}var de=P(()=>{"use strict";Gr();O();pa()});import{homedir as yd}from"node:os";import ma from"node:path";function RS(e=yd()){return ma.join(e,".kynver",yS)}function vd(e,r=yd()){return ma.resolve(e)===ma.resolve(RS(r))}var yS,Rd,fa=P(()=>{"use strict";de();yS="workspace",Rd="main"});import{existsSync as ha,readFileSync as Sd}from"node:fs";import{homedir as vS}from"node:os";import ze from"node:path";import{fileURLToPath as bS}from"node:url";function wS(e){let r=ze.join(e,"package.json");if(!ha(r))return null;try{let t=JSON.parse(Sd(r,"utf8"));return typeof t.name=="string"?t.name.trim():null}catch{return null}}function wd(e){return wS(e)==="kynver"}function bd(e){let r=ze.resolve(e);if(!ha(r))return null;let t=ne(r,["rev-parse","--show-toplevel"]);if(t.status!==0)return null;let n=t.stdout.trim();return n.length?ze.resolve(n):null}function xS(e=import.meta.url){let r=ze.dirname(bS(e));for(let t=0;t<8;t+=1){let n=ze.join(r,"package.json");if(ha(n))try{if(JSON.parse(Sd(n,"utf8")).name==="@kynver-app/runtime")return r}catch{}let o=ze.dirname(r);if(o===r)break;r=o}return null}function ga(e,r,t,n,o){if(!t)return;let s=ze.resolve(t);e.has(s)||(o?.requireMonorepo??!0)&&!wd(s)||(e.add(s),r.push({repo:s,source:n}))}function _S(e){let r=e?.cwd??process.cwd(),t=new Set,n=[];ga(t,n,bd(r),"cwd_git",{requireMonorepo:!1});let o=xS(e?.runtimeModuleUrl??import.meta.url);o&&ga(t,n,bd(o),"runtime_checkout");let s=vS();for(let a of SS)ga(t,n,We(ze.join(s,a)),"well_known_path");let i=ze.resolve(e?.cwd??process.cwd());return n.filter(a=>{if(a.source!=="runtime_checkout"||!wd(a.repo))return!0;let l=ze.resolve(a.repo);return i===l||i.startsWith(`${l}${ze.sep}`)})}function es(e){return _S(e)[0]??null}var SS,On=P(()=>{"use strict";de();Gr();fa();SS=["Kynver","repos/Kynver","repos/kynver-source-main","code/Kynver","projects/Kynver"]});import{existsSync as Ed,readFileSync as ES}from"node:fs";import ut from"node:path";function PS(e){return e.includes("/")||e.includes("\\")}function AS(e){return(e.PATHEXT||CS).split(";").map(r=>r.trim().toLowerCase()).filter(r=>r.startsWith("."))}function IS(e){let r=Object.keys(e).find(t=>t.toUpperCase()==="PATH");return r?e[r]??"":""}function OS(e,r={}){let t=r.env??process.env,n=r.exists??Ed,o=AS(t),s=ut.win32.extname(e)!=="",i=a=>s?[a]:o.map(l=>`${a}${l}`);if(PS(e)||ut.win32.isAbsolute(e))return i(e).find(a=>n(a))??null;for(let a of IS(t).split(";").map(l=>l.trim()).filter(Boolean)){let l=i(ut.win32.join(a,e)).find(c=>n(c));if(l)return l}return null}function _d(e){return e.replace(/^[\\/]+/,"")}function NS(e){let r=e.split(/\r?\n/),t=new Map;for(let s of r){let i=TS.exec(s);i&&t.set(i[1].toUpperCase(),i[2])}let n=r.filter(s=>s.includes("%*")).pop();if(!n)return null;let o=xd.exec(n);if(o)return _d(o[1]);for(let s of n.matchAll(/%([A-Za-z_]\w*)%/g)){let i=t.get(s[1].toUpperCase()),a=i?xd.exec(i):null;if(a)return _d(a[1])}return null}function DS(e,r={}){if((r.platform??process.platform)!=="win32")return{executable:e,prefixArgs:[],kind:"passthrough"};let n=OS(e,r);if(!n)return{executable:e,prefixArgs:[],kind:"passthrough"};let o=ut.win32.extname(n).toLowerCase();if(o!==".cmd"&&o!==".bat")return{executable:n,prefixArgs:[],kind:"exe"};let s=r.readText??(m=>ES(m,"utf8")),i=r.exists??Ed,a;try{a=s(n)}catch{throw new Tn(n)}let l=NS(a);if(!l)throw new Tn(n);let c=ut.win32.dirname(n),u=ut.win32.join(c,l);if(!i(u))throw new Tn(n);let d=ut.win32.join(c,"node.exe");return{executable:i(d)?d:r.nodeExecutable??process.execPath,prefixArgs:[u],kind:"node-shim"}}function pe(e,r,t={}){let n=DS(e,t);return[n.executable,[...n.prefixArgs,...r]]}var Tn,CS,xd,TS,br=P(()=>{"use strict";Tn=class extends Error{constructor(t){super(`${t} is a batch file that is not a Node CLI shim; it cannot be spawned without a shell. Point the matching KYNVER_*_BIN setting at the real .exe or the CLI's JS entry, or run the daemon inside WSL.`);this.shimPath=t;this.name="UnresolvableWindowsShimError"}shimPath},CS=".COM;.EXE;.BAT;.CMD";xd=/%~?dp0%?\\?([^"%\r\n]+?\.(?:c|m)?js)\b/i,TS=/^\s*SET\s+"?([A-Za-z_]\w*)=([^"\r\n]*)"?\s*$/i});var Cd=P(()=>{"use strict";br()});function Id(e){let r=qo(e);try{let t=new URL(r);return t.hostname.toLowerCase()===Pd?(t.hostname=`www.${Pd}`,qo(t.toString())):r}catch{return r}}function Nn(e){if(e?.trim())return Id(qo(e.trim()))}async function Dn(e,r,t=fetch){let n=Id(e),o=new Headers(r?.headers),s=0;for(;s<=Ad;){let i=await t(n,{...r,headers:o,redirect:"manual"});if(![301,302,303,307,308].includes(i.status))return i;let a=i.headers.get("location");if(!a)return i;let l=new URL(a,n);if(l.origin!==new URL(n).origin||l.username||l.password)throw await i.body?.cancel(),new Error("kynver API fetch refused unsafe redirect (origin change or embedded credentials)");let c=(r?.method??"GET").toUpperCase();if(!["GET","HEAD"].includes(c)&&i.status!==307&&i.status!==308)return i;await i.body?.cancel(),n=l.toString(),s+=1}throw new Error(`kynver API fetch exceeded ${Ad} redirects for ${e}`)}var Pd,Ad,Mn=P(()=>{"use strict";O();Pd="kynver.com";Ad=10});function dt(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 rs(e,r){return e[r]?.trim()||null}function Od(e){let r=e?.split(":")[0]?.trim();return r?dt(r):null}function Sr(e=process.env,r={}){let t=[],n=Od(r.boxId),o=Od(rs(e,"KYNVER_BOX_ID")),s=r.boxKind?.trim();if(s)return n&&n!==dt(s)&&t.push(`config.boxId=${r.boxId} conflicts with boxKind=${s}; using explicit boxKind=${s}`),{boxKind:dt(s),source:"config",slugInferenceBlocked:!1,warnings:t};let i=rs(e,"KYNVER_BOX_KIND");if(i)return o&&o!==dt(i)&&t.push(`KYNVER_BOX_ID=${rs(e,"KYNVER_BOX_ID")} conflicts with KYNVER_BOX_KIND=${i}; using explicit KYNVER_BOX_KIND=${i}`),{boxKind:dt(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=rs(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}}function wr(e={},r=process.env){return Sr(r,e).boxKind}var Le=P(()=>{"use strict"});function ka(e,r){return e==="forge"?4:Math.max(1,r)}function Wn(e,r){return e==="forge"?Math.min(Math.max(1,r),4):Math.max(1,r)}var ts=P(()=>{"use strict"});import{readFileSync as MS}from"node:fs";import Td from"node:os";function Nd(e){if(e!==void 0){let r=e.match(/^MemAvailable:\s+(\d+)\s*kB/m);return r?Number(r[1])*1024:Td.freemem()}if(process.platform==="linux")try{let t=MS("/proc/meminfo","utf8").match(/^MemAvailable:\s+(\d+)\s*kB/m);if(t)return Number(t[1])*1024}catch{}return Td.freemem()}var Dd=P(()=>{"use strict"});import{existsSync as WS,readFileSync as LS,statfsSync as BS}from"node:fs";function ya(){if(process.platform!=="linux")return!1;for(let e of["/proc/sys/kernel/osrelease","/proc/version"])try{if(!WS(e))continue;let r=LS(e,"utf8");if(/microsoft|wsl/i.test(r))return!0}catch{}return!1}function Md(e={}){if(!(e.forceWsl===void 0?ya():e.forceWsl))return null;let t=e.wslHostMount?.trim()||process.env.KYNVER_WSL_HOST_MOUNT?.trim()||Ut,n=e.wslHostFreeWarnBytes??US,o=e.wslHostFreeCriticalBytes??FS,s=e.statfs??BS,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),l=Number(i.blocks)*Number(i.bsize),c=l>0?(l-a)/l*100:100,u=a<n,d=a<o,p=!u&&!d,m=(a/(1024*1024*1024)).toFixed(1),f=null;return p||(f=`Windows host disk ${t} at ${d?"critical":"warning"}: ${m} GiB free (<${(d?o:n)/1024/1024/1024} GiB); WSL VHDX cannot grow safely. ${KS()}`),{ok:p,path:t,freeBytes:a,totalBytes:l,usedPercent:c,warnBelowBytes:n,criticalBelowBytes:o,reason:f,probeError:null}}function KS(){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 US,FS,Ut,Ra=P(()=>{"use strict";US=25*1024*1024*1024,FS=12*1024*1024*1024,Ut="/mnt/c"});import{execFileSync as Wd}from"node:child_process";import{existsSync as os,readFileSync as Ld,readdirSync as HS,statSync as $S}from"node:fs";import va from"node:path";function ns(e,r){let t=process.env[e];if(!t)return r;let n=Number(t);return Number.isFinite(n)?n:r}function Bd(){let e=process.env.KYNVER_WSL_WIN_USER?.trim();if(e)return e;try{let n=Wd("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()||Ut;return r&&os(va.join(t,"Users",r))?r:null}function qS(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()||Ut,n=e.windowsUser??Bd();return n?`${t.replace(/\\/g,"/").replace(/\/$/,"")}/Users/${n}/AppData/Local/Temp/wsl-crashes`:null}function JS(e){let r=/^wsl-crash-\d+-(\d+)-(.+)-(\d+)\.dmp$/i.exec(e);if(!r)return{executableHint:null,signal:null,pid:null};let t=Number(r[1]),n=r[2]??"",o=Number(r[3]),s=n.split("_").filter(Boolean);return{executableHint:s.length>0?s[s.length-1]:null,signal:Number.isFinite(o)?o:null,pid:Number.isFinite(t)?t:null}}function zS(){try{if(os("/proc/sys/kernel/core_pattern"))return Ld("/proc/sys/kernel/core_pattern","utf8").trim()}catch{}try{return Wd("sysctl",["-n","kernel.core_pattern"],{encoding:"utf8",timeout:2e3,stdio:["ignore","pipe","ignore"]}).trim()||null}catch{return null}}function XS(e){return!!(e&&/wsl-capture-crash/i.test(e))}function QS(e,r=Ut){let t=va.join(r,"Users",e,".wslconfig");if(!os(t))return{maxCrashDumpCount:null,crashDumpFolder:null};let n;try{n=Ld(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 l=a.indexOf("=");if(l<0)continue;let c=a.slice(0,l).trim().toLowerCase(),u=a.slice(l+1).trim();if(c==="maxcrashdumpcount"){let d=Number(u);o=Number.isFinite(d)?d:null}else c==="crashdumpfolder"&&(s=u.replace(/^["']|["']$/g,"")||null)}return{maxCrashDumpCount:o,crashDumpFolder:s}}function ZS(e){if(!os(e))return[];let r=HS(e,{withFileTypes:!0}),t=[];for(let n of r){if(!n.isFile()||!n.name.toLowerCase().endsWith(".dmp"))continue;let o=va.join(e,n.name);try{let s=$S(o),i=JS(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 Ft(e={}){if(!(e.forceWsl===void 0?ya():e.forceWsl))return null;let t=e.hostMount?.trim()||process.env.KYNVER_WSL_HOST_MOUNT?.trim()||Ut,n=e.windowsUser??Bd(),o=e.warnBelowBytes??ns("KYNVER_WSL_CRASH_DUMP_WARN_BYTES",jS),s=e.criticalBelowBytes??ns("KYNVER_WSL_CRASH_DUMP_CRITICAL_BYTES",VS),i=e.warnCount??ns("KYNVER_WSL_CRASH_DUMP_WARN_COUNT",GS),a=e.criticalCount??ns("KYNVER_WSL_CRASH_DUMP_CRITICAL_COUNT",YS),l=(e.readCorePattern??zS)(),c=XS(l),u=null;n&&(u=(e.readWslConfig??QS)(n,t));let d=u?.maxCrashDumpCount??null,p=d===-1,m=qS({hostMount:t,windowsUser:n,crashDumpDir:e.crashDumpDir});if(!m)return{ok:!0,path:null,windowsUser:n,dumpCount:0,totalBytes:0,warnBelowBytes:o,criticalBelowBytes:s,warnCount:i,criticalCount:a,dumps:[],executables:[],corePattern:l,wslCaptureEnabled:c,maxCrashDumpCount:d,dumpsDisabledInWslConfig:p,reason:null,probeError:"windows_user_unresolved"};let f;try{f=(e.listDumps??ZS)(m)}catch($){return{ok:!1,path:m,windowsUser:n,dumpCount:0,totalBytes:0,warnBelowBytes:o,criticalBelowBytes:s,warnCount:i,criticalCount:a,dumps:[],executables:[],corePattern:l,wslCaptureEnabled:c,maxCrashDumpCount:d,dumpsDisabledInWslConfig:p,reason:`WSL crash dump probe failed at ${m}: ${$.message}`,probeError:$.message}}let y=f.reduce(($,C)=>$+C.bytes,0),k=f.length,b=[...new Set(f.map($=>$.executableHint).filter($=>!!$))],g=y>=s,h=y>=o,w=k>=a,E=k>=i,_=!(g||w||h||E),K=null;if(!_){let $=g||w?"critical":"warning",C=(y/1024**3).toFixed(1),re=b.length>0?b.join(", "):"unknown";K=`WSL crash dumps ${$}: ${k} file(s), ${C} GiB at ${m} (executables: ${re}). `+ew({wslCaptureEnabled:c,dumpsDisabledInWslConfig:p})}return{ok:_,path:m,windowsUser:n,dumpCount:k,totalBytes:y,warnBelowBytes:o,criticalBelowBytes:s,warnCount:i,criticalCount:a,dumps:f,executables:b,corePattern:l,wslCaptureEnabled:c,maxCrashDumpCount:d,dumpsDisabledInWslConfig:p,reason:K,probeError:null}}function ew(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 jS,VS,GS,YS,ss=P(()=>{"use strict";Ra();jS=5*1024*1024*1024,VS=10*1024*1024*1024,GS=2,YS=4});import{statfsSync as rw}from"node:fs";function Yr(e={}){let r=e.diskPath?.trim()||"/",t=e.diskFreeWarnBytes??tw,n=e.diskFreeCriticalBytes??nw,o=e.diskMaxUsedPercent??ow,s=e.diskHardMaxUsedPercent??sw,i=rw(r),a=Number(i.bavail)*Number(i.bsize),l=Number(i.blocks)*Number(i.bsize),c=l>0?(l-a)/l*100:100,u=a<t,d=a<n,p=a<t*2,m=p&&c>o,f=p&&c>s,y=!u&&!d&&!m&&!f,k=e.skipWslHostCheck?null:Md(e.wslHost),b=e.skipWslCrashDumpCheck?null:Ft(e.wslCrashDumps),g=y&&(k?k.ok:!0)&&(b?b.ok:!0),h=null;return g||(h=[d?`free space below critical ${n} bytes`:null,u?`free space below warning ${t} bytes`:null,f?`used percent above hard cap ${s}%`:null,m?`used percent above cap ${o}%`:null,k&&!k.ok?k.reason:null,b&&!b.ok?b.reason:null].filter(Boolean).join("; ")),iw({ok:g,path:r,freeBytes:a,totalBytes:l,usedPercent:c,warnBelowBytes:t,criticalBelowBytes:n,maxUsedPercent:o,hardMaxUsedPercent:s,reason:h,wslHost:k,wslCrashDumps:b?{ok:b.ok,path:b.path,dumpCount:b.dumpCount,totalBytes:b.totalBytes,executables:b.executables,wslCaptureEnabled:b.wslCaptureEnabled,dumpsDisabledInWslConfig:b.dumpsDisabledInWslConfig,reason:b.reason,probeError:b.probeError}:null})}function iw(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 tw,nw,ow,sw,Ln=P(()=>{"use strict";ss();Ra();tw=30*1024*1024*1024,nw=15*1024*1024*1024,ow=80,sw=90});import{existsSync as aw,readdirSync as lw}from"node:fs";import cw from"node:path";function ar(e){let r=new Set;for(let n of Object.keys(e.workers||{}))r.add(x(n));let t=cw.join(N(e.id),"workers");if(!aw(t))return[...r];for(let n of lw(t,{withFileTypes:!0}))n.isDirectory()&&r.add(x(n.name));return[...r]}var Bn=P(()=>{"use strict";B();O()});function ba(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 Ud(e){let r=e.trim();if(!r)return null;let t=ba(r);if(t)return t;let n=[],o=/```(?:json)?\s*([\s\S]*?)```/gi,s;for(;(s=o.exec(r))!==null;){let l=ba(s[1]??"");l&&n.push(l)}let i=r.indexOf("{"),a=r.lastIndexOf("}");if(i>=0&&a>i){let l=ba(r.slice(i,a+1));l&&n.push(l)}return n.length>0?n[n.length-1]:null}function Fd(e){let r=e.finalResult??e.final_result;if(r!=null)return typeof r=="string"?Ud(r)??(r.trim()||null):r;let t=typeof e.summary=="string"?e.summary.trim():"";if(!t)return null;let n=Ud(t);return n||t}var Kd=P(()=>{"use strict"});import{existsSync as uw,readFileSync as dw}from"node:fs";function Hd(e){return e==="complete"}function xr(e){return Hd(e.lastHeartbeatPhase)?e.terminalFinalResult!==void 0&&e.terminalFinalResult!==null?e.terminalFinalResult:e.lastHeartbeatSummary?.trim()||"completed":null}function me(e){let r={heartbeatCount:0,lastHeartbeatAt:null,lastHeartbeatPhase:null,lastHeartbeatSummary:null,terminalFinalResult:null,heartbeatBlocker:null,timestampAnomalies:[],lastBoxResourceSnapshot:null,lastPrEvidence:[]};if(!uw(e))return r;let t=Date.now()+pw,n=new Date(t).toISOString(),o=dw(e,"utf8").split(`
6
+ `).filter(Boolean);for(let s of o){let i=Pn(s);if(!i||typeof i!="object"||Array.isArray(i))continue;let a=i;if(r.heartbeatCount++,a.ts){let l=String(a.ts),c=Date.parse(l);Number.isFinite(c)&&c>t?r.timestampAnomalies.push({kind:"future_heartbeat_timestamp",observedAt:l,clampedTo:n}):r.lastHeartbeatAt=l}a.phase!==void 0&&a.phase!==null&&(r.lastHeartbeatPhase=String(a.phase)),a.summary!==void 0&&a.summary!==null&&(r.lastHeartbeatSummary=String(a.summary)),Hd(r.lastHeartbeatPhase)&&(r.terminalFinalResult=Fd(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(l=>!!l&&typeof l=="object"&&typeof l.prUrl=="string"))}return r}var pw,pt=P(()=>{"use strict";Kd();O();pw=6e4});function jd(e){return e?(e.split("/").pop()??e).replace(/\.exe$/i,"").toLowerCase():null}function is(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 Vd(e){let r=jd(e[0]);return!!(r&&mw.has(r))}function gw(e){let r=e.trim();return r.includes("/")?r.split("/").pop()??r:r}function hw(e){if(!e||e.includes("*"))return null;let r=gw(e);return!r||r.includes("/")?null:/\.(?:json|md|mjs|cjs|js|ts|tsx|yaml|yml)$/iu.test(r)?r:null}function Gd(e){return!e||e.includes("/")||e.includes("*")?!1:/\.(?:json|md|mjs|cjs|js|ts|tsx|yaml|yml)$/iu.test(e)}function Sa(e){if(!e)return!1;let r=e.trim();return r.startsWith("!")&&!r.includes("/")&&!r.endsWith("/**")}function kw(e){if(!e.startsWith("--glob="))return e;let r=e.slice(7);return r.startsWith("!")&&!r.includes("/")&&!r.endsWith("/**")?`--glob=${r}/**`:e}function yw(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;$d.has(n)&&(t+=1);continue}r.push(n)}}return r}function Rw(e){let r=!1,t=e.map((o,s)=>{let i=kw(o),a=e[s-1];return a&&$d.has(a)&&o.startsWith("!")&&!o.includes("/")&&!o.endsWith("/**")&&(i=`${o}/**`),i!==o&&(r=!0),i}),n=yw(t);if(n.length===2){let[o,s]=n;if(Sa(s))return{argv:[t[0]??"rg",o,"-g",`${s}/**`,"."],changed:!0};let i=hw(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 Yd(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 as(e){let r=e.trim();if(!r)return{command:r,wrapped:!1};let t=is(r);if(!t.length)return{command:r,wrapped:!1};let n=jd(t[0]);if(!n||!fw.has(n))return{command:r,wrapped:!1};let o=Yd(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 vw(e,r){let t=e.trim(),n=is(t),o=Yd(n);if(o<0)return r;let s=n.slice(0,o).join(" "),i=r.includes("'")?`"${r.replace(/"/g,'\\"')}"`:`'${r}'`;return`${s} ${i}`}function bw(e){let r=e.trim(),t=as(r),n=is(t.command);if(!n.length||!Vd(n))return{segment:r,changed:!1};let o=Rw(n);if(!o.changed)return{segment:r,changed:!1};let s=o.argv.join(" ");return t.wrapped?{segment:vw(r,s),changed:!0}:{segment:s,changed:!0}}function wa(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=bw(i);return a.changed&&(o=!0),a.segment});return o?{command:s.join(t),changed:!0}:{command:r,changed:!1}}function qd(e){let r=as(e).command,t=is(r.trim());return t.length&&Vd(t)?!0:/\b(rg|ripgrep)\b/i.test(r)}function Jd(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 Sw(e){let{pattern:r,target:t}=Jd(e);return r?Sa(t)?{kind:"rg_exclude_syntax",pattern:r,target:t}:Gd(t)?{kind:"bad_scope",pattern:r,target:t}:{kind:"not_repo_search",pattern:r,target:t}:{kind:"not_repo_search"}}function ww(e){let{pattern:r,target:t}=Jd(e);if(!r)return null;if(Sa(t)){let n=`${t.trim()}/**`;return{command:`rg "${r}" -g '${n}' .`,changed:!0}}return t&&Gd(t)?{command:`rg -g ${t} "${r}" .`,changed:!0}:null}function xw(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 _w(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 xa(e){let r=e.meta?.trim()||(e.command?_w(e.command):null)||null;if(r){let t=Sw(r),n=xw(t);if(n)return n;let o=ww(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=wa(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 mw,fw,$d,zd=P(()=>{"use strict";mw=new Set(["rg","ripgrep","grep"]),fw=new Set(["bash","sh","dash","zsh"]),$d=new Set(["-e","--regexp","-f","--file","-m","--max-count","-A","--after-context","-B","--before-context","-C","--context","-g","--glob","--iglob"])});function Un(e,r=200){let t=e.replace(/\s+/g," ").trim();return t.length>r?`${t.slice(0,r-1)}\u2026`:t}function Pw(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 Fn(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function Aw(e){let r=e.metadata;if(!Fn(r))return null;let t=r.vulnerabilities;if(!Fn(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 Iw(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 Ow(e,r){let t=e.error;if(Fn(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?Un(o.split(`
7
7
  `).find(Boolean)??o,160):"npm audit failed"}function Tw(e){let r=`${e.stdout}
8
- ${e.stderr}`.trim(),t=Pw(r);if(!t||!Un(t)){let o=Bn(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(Un(t.error))return{kind:"command_failure",exitCode:e.exitCode,summary:`npm audit command failed: ${Ow(t,e.stderr)}`};let n=Aw(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:Iw(n),audit:n}:{kind:"command_failure",exitCode:e.exitCode,summary:"npm audit failed: JSON response missing vulnerability metadata",parseError:"missing_metadata"}}function Nw(e){return Ew.test(e)}function Dw(e){let r=is(e).command;return Xd.test(e)||Xd.test(r)||qd(e)}function Mw(e){let r=xa({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&&Cw.test(n)){let i=Bn(n,160);return{kind:"command_failure",exitCode:1,summary:r??`ripgrep failed (exit 1): ${i}`}}let o=wa(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=Bn(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 Qd(e){let r=e.stdout??"",t=e.stderr??"",n=e.interleavedOutput??"";if(Nw(e.command)){let i=r.trim()||n.trim()||t.trim();return Tw({exitCode:e.exitCode,stdout:i,stderr:t})}if(Dw(e.command))return Mw({command:e.command,exitCode:e.exitCode,stdout:r,stderr:t,interleaved:n});let o=xa({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=Bn(n||r||t||`exit ${e.exitCode}`,180);return{kind:"command_failure",exitCode:e.exitCode,summary:`command failed (exit ${e.exitCode}): ${s}`}}var Ew,Xd,Cw,Zd=P(()=>{"use strict";zd();Ew=/\bnpm\s+audit\b/i,Xd=/\b(rg|ripgrep)\b/i,Cw=/\b(error|invalid|unknown|panic|not found)\b/i});function Fn(e){return typeof e=="string"&&Ww.test(e.trim())}function as(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 Ww,ls=P(()=>{"use strict";Ww=/^(?:provider authentication failed:\s*)?(?:(?:Failed to authenticate|authentication (?:failed|error))(?::\s*[^\n.!?]+)?|OAuth session expired and could not be refreshed)[.!]?$/i});function ep(e,r){if(!r.pinned)return Lw[e.trim()]}function rp(e){return e?["--fallback-model",e]:[]}var Be,pt,Lw,tp,Kn=P(()=>{"use strict";Be="claude-sonnet-5-5",pt="claude-opus-5-5",Lw={[Be]:"claude-sonnet-4-6",[pt]:"claude-opus-4-8"};tp=/isn't described by this version's model catalog|\bunrecognized_model\b|issue with the selected model/i});function _a(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function Bw(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 np(e){if(e.event==="step_update"&&_a(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"||!_a(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=_a(r.usage)?Bw(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 op=P(()=>{"use strict"});function Ea(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function sp(){return{assistantText:""}}function Uw(e,r){if(!(r.role!=="assistant"||typeof r.content!="string")){if(r.delta===!0){e.assistantText+=r.content;return}e.assistantText=r.content}}function Fw(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=(Ea(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 Kw(e){return e.type!=="result"||e.status!=="success"&&e.status!=="error"?!1:typeof e.result!="string"}function ip(e,r){if(e.type==="message"&&(e.role==="assistant"||e.role==="user"))return Uw(r,e),{};if(e.type==="tool_use"&&typeof e.tool_name=="string"&&e.tool_name.trim())return{currentTool:e.tool_name.trim()};if(!Kw(e))return null;let t=Ea(e.stats)?Fw(e.stats):void 0;if(e.status==="error"){let o=Ea(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 ap=P(()=>{"use strict"});import{existsSync as Hw,readFileSync as $w}from"node:fs";function jw(e){let r=e.timestamp_ms;return e.timestamp||e.ts||(r?new Date(r).toISOString():void 0)}function Vw(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 Gw(e,r){e.finalResult=r.result||r.subtype||r.terminal_reason||"completed",as(r)&&(e.providerTerminalError=!0,e.error=String(r.result||r.api_error_status||"stream result error"))}function Ft(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:void 0}function Yw(e){let r=e.usage;return r&&typeof r=="object"&&!Array.isArray(r)?r:null}function qw(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 Jw(e,r){let t=Yw(r);if(!t)return;let n=Ft(t.input_tokens)??Ft(t.inputTokens)??Ft(t.prompt_tokens),o=Ft(t.output_tokens)??Ft(t.outputTokens)??Ft(t.completion_tokens);if(n===void 0&&o===void 0)return;let s=qw(r)??e.usage?.model;e.usage={...n!==void 0?{inputTokens:n}:{},...o!==void 0?{outputTokens:o}:{},...s?{model:s}:{}}}function zw(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 l=a,c=typeof l.exitCode=="number"?l.exitCode:0;return{command:s,exitCode:c,stdout:typeof l.stdout=="string"?l.stdout:"",stderr:typeof l.stderr=="string"?l.stderr:"",interleaved:typeof l.interleavedOutput=="string"?l.interleavedOutput:""}}function Xw(e,r){r.kind==="success"||r.kind==="search_no_matches"||(e.lastShellOutcome=r)}function mt(e){let r={firstEventAt:null,lastEventAt:null,currentTool:null,finalResult:null,error:null,lastShellOutcome:null,usage:null};if(!Hw(e))return r;let t=$w(e,"utf8").split(`
9
- `).filter(Boolean),n=null,o=sp();for(let s of t){let i=Cn(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 m=p;m.type==="agent_message"&&typeof m.text=="string"&&m.text.trim()&&(n=m.text)}}i.type==="turn.completed"&&n&&!r.providerTerminalError&&(r.finalResult=n,n=null);let a=jw(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 m=p.find(f=>f?.type==="tool_use");m&&(r.currentTool=String(m.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,m=Vw(p);m&&(r.currentTool=m)}let l=zw(i);l&&Xw(r,Qd({command:l.command,exitCode:l.exitCode,stdout:l.stdout,stderr:l.stderr,interleavedOutput:l.interleaved}));let c=np(i),u=c?null:ip(i,o),d=c??u;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"&&Gw(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"}Jw(r,i)}return r}var Hn=P(()=>{"use strict";Zd();O();ls();Kn();op();ap()});import{accessSync as Qw,constants as Zw,existsSync as ex,readFileSync as rx}from"node:fs";import Ca from"node:path";function cp(e){return Ca.join(e,tx)}function nx(e=process.env,r=process.platform){if(r==="win32")return!1;let t=e.KYNVER_WORKER_EXIT_CAPTURE?.trim().toLowerCase();return!(t==="0"||t==="false"||t==="off")}function lp(e){try{return Qw(e,Zw.X_OK),!0}catch{return!1}}function ox(e,r=process.env){if(!e)return!1;if(e.includes("/"))return lp(e);for(let t of(r.PATH??"").split(Ca.delimiter))if(t&&lp(Ca.join(t,e)))return!0;return!1}function Pe(e,r,t,n={}){let o=n.env??process.env;return!t||!nx(o,n.platform)?[e,r]:ox(e,o)?[n.nodeExecutable??process.execPath,["-e",sx,cp(t),e,...r]]:[e,r]}function ix(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function cs(e){if(!e)return null;let r=cp(e);if(!ex(r))return null;try{let t=JSON.parse(rx(r,"utf8")),n=t.oomEvidence;return{exitCode:ix(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 up(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 tx,sx,xr=P(()=>{"use strict";tx="exit.json";sx=String.raw`"use strict";
8
+ ${e.stderr}`.trim(),t=Pw(r);if(!t||!Fn(t)){let o=Un(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(Fn(t.error))return{kind:"command_failure",exitCode:e.exitCode,summary:`npm audit command failed: ${Ow(t,e.stderr)}`};let n=Aw(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:Iw(n),audit:n}:{kind:"command_failure",exitCode:e.exitCode,summary:"npm audit failed: JSON response missing vulnerability metadata",parseError:"missing_metadata"}}function Nw(e){return Ew.test(e)}function Dw(e){let r=as(e).command;return Xd.test(e)||Xd.test(r)||qd(e)}function Mw(e){let r=xa({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&&Cw.test(n)){let i=Un(n,160);return{kind:"command_failure",exitCode:1,summary:r??`ripgrep failed (exit 1): ${i}`}}let o=wa(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=Un(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 Qd(e){let r=e.stdout??"",t=e.stderr??"",n=e.interleavedOutput??"";if(Nw(e.command)){let i=r.trim()||n.trim()||t.trim();return Tw({exitCode:e.exitCode,stdout:i,stderr:t})}if(Dw(e.command))return Mw({command:e.command,exitCode:e.exitCode,stdout:r,stderr:t,interleaved:n});let o=xa({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=Un(n||r||t||`exit ${e.exitCode}`,180);return{kind:"command_failure",exitCode:e.exitCode,summary:`command failed (exit ${e.exitCode}): ${s}`}}var Ew,Xd,Cw,Zd=P(()=>{"use strict";zd();Ew=/\bnpm\s+audit\b/i,Xd=/\b(rg|ripgrep)\b/i,Cw=/\b(error|invalid|unknown|panic|not found)\b/i});function Kn(e){return typeof e=="string"&&Ww.test(e.trim())}function ls(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 Ww,cs=P(()=>{"use strict";Ww=/^(?:provider authentication failed:\s*)?(?:(?:Failed to authenticate|authentication (?:failed|error))(?::\s*[^\n.!?]+)?|OAuth session expired and could not be refreshed)[.!]?$/i});function ep(e,r){if(!r.pinned)return Lw[e.trim()]}function rp(e){return e?["--fallback-model",e]:[]}var Be,mt,Lw,tp,Hn=P(()=>{"use strict";Be="claude-sonnet-5-5",mt="claude-opus-5-5",Lw={[Be]:"claude-sonnet-4-6",[mt]:"claude-opus-4-8"};tp=/isn't described by this version's model catalog|\bunrecognized_model\b|issue with the selected model/i});function _a(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function Bw(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 np(e){if(e.event==="step_update"&&_a(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"||!_a(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=_a(r.usage)?Bw(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 op=P(()=>{"use strict"});function Ea(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function sp(){return{assistantText:""}}function Uw(e,r){if(!(r.role!=="assistant"||typeof r.content!="string")){if(r.delta===!0){e.assistantText+=r.content;return}e.assistantText=r.content}}function Fw(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=(Ea(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 Kw(e){return e.type!=="result"||e.status!=="success"&&e.status!=="error"?!1:typeof e.result!="string"}function ip(e,r){if(e.type==="message"&&(e.role==="assistant"||e.role==="user"))return Uw(r,e),{};if(e.type==="tool_use"&&typeof e.tool_name=="string"&&e.tool_name.trim())return{currentTool:e.tool_name.trim()};if(!Kw(e))return null;let t=Ea(e.stats)?Fw(e.stats):void 0;if(e.status==="error"){let o=Ea(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 ap=P(()=>{"use strict"});import{existsSync as Hw,readFileSync as $w}from"node:fs";function jw(e){let r=e.timestamp_ms;return e.timestamp||e.ts||(r?new Date(r).toISOString():void 0)}function Vw(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 Gw(e,r){e.finalResult=r.result||r.subtype||r.terminal_reason||"completed",ls(r)&&(e.providerTerminalError=!0,e.error=String(r.result||r.api_error_status||"stream result error"))}function Kt(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:void 0}function Yw(e){let r=e.usage;return r&&typeof r=="object"&&!Array.isArray(r)?r:null}function qw(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 Jw(e,r){let t=Yw(r);if(!t)return;let n=Kt(t.input_tokens)??Kt(t.inputTokens)??Kt(t.prompt_tokens),o=Kt(t.output_tokens)??Kt(t.outputTokens)??Kt(t.completion_tokens);if(n===void 0&&o===void 0)return;let s=qw(r)??e.usage?.model;e.usage={...n!==void 0?{inputTokens:n}:{},...o!==void 0?{outputTokens:o}:{},...s?{model:s}:{}}}function zw(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 l=a,c=typeof l.exitCode=="number"?l.exitCode:0;return{command:s,exitCode:c,stdout:typeof l.stdout=="string"?l.stdout:"",stderr:typeof l.stderr=="string"?l.stderr:"",interleaved:typeof l.interleavedOutput=="string"?l.interleavedOutput:""}}function Xw(e,r){r.kind==="success"||r.kind==="search_no_matches"||(e.lastShellOutcome=r)}function ft(e){let r={firstEventAt:null,lastEventAt:null,currentTool:null,finalResult:null,error:null,lastShellOutcome:null,usage:null};if(!Hw(e))return r;let t=$w(e,"utf8").split(`
9
+ `).filter(Boolean),n=null,o=sp();for(let s of t){let i=Pn(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 m=p;m.type==="agent_message"&&typeof m.text=="string"&&m.text.trim()&&(n=m.text)}}i.type==="turn.completed"&&n&&!r.providerTerminalError&&(r.finalResult=n,n=null);let a=jw(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 m=p.find(f=>f?.type==="tool_use");m&&(r.currentTool=String(m.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,m=Vw(p);m&&(r.currentTool=m)}let l=zw(i);l&&Xw(r,Qd({command:l.command,exitCode:l.exitCode,stdout:l.stdout,stderr:l.stderr,interleavedOutput:l.interleaved}));let c=np(i),u=c?null:ip(i,o),d=c??u;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"&&Gw(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"}Jw(r,i)}return r}var $n=P(()=>{"use strict";Zd();O();cs();Hn();op();ap()});import{accessSync as Qw,constants as Zw,existsSync as ex,readFileSync as rx}from"node:fs";import Ca from"node:path";function cp(e){return Ca.join(e,tx)}function nx(e=process.env,r=process.platform){if(r==="win32")return!1;let t=e.KYNVER_WORKER_EXIT_CAPTURE?.trim().toLowerCase();return!(t==="0"||t==="false"||t==="off")}function lp(e){try{return Qw(e,Zw.X_OK),!0}catch{return!1}}function ox(e,r=process.env){if(!e)return!1;if(e.includes("/"))return lp(e);for(let t of(r.PATH??"").split(Ca.delimiter))if(t&&lp(Ca.join(t,e)))return!0;return!1}function Pe(e,r,t,n={}){let o=n.env??process.env;return!t||!nx(o,n.platform)?[e,r]:ox(e,o)?[n.nodeExecutable??process.execPath,["-e",sx,cp(t),e,...r]]:[e,r]}function ix(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function us(e){if(!e)return null;let r=cp(e);if(!ex(r))return null;try{let t=JSON.parse(rx(r,"utf8")),n=t.oomEvidence;return{exitCode:ix(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 up(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 tx,sx,_r=P(()=>{"use strict";tx="exit.json";sx=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);
@@ -72,44 +72,44 @@ child.on("error", (e) => {
72
72
  if (!child.pid) finish(127, null, String(e && e.message));
73
73
  });
74
74
  child.on("exit", (code, signal) => finish(code, signal));
75
- `});import ax from"node:path";function Pa(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let r=e.handoffState;return typeof r=="string"&&cx.has(r)}function us(e){return!!(e&&lx.test(e))}function mp(e){if(e.noRestartAt?.trim())return"stopped_by_hand";if(e.finalResult&&!Pa(e.finalResult))return"finished";if(e.alive)return e.stale?"stuck":"running";let r=e.error?.trim()??"",t=e.exit??null;if(t?.oomEvidence||us(r))return"oom";let n=e.reconcileReason??"";return/reconciled stale worker/i.test(n)?"stuck":dp.test(r)||dp.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 fp(e){let r=[ux(e.stopClass)],t=up(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 ux(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"}}function gp(e,r=process.env){if(e<=0)return null;let t=Number.parseInt(r.KYNVER_NODE_OLD_SPACE_SIZE_MB??"",10),n=Number.isFinite(t)&&t>0?Math.max(t,pp/2):pp/2;return Math.min(dx,n*2**e)}function hp(e,r,t){let n=0,o;try{o=q(e)}catch{return 0}for(let s of Object.keys(o.workers||{})){if(t&&s===t)continue;let i=I(ax.join(N(o.id),"workers",x(s),"worker.json"),void 0);if(!(!i||i.taskId!==r)){if(i.stopClass==="oom"||i.oomEvidence){n+=1;continue}if(cs(i.workerDir)?.oomEvidence){n+=1;continue}!i.stopClass&&i.stderrPath&&us(Mt(i.stderrPath,20))&&(n+=1)}}return n}function kp(e,r){if(!e)return r();let t=process.env.KYNVER_NODE_OLD_SPACE_SIZE_MB,n=process.env.NODE_OPTIONS;process.env.KYNVER_NODE_OLD_SPACE_SIZE_MB=String(e);let o=`--max-old-space-size=${e}`,s=(n??"").replace(/--max-old-space-size=\d+/g,"").trim();process.env.NODE_OPTIONS=s?`${s} ${o}`:o;try{return r()}finally{t===void 0?delete process.env.KYNVER_NODE_OLD_SPACE_SIZE_MB:process.env.KYNVER_NODE_OLD_SPACE_SIZE_MB=t,n===void 0?delete process.env.NODE_OPTIONS:process.env.NODE_OPTIONS=n}}var lx,dp,cx,pp,dx,Aa=P(()=>{"use strict";B();O();xr();lx=/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,dp=/\btimed? ?out\b|\btimeout\b|deadline exceeded/i,cx=new Set(["exited_without_final_result","exited_without_complete_heartbeat","exit_failure"]);pp=2048,dx=8192});function yp(e,r=240){let t=e.replace(/\s+/g," ").trim();return t.length>r?`${t.slice(0,r-1)}\u2026`:t}function $n(e){let r=(e??"").trim();if(!r)return null;if(Fn(r))return{blocked:!0,reason:`provider authentication failed: ${yp(r)}`};for(let t of px)if(t.test.test(r))return{blocked:!0,reason:`${t.label}: ${yp(r)}`};return null}var px,Ia=P(()=>{"use strict";ls();Kn();px=[{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:tp,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 Rp(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function mx(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 fx(e){return!e?.checked||e.headIsAncestorOfBase!==!1?null:Rp(e.head)}function gx(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 Kt(e){if(e.alive||mx(e.finalResult))return null;let r=(e.changedFiles??[]).filter(i=>i.trim()).length,t=Rp(e.headCommit)??fx(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:gx(s,r,t)}}var ds=P(()=>{"use strict"});import{existsSync as hx,readFileSync as kx,statSync as Sp}from"node:fs";import ps from"node:path";function bx(e,r=process.env){let t=e?Rx:yx,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 Sx(e){return e.baseCommit?.trim()||e.base?.trim()||"origin/main"}function Oa(e){try{return Sp(e).mtimeMs}catch{return-1}}function wx(e){let r=ps.join(e,".git");try{if(Sp(r).isDirectory())return r;let t=/^gitdir:\s*(.+)$/m.exec(kx(r,"utf8"));return t?ps.resolve(e,t[1].trim()):null}catch{return null}}function vp(e){let r=wx(e);return[Oa(e),r?Oa(ps.join(r,"HEAD")):-2,r?Oa(ps.join(r,"index")):-2].join(":")}function bp(e,r){return{changedFiles:An(e),gitAncestry:Qo(e,{base:r.base,baseCommit:r.baseCommit})}}function xx(e,r){for(Yr.delete(e),Yr.set(e,r);Yr.size>vx;){let t=Yr.keys().next().value;if(t===void 0)break;Yr.delete(t)}}function wp(e,r,t){let n=Sx(r);if(!e||!e.trim())return jn.missingWorktree++,{changedFiles:[],gitAncestry:Lt(n,"missing worktree path")};let o=`${e}\0${n}`;if(!hx(e))return Yr.delete(o),jn.missingWorktree++,{changedFiles:[],gitAncestry:Lt(n,`worktree no longer exists: ${e}`)};if(t.alive)return Yr.delete(o),jn.liveProbes++,bp(e,r);let s=t.ttlMs??bx(!!r.baseCommit?.trim()),i=t.now??Date.now(),a=vp(e),l=Yr.get(o);if(s>0&&l&&l.fingerprint===a&&i<l.expiresAt)return jn.hits++,l.probe;jn.misses++;let c=bp(e,r);if(s>0){let u=.8+.4*(t.random??Math.random)();xx(o,{fingerprint:vp(e),expiresAt:i+Math.round(s*u),probe:c})}return c}var yx,Rx,vx,Yr,jn,xp=P(()=>{"use strict";de();yx=10*6e4,Rx=60*6e4,vx=2048,Yr=new Map,jn={hits:0,misses:0,liveProbes:0,missingWorktree:0}});function Vn(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function _x(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 Ex(e){if(Vn(e.headCommit)||Vn(e.prUrl)||Vn(e.artifactBundlePath)||Vn(e.patchPath))return!0;let r=e.gitAncestry;return!!(r?.checked&&r.headIsAncestorOfBase===!1&&Vn(r.head))}function Ht(e){return _x(e.finalResult)?e.changedFiles.length===0?{blocked:!1}:Ex(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 _p(e){if(e.blocked)return e.detail??e.reason??"dirty_worktree_no_pr"}var ms=P(()=>{"use strict"});function Ta(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 Ep(e){let r=e.targetPrReconciliation??e.target_pr_reconciliation??e.targetPrs??e.target_prs;return Array.isArray(r)?r.length:0}function $t(e){let r=e.trim();if(!r)return null;let t=Ta(r);if(t)return t;let n=[],o=/```(?:json)?\s*([\s\S]*?)```/gi,s;for(;(s=o.exec(r))!==null;){let u=Ta(s[1]??"");u&&n.push(u)}let i=r.indexOf("{"),a=r.lastIndexOf("}");if(i>=0&&a>i){let u=Ta(r.slice(i,a+1));u&&n.push(u)}if(n.length===0)return null;let l=n[n.length-1],c=Ep(l);for(let u of n){let d=Ep(u);d>c&&(l=u,c=d)}return l}var fs=P(()=>{"use strict"});function Cp(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 Pp(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`${r[1].toLowerCase()}/pull/${r[2]}`:e.trim().toLowerCase()}function Cx(e){return new Set(e.map(r=>Pp(Cp(r)??r)).filter(Boolean))}function Ap(e,r,t){let n=Cp(e)??e;if(!n)return"unrelated";let o=Pp(n);return Cx(r).has(o)?"contract":t?(t.outcome==="skipped"||t.outcome==="blocked")&&t.reason?.trim()?"support":(t.outcome==="merged","unrelated"):"unrelated"}var Ip=P(()=>{"use strict"});function jt(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function Px(e){return e==null?!1:typeof e=="string"?e.trim().length>0:typeof e=="object"?Object.keys(e).length>0:!0}function ft(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`https://github.com/${r[1]}/pull/${r[2]}`:jt(e)}function gs(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`${r[1].toLowerCase()}/pull/${r[2]}`:e.trim().toLowerCase()}function Op(e){let r=null;if(typeof e=="string"){let o=$t(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=ft(String(s.prUrl??s.pr_url??"")),a=jt(s.outcome);!i||a!=="merged"&&a!=="skipped"&&a!=="blocked"||n.push({prUrl:i,outcome:a,mergeCommit:jt(s.mergeCommit??s.merge_commit),reason:jt(s.reason)})}return n}function Tp(e,r){let t=[],n=ft(jt(e.prUrl)??"");if(n&&t.push(n),r&&typeof r=="object"&&!Array.isArray(r)){let o=r,s=ft(String(o.prUrl??o.pr_url??""));s&&t.push(s)}return[...new Set(t)]}function Np(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(!Px(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?ft(jt(r.targetPrUrl)??"")??(r.targetPrUrls.length===1?ft(r.targetPrUrls[0]):null):null;if(s){let d=Tp(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=Op(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=Op(n),a=new Map(i.map(d=>[gs(d.prUrl),d])),l=new Set(r.targetPrUrls.map(d=>gs(ft(d)??d)).filter(Boolean)),c=Tp(t,n);if(r.landingOnly)for(let d of c){let p=a.get(gs(d)),m=Ap(d,r.targetPrUrls,p);if(!(m==="contract"||m==="support"))return l.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 u=[];for(let d of r.targetPrUrls){let p=gs(ft(d)??d),m=a.get(p);if(!m){u.push(p);continue}m.outcome!=="merged"&&!m.reason?.trim()&&u.push(p)}return u.length>0?{blocked:!0,reason:u.every(d=>a.has(d))?"incomplete_target_pr_landing":"missing_target_pr_reconciliation",detail:`Target PR reconciliation incomplete: ${u.join(", ")}`}:{blocked:!1}}function Dp(e){if(e.blocked)return e.detail??e.reason}var Mp=P(()=>{"use strict";fs();Ip()});function Ix(e){let r=Date.now();if(e.providerTerminalError||as(e.finalResult)||e.finalResult&&e.error?.trim()||Fn(e.error)||Fn(e.finalResult)){let o=e.error||(typeof e.finalResult=="string"?e.finalResult:"provider terminal error");return{state:"blocked",reason:$n(o)?.reason??`provider terminal error: ${o}`}}if(e.completionBlocker&&!Wp(e.completionBlocker))return{state:"blocked",reason:e.completionBlocker};if(e.finalResult){if(e.localOnly&&Tx(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=Ht(o);if(s.blocked){let i=_p(s);return{state:"needs_attention",reason:s.reason?`landing blocked (${s.reason}): ${i}`:`landing blocked: ${i}`}}if(e.landingContract){let i=Np({contract:e.landingContract,snapshot:o,finalResult:e.finalResult}),a=Dp(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(Ox(e))return{state:"done",reason:"empty abandoned worker record"};let o=$n(e.error);if(o)return{state:"blocked",reason:o.reason};let s=Kt({alive:!1,finalResult:null,changedFiles:e.changedFiles,gitAncestry:e.gitAncestry});if(s?.salvageable){let l=e.error?.trim();return{state:"needs_attention",reason:l?`${s.attentionReason} (${l})`:s.attentionReason}}let i=e.error?.trim(),a=us(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>Ax)return{state:"needs_attention",reason:`no first stream event ${la(t)}s after start`};let n=e.lastActivityAt?Date.parse(e.lastActivityAt):NaN;return Number.isFinite(n)&&r-n>Na?{state:"stale",reason:`no log/event/heartbeat activity for ${la(n)}s`}:{state:"ok",reason:"recent activity"}}function Wp(e){let r=e?.trim();return r?/completion acknowledged but board not advanced/i.test(r)&&/task already terminal/i.test(r):!1}function Ox(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 Tx(e){let r=null;if(typeof e=="string"?r=$t(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 Lp(e,r,t){let n=e.completionSnapshot?.finalResult;return e.completionAckSource==="local-pr-merged-reconcile"&&n!==void 0&&n!==null?n:r||(n??wr(t))}function Bp(e){let r=mt(e.stdoutPath),t=me(e.heartbeatPath);return Lp(e,r.finalResult,t)}function J(e,r={}){let t=mt(e.stdoutPath),n=me(e.heartbeatPath),o=typeof e.completionReportedAt=="string"&&e.completionReportedAt.trim().length>0,s=Lp(e,t.finalResult,n),i=o?!1:Y(e.pid),a=qo(e.stdoutPath),l=qo(e.stderrPath),c=qo(e.heartbeatPath),{changedFiles:u,gitAncestry:d}=wp(e.worktreePath,{base:r.base,baseCommit:r.baseCommit},{alive:i}),p=od([t.lastEventAt,n.lastHeartbeatAt,Jo(e.stdoutPath),Jo(e.stderrPath),Jo(e.heartbeatPath)]),m=i?null:cs(e.workerDir),f=s&&!Pa(s)?s:null,y=t.error||!i&&!s&&Mt(e.stderrPath,10).trim()||void 0,k=y||!i&&s&&!f&&Mt(e.stderrPath,10).trim()||void 0,b=typeof e.completionBlocker=="string"&&e.completionBlocker.trim()?e.completionBlocker.trim():null,g=Wp(b)?null:b,h=e.repairTargetPrUrl?{landingOnly:!1,targetPrUrls:[e.repairTargetPrUrl],targetPrUrl:e.repairTargetPrUrl,repairEnforceOriginalPr:!0}:null,w=Ix({alive:i,finalResult:s,firstEventAt:t.firstEventAt,stdoutBytes:a,stderrBytes:l,heartbeatBytes:c,lastActivityAt:p,heartbeatBlocker:n.heartbeatBlocker,startedAt:e.startedAt,error:y,providerTerminalError:t.providerTerminalError,changedFiles:u,gitAncestry:d,completionBlocker:g,landingContract:h,prUrl:e.repairTargetPrUrl??e.taskPrUrl??null,localOnly:e.localOnly===!0,taskId:e.taskId??null,agentOsId:e.agentOsId??null,reconcileReason:e.reconcileReason??null}),E=g||w.state==="blocked"?"blocked":o||w.state==="done"?"done":s?"exited":i?"running":"exited",S=e.stopClass&&e.stopClass!=="running"&&e.stopClass!=="finished"?e.stopClass:null,_=mp({alive:i,finalResult:s,error:k??null,stale:w.state==="stale",noRestartAt:e.noRestartAt??null,reconcileReason:e.reconcileReason??null,exit:m}),K=S&&!i&&!f?S:_,$=K==="running"||K==="finished"?null:(S===K?e.stopReason:void 0)??fp({stopClass:K,exit:m,error:k??null,reconcileReason:e.reconcileReason??null});return{runId:e.runId,worker:e.name,pid:e.pid,alive:i,status:E,stopClass:K,stopReason:$,exit:m,attention:w,branch:e.branch,worktreePath:e.worktreePath,ownedPaths:e.ownedPaths,stdoutBytes:a,stderrBytes:l,heartbeatBytes:c,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:u,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 xe(e){return!!(e.finalResult||e.alive===!1||e.status==="exited"||e.status==="done")}function Up(e){return e.finalResult?e.attention.state==="needs_attention"||e.attention.state==="blocked":!1}function Da(e,r){return r.length===0?e:r.some(t=>t.attention==="needs_attention"||t.attention==="stale"||t.attention==="blocked")?"needs_attention":r.every(t=>t.status==="done")?"done":r.some(t=>t.status==="running")?"running":e}var Ax,Na,fe=P(()=>{"use strict";dt();Hn();Aa();xr();ls();Ia();ds();xp();ms();Mp();fs();O();Ax=18e4,Na=6e5});import{readFileSync as Nx}from"node:fs";function Dx(e){if(!e||process.platform!=="linux")return null;try{return Nx(`/proc/${e}/cmdline`,"utf8").replace(/\0/g," ")}catch{return null}}function Fp(e){if(!e.pid||process.platform!=="linux")return!0;let r=Dx(e.pid);return r?[e.worktreePath,e.workerDir,e.heartbeatPath].filter(n=>typeof n=="string"&&n.trim().length>0).some(n=>r.includes(n)):!1}function qr(e){return typeof e.completionBlocker=="string"&&e.completionBlocker.trim()||typeof e.completionReportedAt=="string"&&e.completionReportedAt.trim()||!Y(e.pid)||!Fp(e)?!1:!Bp(e)}var hs=P(()=>{"use strict";fe();O()});import Hp from"node:os";import $p from"node:path";function Kp(e,r){let t=Number(e);return!Number.isFinite(t)||t<=0?r:Math.floor(t)}function Mx(e=U(),r,t){let n=Kp(e.perWorkerMemBytes,ks),o=Kp(e.memReserveBytes,ys),s=Math.min(1,Math.max(.1,Number(e.memUtilization)>0?Number(e.memUtilization):Rs)),i=bs({config:e,configuredMaxWorkersOverride:r,totalMemBytes:t??Hp.totalmem()});return{perWorkerMemBytes:n,memReserveBytes:o,memUtilization:s,configuredMaxWorkers:i.configuredMaxWorkers,autoCap:i.autoCap,workerCapSource:i.workerCapSource}}function jp(e,r={}){let t=r.perWorkerMemBytes??ks,n=r.memReserveBytes??ys,o=r.memUtilization??Rs,s=Math.max(0,Math.floor(e*o)-n),i=Math.max(1,Math.floor(s/t));return Math.min(i,vs)}function Wx(){return Nd()}function Lx(e){let r=0;for(let t of ar(e)){let n=I($p.join(N(e.id),"workers",x(t),"worker.json"),void 0);!n||!qr(n)||r++}return r}function Ma(){let e=0;for(let r of Xe())e+=Lx(r);return e}function Vt(){let e=[];for(let r of Xe())for(let t of ar(r)){let n=I($p.join(N(r.id),"workers",x(t),"worker.json"),void 0);n&&qr(n)&&e.push({runId:r.id,workerName:t})}return e}function Gn(e){let r=e.config??U(),t=e.totalMemBytes??Hp.totalmem(),{perWorkerMemBytes:n,memReserveBytes:o,memUtilization:s,configuredMaxWorkers:i,autoCap:a,workerCapSource:l}=Mx(r,e.configuredMaxWorkersOverride,t),c=Sr(r),u=e.freeMemBytes??Wx(),d=e.activeWorkers??Ma(),p=Math.max(0,Math.floor(t*s)-o),m=Math.max(0,Math.floor(p/n)),f=Math.max(0,Math.floor(Math.max(0,u-o)/n)),y=a,k=Mn(c,i??y),b=Math.max(0,Math.min(k,m)),g=Math.max(0,b-d),w=Math.min(g,f),S=e.skipDiskGate||process.env.KYNVER_RESOURCE_GATE_SKIP_DISK==="1"?void 0:Gr({diskPath:e.diskPath?.trim()||process.env.KYNVER_DISK_GUARD_PATH?.trim()||"/"});S&&!S.ok&&(w=0);let _=null;return w<=0&&(S&&!S.ok?_=S.reason??"disk gate blocked worker admission":d>=b?_=`at worker limit (${d}/${b} running)`:f<=0?_="insufficient free memory \u2014 waiting for workers to finish":_="no worker slots available"),{ok:w>0,totalMemBytes:t,freeMemBytes:u,memReserveBytes:o,perWorkerMemBytes:n,configuredMaxWorkers:i,workerCapSource:l,boxKind:c,autoCap:y,capacityWorkers:m,maxConcurrentWorkers:b,activeWorkers:d,slotsAvailable:w,reason:_,...S?{diskGate:S}:{}}}var ks,ys,Rs,vs,Gt=P(()=>{"use strict";Dd();H();Le();rs();Ss();Wn();B();Ln();hs();O();ks=500*1024*1024,ys=4*1024*1024*1024,Rs=.85,vs=64});function Yn(e,r){let t=Number(e);return!Number.isFinite(t)||t<=0?r:Math.floor(t)}function bs(e){let r=e.config??{},t=e.env??process.env,n=Yn(r.perWorkerMemBytes,ks),o=Yn(r.memReserveBytes,ys),s=Math.min(1,Math.max(.1,Number(r.memUtilization)>0?Number(r.memUtilization):Rs)),i=jp(e.totalMemBytes,{perWorkerMemBytes:n,memReserveBytes:o,memUtilization:s});if(e.configuredMaxWorkersOverride!==void 0&&e.configuredMaxWorkersOverride!==null)return{configuredMaxWorkers:Yn(e.configuredMaxWorkersOverride,i),autoCap:i,workerCapSource:"workspace_override"};if(r.maxConcurrentWorkers!==void 0&&r.maxConcurrentWorkers!==null){let c=Yn(r.maxConcurrentWorkers,0)||null;if(c)return{configuredMaxWorkers:Math.min(c,vs),autoCap:i,workerCapSource:"config"}}let l=(t.KYNVER_MAX_WORKERS_INTENTIONAL==="1"||t.KYNVER_MAX_WORKERS_INTENTIONAL==="true")&&t.KYNVER_MAX_WORKERS&&Yn(t.KYNVER_MAX_WORKERS,0)||null;return l?{configuredMaxWorkers:Math.min(l,vs),autoCap:i,workerCapSource:"env"}:{configuredMaxWorkers:null,autoCap:i,workerCapSource:"auto"}}var Ss=P(()=>{"use strict";Gt()});import{homedir as Bx}from"node:os";import Ux from"node:path";var Vp,Wa=P(()=>{"use strict";Vp=Ux.join(Bx(),".kynver",".env")});var Gp=P(()=>{"use strict"});var Yp=P(()=>{"use strict";Gp()});var qp=P(()=>{"use strict"});var La=P(()=>{"use strict";Yp();qp();Pn()});import{existsSync as Fx,readFileSync as Kx}from"node:fs";function Ba(){if(process.platform==="win32")return"win32";if(process.platform==="darwin")return"darwin";if(process.platform==="linux"){if(process.env.WSL_DISTRO_NAME?.trim())return"wsl";try{if(Fx("/proc/version")){let e=Kx("/proc/version","utf8");if(/microsoft/i.test(e))return"wsl"}}catch{}return"linux"}return"linux"}var Ua=P(()=>{"use strict"});var Jp=P(()=>{"use strict";Ua()});var ws=P(()=>{"use strict";Wa();Vr();H();La();Jp()});import $x from"node:os";function Fa(e,r){let t=(r??$x.hostname()).trim().toLowerCase().replace(/\s+/g,"-")||"unknown-host";return`${e}:${t}`}function Qp(e){return e.trim().toLowerCase().replace(/\s+/g,"-")}function Zp(e,r){let t=e.trim();if(!t)return Fa(r);let n=t.indexOf(":");if(n>=0){let o=t.slice(0,n).trim().toLowerCase()||r,s=Qp(t.slice(n+1));return s?`${o}:${s}`:Fa(o)}return`${r}:${Qp(t)}`}function xs(e){let r=e.explicitBoxId?.trim()||e.env?.KYNVER_BOX_ID?.trim()||e.config?.boxId?.trim();return r?Zp(r,e.boxKind):Fa(e.boxKind,e.hostLabel)}var _s=P(()=>{"use strict";Le();Le()});var em=P(()=>{"use strict";Wa();La();ws()});function Cs(){return Es}function tm(e){if(!Es)return e;if(!rm)throw new Ka;return rm}function Qe(e,r=process.env){if(Es)return;let t=r[e]?.trim();return t||void 0}function $a(){if(Es)throw new Ha}var Ka,Ha,Es,rm,qn=P(()=>{"use strict";Ka=class extends Error{constructor(){super("desktop credential provider is not installed; refusing to fall back to file or env credentials"),this.name="DesktopCredentialProviderMissingError"}},Ha=class extends Error{constructor(){super("the credentials file is disabled in desktop mode"),this.name="LegacyCredentialStoreDisabledError"}},Es=!1,rm=null});import{existsSync as _r,mkdirSync as jx,readdirSync as Ps,renameSync as nm,statSync as Vx}from"node:fs";import Er from"node:path";function sm(e){try{return Vx(e).isDirectory()}catch{return!1}}function Gx(e){if(!_r(e))return!0;for(let r of om){let t=Er.join(e,r);if(_r(t)&&(!sm(t)||Ps(t).length>0))return!1}return!0}function Yx(e){let r=Er.join(e,"runs");if(!_r(r)||!sm(r))return!1;for(let t of Ps(r,{withFileTypes:!0})){if(!t.isDirectory()||t.name==="runs")continue;let n=Er.join(r,t.name,"run.json");if(I(n,void 0)?.id)return!0}return!1}function qx(e){let r=Er.join(e,"runs");if(!_r(r))return!1;for(let t of Ps(r,{withFileTypes:!0})){if(!t.isDirectory())continue;if(I(Er.join(r,t.name,"run.json"),void 0)?.boxKind==="ghost")return!0}return!1}function Jx(e){let r=Er.join(e,"ghost");return _r(r)?!_r(Er.join(r,"runs")):qx(e)}function im(e){return Yx(e.sharedRoot)?Gx(e.forgeRoot)?Jx(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 am(e,r){jx(r,{recursive:!0});for(let t of om){let n=Er.join(e,t),o=Er.join(r,t);if(_r(n)){if(_r(o)&&Ps(o).length>0)throw new Error(`Forge legacy harness migration failed: ${o} is not empty`);if(_r(o)){nm(n,o);continue}nm(n,o)}}}var om,lm=P(()=>{"use strict";O();om=["runs","worktrees"]});import{existsSync as ve}from"node:fs";import{homedir as zx}from"node:os";import ge from"node:path";function ja(e=process.env){return e.HOME?.trim()||zx()}function Va(e=process.env){return ge.join(ja(e),".kynver","harness")}function As(e){let r=ge.resolve(We(e.trim()));for(;Xx.has(ge.basename(r));)r=ge.dirname(r);return r}function Qx(e,r=process.env){return ge.join(Va(r),e)}function Zx(e=process.env){let r=Va(e);if(ve(ge.join(r,"runs")))return!0;if(ve(r)&&!ve(ge.join(r,"ghost"))&&!ve(ge.join(r,"forge")))return ve(r);let t=ge.join(ja(e),cm);return ve(t)}function Is(e){let r=e.env??process.env,t=r.KYNVER_HARNESS_ROOT?.trim()||r.OPUS_HARNESS_ROOT?.trim();if(t)return{harnessRoot:As(t),source:"env"};let n=e.configuredHarnessRoot?.trim();if(n)return{harnessRoot:As(n),source:"config"};let o=Qx(e.boxKind,r);if(ve(ge.join(o,"runs"))||ve(o)&&!e_(o))return{harnessRoot:o,source:"box_scoped"};let i=Va(r);if(e.boxKind==="forge"){let a=im({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&&am(i,o),{harnessRoot:o,source:"legacy_migrated"}}if(e.boxKind==="ghost"&&Zx(r)){if(ve(ge.join(i,"runs")))return{harnessRoot:i,source:"legacy_shared"};if(ve(i)&&!ve(ge.join(i,"ghost"))&&!ve(ge.join(i,"forge")))return{harnessRoot:i,source:"legacy_shared"};let l=ge.join(ja(r),cm);if(ve(l))return{harnessRoot:l,source:"legacy_shared"}}return{harnessRoot:o,source:"box_scoped"}}function e_(e){if(!ve(e))return!0;for(let r of["runs","worktrees"]){let t=ge.join(e,r);if(ve(t))return!1}return!0}var cm,Xx,Ga=P(()=>{"use strict";Vr();lm();cm=ge.join(".openclaw","harness");Xx=new Set(["runs","worktrees"])});import um from"node:os";function Os(e){return e?.trim()?e.trim():null}function r_(e,r){let t=r.trim().toLowerCase()||"host";return`${e}-${t}`.replace(/[^a-z0-9._-]+/g,"-")}function t_(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 Yt(e=U(),r=process.env,t={}){let n=br(r,e),o=[...n.warnings],s=[],i=!!(e.boxKind?.trim()||Os(r.KYNVER_BOX_KIND)),a=t.strict===!0||t_(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 l=Os(e.runnerId),c=Os(r.KYNVER_RUNTIME_ID)??Os(r.OPENCLAW_RUNTIME_ID),u=l??c??r_(n.boxKind,um.hostname()),d=l?"config":c?"env":"derived";d==="derived"&&o.push(`runnerId not persisted \u2014 using derived id "${u}"; run \`kynver setup --box-kind ${n.boxKind}\` to persist runner identity`);let p=bs({config:e,env:r,totalMemBytes:um.totalmem()}),m=Mn(n.boxKind,p.configuredMaxWorkers??ka(n.boxKind,p.autoCap)),f=Is({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:u,runnerIdSource:d,maxConcurrentWorkers:m,workerCapSource:p.workerCapSource,harnessRoot:f.harnessRoot,harnessRootSource:f.source},errors:s,warnings:o}}var Jn=P(()=>{"use strict";H();Le();rs();Ss();Ga()});var pm=P(()=>{"use strict";In();Le();_s();H();ws();em();Dn();qn();Jn()});function lr(e){let r=e.trim().toLowerCase();return s_[r]??r}var mm,o_,s_,Ts=P(()=>{"use strict";mm=["claude","cursor","codex","gemini","gemini-api","openai-compatible","venice"],o_=mm.join("|"),s_={anthropic:"claude",opus:"claude",openai:"openai-compatible",openai_compatible:"openai-compatible","openai-compat":"openai-compatible",chatgpt:"codex",gpt:"codex","openai-api":"openai-compatible",openai_api:"openai-compatible","venice-ai":"venice",venice_ai:"venice",veniceai:"venice",google:"gemini",gemini_cli:"gemini",gemini_api:"gemini-api","google-api":"gemini-api",google_api:"gemini-api"}});var fm=P(()=>{"use strict";Vr()});var gm=P(()=>{"use strict";fm()});import{execFileSync as i_}from"node:child_process";function Ja(e=process.env){let r=e[l_]?.trim().toLowerCase();return r==="file"?"file":r==="keychain"?"keychain":"auto"}function c_(e,r,t){if(!hm.test(e)||!hm.test(r))return null;let n=Buffer.from(t,"utf8").toString("hex");return`add-generic-password -U -s ${e} -a ${r} -l Kynver-${r} -X ${n}
76
- `}function u_(e,r,t){let n={encoding:"utf8",timeout:t.timeoutMs,stdio:["pipe","pipe","pipe"],windowsHide:!0,...t.input!==void 0?{input:t.input}:{}};return i_(e,r,n)}function d_(e=process.platform){return e==="darwin"?"macos":e==="linux"?"libsecret":e==="win32"?"windows":null}function Ya(e,r,t){let n=JSON.stringify(t),o=JSON.stringify(r),s="[void][Windows.Security.Credentials.PasswordVault,Windows.Security.Credentials,ContentType=WindowsRuntime]; $v = New-Object Windows.Security.Credentials.PasswordVault;";return e==="get"?`${s} try { $c = $v.Retrieve(${n}, ${o}); $c.RetrievePassword(); [Console]::Out.Write($c.Password) } catch { exit 3 }`:e==="set"?`${s} $s = [Console]::In.ReadToEnd().TrimEnd("\`r","\`n"); try { $old = $v.Retrieve(${n}, ${o}); $v.Remove($old) } catch {}; $v.Add((New-Object Windows.Security.Credentials.PasswordCredential(${n}, ${o}, $s)))`:`${s} try { $old = $v.Retrieve(${n}, ${o}); $v.Remove($old) } catch {}`}function km(e={}){if(Ja(e.env??process.env)==="file")return null;let t=d_(e.platform??process.platform);return t?new qa(t,e.exec,e.service):null}var a_,l_,Cr,hm,qa,ym=P(()=>{"use strict";a_="kynver",l_="KYNVER_CREDENTIAL_STORE";Cr=5e3,hm=/^[A-Za-z0-9_.@:-]{1,128}$/;qa=class{constructor(r,t=u_,n=a_){this.backend=r;this.exec=t;this.service=n}backend;exec;service;get(r){try{if(this.backend==="macos"){let s=this.exec("security",["find-generic-password","-s",this.service,"-a",r,"-w"],{timeoutMs:Cr}).replace(/\r?\n$/,"");return s||null}if(this.backend==="libsecret"){let s=this.exec("secret-tool",["lookup","service",this.service,"account",r],{timeoutMs:Cr}).replace(/\r?\n$/,"");return s||null}let n=this.exec("powershell.exe",["-NoProfile","-NonInteractive","-Command",Ya("get",r,this.service)],{timeoutMs:Cr}).replace(/\r?\n$/,"");return n||null}catch{return null}}set(r,t){if(!t||/[\r\n]/.test(t))return!1;try{if(this.backend==="macos"){let n=c_(this.service,r,t);if(!n)return!1;this.exec("security",["-i"],{input:n,timeoutMs:Cr})}else this.backend==="libsecret"?this.exec("secret-tool",["store",`--label=Kynver (${r})`,"service",this.service,"account",r],{input:`${t}
77
- `,timeoutMs:Cr}):this.exec("powershell.exe",["-NoProfile","-NonInteractive","-Command",Ya("set",r,this.service)],{input:`${t}
78
- `,timeoutMs:Cr})}catch{return!1}return this.get(r)===t}delete(r){try{this.backend==="macos"?this.exec("security",["delete-generic-password","-s",this.service,"-a",r],{timeoutMs:Cr}):this.backend==="libsecret"?this.exec("secret-tool",["clear","service",this.service,"account",r],{timeoutMs:Cr}):this.exec("powershell.exe",["-NoProfile","-NonInteractive","-Command",Ya("delete",r,this.service)],{timeoutMs:Cr})}catch{}}}});function zn(){return za||(za=new Xa),za}var Qa,p_,Ns,Xa,za,Za=P(()=>{"use strict";ym();Qa="api-key",p_=6e4,Ns=class extends Error{constructor(r){super(`KYNVER_CREDENTIAL_STORE=keychain but the OS keychain could not store "${r}"; refusing to write the secret to disk`),this.name="KeychainUnavailableError"}},Xa=class{cache=new Map;keychain;env;now;constructor(r={}){this.env=r.env??process.env,this.keychain=r.keychain===void 0?km({env:this.env}):r.keychain,this.now=r.now??Date.now}get available(){return this.keychain!==null}get backend(){return this.keychain?.backend??null}read(r){if(!this.keychain)return null;let t=this.cache.get(r);if(t&&this.now()-t.at<p_)return t.value;let n=this.keychain.get(r);return this.cache.set(r,{value:n,at:this.now()}),n}write(r,t){let n=Ja(this.env);if(!this.keychain){if(n==="keychain")throw new Ns(r);return!1}let o=this.keychain.set(r,t);if(o)this.cache.set(r,{value:t,at:this.now()});else if(this.cache.delete(r),n==="keychain")throw new Ns(r);return o}remove(r){this.cache.delete(r),this.keychain?.delete(r)}invalidate(r){r?this.cache.delete(r):this.cache.clear()}},za=null});import{existsSync as vm,mkdirSync as f_,readFileSync as bm,writeFileSync as g_}from"node:fs";import{homedir as h_,totalmem as MF}from"node:os";import tl from"node:path";function k_(e){return{...e,...e.harnessRoot?.trim()?{harnessRoot:We(e.harnessRoot.trim())}:{},...e.defaultRepo?.trim()?{defaultRepo:We(e.defaultRepo.trim())}:{}}}function Sm(e){let r=e.defaultRepo?.trim();return!r||e.defaultBase?.trim()||!vd(We(r))?e:{...e,defaultBase:Rd}}function y_(){if(!vm(Rm))return null;try{return JSON.parse(bm(Rm,"utf8"))}catch{return null}}function U(){let e=y_();return e?Sm(k_(e)):{}}function Ds(){if($a(),!vm(el))return{};try{return JSON.parse(bm(el,"utf8"))}catch{return{}}}function rl(e){$a(),f_(nl,{recursive:!0}),g_(el,`${JSON.stringify(e,null,2)}
79
- `,{mode:384})}function R_(e,r,t,n={}){let o=Ds();if(zn().write(e,t)){let i={...o,...n};delete i[r],i.store="keychain",i.keychainAccounts=Array.from(new Set([...o.keychainAccounts??[],e])).sort(),rl(i);return}rl({...o,...n,[r]:t})}function v_(e,r){let t=zn().read(e);return t||Ds()[r]}function ol(){return tm(b_)}function Pr(){return ol().getApiKey()}function qt(e){return ol().getRunnerToken(e)}function sl(e,r){ol().persistRunnerToken(e,r)}function Q(e){let r=Xn(e);return r||_m("requires --base-url, KYNVER_API_URL, KYNVER_CRON_FIRE_BASE_URL, or ~/.kynver/config.json apiBaseUrl"),r}function il(e){return Xn(e)}function Xn(e){let r=e||process.env.KYNVER_API_URL||process.env.KYNVER_CRON_FIRE_BASE_URL||process.env.OPENCLAW_CRON_FIRE_BASE_URL||U().apiBaseUrl;return Tn(r)}function S_(e,r){let t=e||qt(r)||(r?void 0:qt(U().agentOsId));if(t)return String(t);let n=Qe("KYNVER_RUNTIME_SECRET")||Qe("KYNVER_CRON_SECRET")||Qe("OPENCLAW_CRON_SECRET");if(n)return console.warn("[kynver] using deployment-level callback secret; run `kynver runner credential --agent-os-id <id>` for a scoped token"),String(n)}async function w_(e,r,t){let n=S_(e,r);if(n)return{ok:!0,secret:n};let o=Pr(),s=Xn(t?.baseUrl);if(o&&r&&s)try{let i=await al(r,{baseUrl:s,apiKey:o});return sl(r,i),{ok:!0,secret:i}}catch(i){return{ok:!1,reason:`runner credential mint failed: ${i.message}`}}return{ok:!1,reason:"no runner credential: requires --secret, KYNVER_RUNNER_TOKEN, a scoped runner token (`kynver runner credential`), ~/.kynver/credentials runnerToken, or KYNVER_API_KEY + API base URL to mint one"}}async function ee(e,r,t){let n=await w_(e,r,t);if(n.ok)return n.secret;_m(n.reason)}async function wm(e,r){let t=Pr(),n=Xn(r?.baseUrl);if(!t||!e||!n)return null;try{let o=await al(e,{baseUrl:n,apiKey:t});return sl(e,o),o}catch{return null}}async function xm(e,r,t){let n=Pr(),o=Xn(t?.baseUrl);if(!n)return{ok:!1,reason:"KYNVER_API_KEY is required to refresh a rejected runner token"};if(!r)return{ok:!1,reason:"agentOsId is required to refresh a rejected runner token"};if(!o)return{ok:!1,reason:"KYNVER_API_URL or --base-url is required to refresh a rejected runner token"};try{let s=await al(r,{baseUrl:o,apiKey:n});return s&&s!==e?(sl(r,s),{ok:!0,token:s}):{ok:!1,reason:"runner credential refresh returned the rejected token"}}catch(s){return{ok:!1,reason:s.message}}}async function al(e,r){let t=r?.apiKey||Pr();if(!t)throw new Error("API key required \u2014 run `kynver login` first");let o=`${Q(r?.baseUrl)}/api/agent-os/by-id/${encodeURIComponent(e)}/runner-credentials`,s=await Nn(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`},body:JSON.stringify(r?.enableMcpUpdates?{enableMcpUpdates:!0}:{})}),i=await s.text(),a=null;try{a=JSON.parse(i)}catch{a=null}if(!s.ok||!a?.token)throw new Error(`runner credential mint failed (${s.status}): ${a?.error??i.slice(0,200)}`);return a.token}function _m(e){console.error(e),process.exit(1)}var nl,Rm,el,ZF,eK,b_,H=P(()=>{"use strict";In();Vr();fa();Cd();Dn();Le();rs();Ss();Wn();ws();pm();Ts();Jn();gm();qn();Za();nl=tl.join(h_(),".kynver"),Rm=tl.join(nl,"config.json"),el=tl.join(nl,"credentials");ZF=500*1024*1024,eK=4*1024*1024*1024;b_={kind:"file",getApiKey(){return process.env.KYNVER_API_KEY?process.env.KYNVER_API_KEY:v_(Qa,"apiKey")},getRunnerToken(e){let r=Ds();if(!!r.runnerToken&&!!e&&r.runnerTokenAgentOsId===e)return r.runnerToken;let n=process.env.KYNVER_RUNNER_TOKEN?.trim();if(n)return n;if(r.runnerToken&&!(e&&r.runnerTokenAgentOsId&&r.runnerTokenAgentOsId!==e))return r.runnerToken},persistApiKey(e){R_(Qa,"apiKey",e)},persistRunnerToken(e,r){rl({...Ds(),runnerToken:r,runnerTokenAgentOsId:e})}}});import ll from"node:path";function he(e){return As(e)}function Ue(){let e=process.env.KYNVER_HARNESS_ROOT||process.env.OPUS_HARNESS_ROOT;if(e)return he(e);let r=U(),t=r.harnessRoot?.trim();if(t)return he(t);let n=Yt(r,process.env);return n.identity?n.identity.harnessRoot:Is({boxKind:"forge",configuredHarnessRoot:null}).harnessRoot}function Ae(e){return ll.join(he(e),"runs")}function Jt(e){return ll.join(he(e),"worktrees")}function Em(){let e=Ue();return{harnessRoot:e,runsDir:Ae(e),worktreesDir:Jt(e)}}function Ar(e,r){return ll.join(e,x(r))}var Ze=P(()=>{"use strict";H();Ga();Jn();O()});import{existsSync as Ms,readdirSync as x_,statSync as __}from"node:fs";import gt from"node:path";function le(){return Em()}function q(e){let{runsDir:r}=le(),t=gt.join(Ar(r,x(e)),"run.json");return Ms(t)||Je(`run '${e}' not found`),I(t)}function Xe(){let{runsDir:e}=le();return Cm(e)}function Ws(e){return Cm(Ae(e))}function E_(e){try{return __(e).isDirectory()}catch{return!1}}function Cm(e){if(!Ms(e))return[];let r=[];for(let t of x_(e,{withFileTypes:!0})){if(t.name==="runs")continue;let n=gt.join(e,t.name);if(!E_(n))continue;let o=I(gt.join(n,"run.json"),void 0);o?.id&&r.push(o)}return r}function zt(e,r){let{runsDir:t}=le(),n=gt.join(Ar(t,x(e)),"run.json"),o=gt.join(Ar(t,x(e)),"workers",x(r),"worker.json");return Ms(o)||(Ms(n)||Je(`run '${e}' not found`),Je(`worker '${r}' not found in run '${e}'`)),I(o)}function Ie(e){let{runsDir:r}=le();ue(gt.join(Ar(r,e.id),"run.json"),e)}function L(e,r){let{runsDir:t}=le();ue(gt.join(Ar(t,e),"workers",r.name,"worker.json"),r)}function N(e){let{harnessRoot:r}=le();return Qn(r,e)}function Qn(e,r){return Ar(Ae(e),x(r))}var B=P(()=>{"use strict";Ze();O()});import{parentPort as Ob,workerData as uL}from"node:worker_threads";var xn=null,Ju=-1,zu=0;function Xu(e){xn=e}function Qu(e=Date.now()){return!xn||xn.stallCount===Ju&&e-zu<9e5?null:(Ju=xn.stallCount,zu=e,xn)}var Wb="embedded-1",Lb=[{slug:"ghost",displayName:"Ghost",description:"Orchestration persona.",dispatchLane:null,defaultRoleLane:"system"},{slug:"astra",displayName:"Astra",description:"Planning persona.",dispatchLane:"implementation",defaultRoleLane:"plan_author"},{slug:"rhea",displayName:"Rhea",description:"Implementation persona.",dispatchLane:"implementation",defaultRoleLane:"implementer"},{slug:"mnemo",displayName:"Mnemo",description:"Implementation persona.",dispatchLane:"implementation",defaultRoleLane:"implementer"},{slug:"sentinel",displayName:"Sentinel",description:"Review persona.",dispatchLane:"review",defaultRoleLane:"deep_reviewer"},{slug:"pixel",displayName:"Pixel",description:"Implementation persona.",dispatchLane:"implementation",defaultRoleLane:"implementer"},{slug:"schema",displayName:"Schema",description:"Implementation persona.",dispatchLane:"implementation",defaultRoleLane:"implementer"},{slug:"atlas",displayName:"Atlas",description:"Implementation persona.",dispatchLane:"implementation",defaultRoleLane:"runtime_verifier"},{slug:"bridge",displayName:"Bridge",description:"Implementation persona.",dispatchLane:"implementation",defaultRoleLane:"implementer"},{slug:"catalyst",displayName:"Catalyst",description:"Implementation persona.",dispatchLane:"implementation",defaultRoleLane:"implementer"},{slug:"lorentz",displayName:"Lorentz",description:"Review persona.",dispatchLane:"review",defaultRoleLane:"report_reviewer"},{slug:"dalton",displayName:"Dalton",description:"Landing persona.",dispatchLane:"landing",defaultRoleLane:"implementer"}],Bb={"worker.prompt.core_rules":["Structured final result (recommended): record completion as JSON with summary, files, PR URLs, verification, risks, and blockers.","Completion handoff (required): before you stop, summarize the outcome in your last message and append a heartbeat line with phase `complete` and a structured finalResult object. Commit your work cleanly and open a GitHub PR (draft OK) for substantial changes \u2014 never leave uncommitted changes behind without reporting them.","Review-only workers must not open new implementation PRs \u2014 review the existing PR and record a verdict in the final result. Prefer `gh pr view` / `gh pr diff`; if a local checkout is needed, use a disposable ref or detached worktree, not a checked-out `pr-*` branch.","Keep verification targeted to touched paths; avoid full-monorepo verification unless explicitly requested.","Do not run `npm publish`.","If verification fails, append a heartbeat line immediately with the failing command, reason, and next action."].join(`
75
+ `});import ax from"node:path";function Pa(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let r=e.handoffState;return typeof r=="string"&&cx.has(r)}function ds(e){return!!(e&&lx.test(e))}function mp(e){if(e.noRestartAt?.trim())return"stopped_by_hand";if(e.finalResult&&!Pa(e.finalResult))return"finished";if(e.alive)return e.stale?"stuck":"running";let r=e.error?.trim()??"",t=e.exit??null;if(t?.oomEvidence||ds(r))return"oom";let n=e.reconcileReason??"";return/reconciled stale worker/i.test(n)?"stuck":dp.test(r)||dp.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 fp(e){let r=[ux(e.stopClass)],t=up(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 ux(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"}}function gp(e,r=process.env){if(e<=0)return null;let t=Number.parseInt(r.KYNVER_NODE_OLD_SPACE_SIZE_MB??"",10),n=Number.isFinite(t)&&t>0?Math.max(t,pp/2):pp/2;return Math.min(dx,n*2**e)}function hp(e,r,t){let n=0,o;try{o=q(e)}catch{return 0}for(let s of Object.keys(o.workers||{})){if(t&&s===t)continue;let i=I(ax.join(N(o.id),"workers",x(s),"worker.json"),void 0);if(!(!i||i.taskId!==r)){if(i.stopClass==="oom"||i.oomEvidence){n+=1;continue}if(us(i.workerDir)?.oomEvidence){n+=1;continue}!i.stopClass&&i.stderrPath&&ds(Wt(i.stderrPath,20))&&(n+=1)}}return n}function kp(e,r){if(!e)return r();let t=process.env.KYNVER_NODE_OLD_SPACE_SIZE_MB,n=process.env.NODE_OPTIONS;process.env.KYNVER_NODE_OLD_SPACE_SIZE_MB=String(e);let o=`--max-old-space-size=${e}`,s=(n??"").replace(/--max-old-space-size=\d+/g,"").trim();process.env.NODE_OPTIONS=s?`${s} ${o}`:o;try{return r()}finally{t===void 0?delete process.env.KYNVER_NODE_OLD_SPACE_SIZE_MB:process.env.KYNVER_NODE_OLD_SPACE_SIZE_MB=t,n===void 0?delete process.env.NODE_OPTIONS:process.env.NODE_OPTIONS=n}}var lx,dp,cx,pp,dx,Aa=P(()=>{"use strict";B();O();_r();lx=/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,dp=/\btimed? ?out\b|\btimeout\b|deadline exceeded/i,cx=new Set(["exited_without_final_result","exited_without_complete_heartbeat","exit_failure"]);pp=2048,dx=8192});function yp(e,r=240){let t=e.replace(/\s+/g," ").trim();return t.length>r?`${t.slice(0,r-1)}\u2026`:t}function jn(e){let r=(e??"").trim();if(!r)return null;if(Kn(r))return{blocked:!0,reason:`provider authentication failed: ${yp(r)}`};for(let t of px)if(t.test.test(r))return{blocked:!0,reason:`${t.label}: ${yp(r)}`};return null}var px,Ia=P(()=>{"use strict";cs();Hn();px=[{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:tp,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 Rp(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function mx(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 fx(e){return!e?.checked||e.headIsAncestorOfBase!==!1?null:Rp(e.head)}function gx(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 Ht(e){if(e.alive||mx(e.finalResult))return null;let r=(e.changedFiles??[]).filter(i=>i.trim()).length,t=Rp(e.headCommit)??fx(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:gx(s,r,t)}}var ps=P(()=>{"use strict"});import{existsSync as hx,readFileSync as kx,statSync as Sp}from"node:fs";import ms from"node:path";function bx(e,r=process.env){let t=e?Rx:yx,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 Sx(e){return e.baseCommit?.trim()||e.base?.trim()||"origin/main"}function Oa(e){try{return Sp(e).mtimeMs}catch{return-1}}function wx(e){let r=ms.join(e,".git");try{if(Sp(r).isDirectory())return r;let t=/^gitdir:\s*(.+)$/m.exec(kx(r,"utf8"));return t?ms.resolve(e,t[1].trim()):null}catch{return null}}function vp(e){let r=wx(e);return[Oa(e),r?Oa(ms.join(r,"HEAD")):-2,r?Oa(ms.join(r,"index")):-2].join(":")}function bp(e,r){return{changedFiles:In(e),gitAncestry:Zo(e,{base:r.base,baseCommit:r.baseCommit})}}function xx(e,r){for(qr.delete(e),qr.set(e,r);qr.size>vx;){let t=qr.keys().next().value;if(t===void 0)break;qr.delete(t)}}function wp(e,r,t){let n=Sx(r);if(!e||!e.trim())return Vn.missingWorktree++,{changedFiles:[],gitAncestry:Bt(n,"missing worktree path")};let o=`${e}\0${n}`;if(!hx(e))return qr.delete(o),Vn.missingWorktree++,{changedFiles:[],gitAncestry:Bt(n,`worktree no longer exists: ${e}`)};if(t.alive)return qr.delete(o),Vn.liveProbes++,bp(e,r);let s=t.ttlMs??bx(!!r.baseCommit?.trim()),i=t.now??Date.now(),a=vp(e),l=qr.get(o);if(s>0&&l&&l.fingerprint===a&&i<l.expiresAt)return Vn.hits++,l.probe;Vn.misses++;let c=bp(e,r);if(s>0){let u=.8+.4*(t.random??Math.random)();xx(o,{fingerprint:vp(e),expiresAt:i+Math.round(s*u),probe:c})}return c}var yx,Rx,vx,qr,Vn,xp=P(()=>{"use strict";de();yx=10*6e4,Rx=60*6e4,vx=2048,qr=new Map,Vn={hits:0,misses:0,liveProbes:0,missingWorktree:0}});function Gn(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function _x(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 Ex(e){if(Gn(e.headCommit)||Gn(e.prUrl)||Gn(e.artifactBundlePath)||Gn(e.patchPath))return!0;let r=e.gitAncestry;return!!(r?.checked&&r.headIsAncestorOfBase===!1&&Gn(r.head))}function $t(e){return _x(e.finalResult)?e.changedFiles.length===0?{blocked:!1}:Ex(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 _p(e){if(e.blocked)return e.detail??e.reason??"dirty_worktree_no_pr"}var fs=P(()=>{"use strict"});function Ta(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 Ep(e){let r=e.targetPrReconciliation??e.target_pr_reconciliation??e.targetPrs??e.target_prs;return Array.isArray(r)?r.length:0}function jt(e){let r=e.trim();if(!r)return null;let t=Ta(r);if(t)return t;let n=[],o=/```(?:json)?\s*([\s\S]*?)```/gi,s;for(;(s=o.exec(r))!==null;){let u=Ta(s[1]??"");u&&n.push(u)}let i=r.indexOf("{"),a=r.lastIndexOf("}");if(i>=0&&a>i){let u=Ta(r.slice(i,a+1));u&&n.push(u)}if(n.length===0)return null;let l=n[n.length-1],c=Ep(l);for(let u of n){let d=Ep(u);d>c&&(l=u,c=d)}return l}var gs=P(()=>{"use strict"});function Cp(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 Pp(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`${r[1].toLowerCase()}/pull/${r[2]}`:e.trim().toLowerCase()}function Cx(e){return new Set(e.map(r=>Pp(Cp(r)??r)).filter(Boolean))}function Ap(e,r,t){let n=Cp(e)??e;if(!n)return"unrelated";let o=Pp(n);return Cx(r).has(o)?"contract":t?(t.outcome==="skipped"||t.outcome==="blocked")&&t.reason?.trim()?"support":(t.outcome==="merged","unrelated"):"unrelated"}var Ip=P(()=>{"use strict"});function Vt(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function Px(e){return e==null?!1:typeof e=="string"?e.trim().length>0:typeof e=="object"?Object.keys(e).length>0:!0}function gt(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`https://github.com/${r[1]}/pull/${r[2]}`:Vt(e)}function hs(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`${r[1].toLowerCase()}/pull/${r[2]}`:e.trim().toLowerCase()}function Op(e){let r=null;if(typeof e=="string"){let o=jt(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=gt(String(s.prUrl??s.pr_url??"")),a=Vt(s.outcome);!i||a!=="merged"&&a!=="skipped"&&a!=="blocked"||n.push({prUrl:i,outcome:a,mergeCommit:Vt(s.mergeCommit??s.merge_commit),reason:Vt(s.reason)})}return n}function Tp(e,r){let t=[],n=gt(Vt(e.prUrl)??"");if(n&&t.push(n),r&&typeof r=="object"&&!Array.isArray(r)){let o=r,s=gt(String(o.prUrl??o.pr_url??""));s&&t.push(s)}return[...new Set(t)]}function Np(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(!Px(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?gt(Vt(r.targetPrUrl)??"")??(r.targetPrUrls.length===1?gt(r.targetPrUrls[0]):null):null;if(s){let d=Tp(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=Op(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=Op(n),a=new Map(i.map(d=>[hs(d.prUrl),d])),l=new Set(r.targetPrUrls.map(d=>hs(gt(d)??d)).filter(Boolean)),c=Tp(t,n);if(r.landingOnly)for(let d of c){let p=a.get(hs(d)),m=Ap(d,r.targetPrUrls,p);if(!(m==="contract"||m==="support"))return l.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 u=[];for(let d of r.targetPrUrls){let p=hs(gt(d)??d),m=a.get(p);if(!m){u.push(p);continue}m.outcome!=="merged"&&!m.reason?.trim()&&u.push(p)}return u.length>0?{blocked:!0,reason:u.every(d=>a.has(d))?"incomplete_target_pr_landing":"missing_target_pr_reconciliation",detail:`Target PR reconciliation incomplete: ${u.join(", ")}`}:{blocked:!1}}function Dp(e){if(e.blocked)return e.detail??e.reason}var Mp=P(()=>{"use strict";gs();Ip()});function Ix(e){let r=Date.now();if(e.providerTerminalError||ls(e.finalResult)||e.finalResult&&e.error?.trim()||Kn(e.error)||Kn(e.finalResult)){let o=e.error||(typeof e.finalResult=="string"?e.finalResult:"provider terminal error");return{state:"blocked",reason:jn(o)?.reason??`provider terminal error: ${o}`}}if(e.completionBlocker&&!Wp(e.completionBlocker))return{state:"blocked",reason:e.completionBlocker};if(e.finalResult){if(e.localOnly&&Tx(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=$t(o);if(s.blocked){let i=_p(s);return{state:"needs_attention",reason:s.reason?`landing blocked (${s.reason}): ${i}`:`landing blocked: ${i}`}}if(e.landingContract){let i=Np({contract:e.landingContract,snapshot:o,finalResult:e.finalResult}),a=Dp(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(Ox(e))return{state:"done",reason:"empty abandoned worker record"};let o=jn(e.error);if(o)return{state:"blocked",reason:o.reason};let s=Ht({alive:!1,finalResult:null,changedFiles:e.changedFiles,gitAncestry:e.gitAncestry});if(s?.salvageable){let l=e.error?.trim();return{state:"needs_attention",reason:l?`${s.attentionReason} (${l})`:s.attentionReason}}let i=e.error?.trim(),a=ds(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>Ax)return{state:"needs_attention",reason:`no first stream event ${la(t)}s after start`};let n=e.lastActivityAt?Date.parse(e.lastActivityAt):NaN;return Number.isFinite(n)&&r-n>Na?{state:"stale",reason:`no log/event/heartbeat activity for ${la(n)}s`}:{state:"ok",reason:"recent activity"}}function Wp(e){let r=e?.trim();return r?/completion acknowledged but board not advanced/i.test(r)&&/task already terminal/i.test(r):!1}function Ox(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 Tx(e){let r=null;if(typeof e=="string"?r=jt(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 Lp(e,r,t){let n=e.completionSnapshot?.finalResult;return e.completionAckSource==="local-pr-merged-reconcile"&&n!==void 0&&n!==null?n:r||(n??xr(t))}function Bp(e){let r=ft(e.stdoutPath),t=me(e.heartbeatPath);return Lp(e,r.finalResult,t)}function J(e,r={}){let t=ft(e.stdoutPath),n=me(e.heartbeatPath),o=typeof e.completionReportedAt=="string"&&e.completionReportedAt.trim().length>0,s=Lp(e,t.finalResult,n),i=o?!1:Y(e.pid),a=Jo(e.stdoutPath),l=Jo(e.stderrPath),c=Jo(e.heartbeatPath),{changedFiles:u,gitAncestry:d}=wp(e.worktreePath,{base:r.base,baseCommit:r.baseCommit},{alive:i}),p=od([t.lastEventAt,n.lastHeartbeatAt,zo(e.stdoutPath),zo(e.stderrPath),zo(e.heartbeatPath)]),m=i?null:us(e.workerDir),f=s&&!Pa(s)?s:null,y=t.error||!i&&!s&&Wt(e.stderrPath,10).trim()||void 0,k=y||!i&&s&&!f&&Wt(e.stderrPath,10).trim()||void 0,b=typeof e.completionBlocker=="string"&&e.completionBlocker.trim()?e.completionBlocker.trim():null,g=Wp(b)?null:b,h=e.repairTargetPrUrl?{landingOnly:!1,targetPrUrls:[e.repairTargetPrUrl],targetPrUrl:e.repairTargetPrUrl,repairEnforceOriginalPr:!0}:null,w=Ix({alive:i,finalResult:s,firstEventAt:t.firstEventAt,stdoutBytes:a,stderrBytes:l,heartbeatBytes:c,lastActivityAt:p,heartbeatBlocker:n.heartbeatBlocker,startedAt:e.startedAt,error:y,providerTerminalError:t.providerTerminalError,changedFiles:u,gitAncestry:d,completionBlocker:g,landingContract:h,prUrl:e.repairTargetPrUrl??e.taskPrUrl??null,localOnly:e.localOnly===!0,taskId:e.taskId??null,agentOsId:e.agentOsId??null,reconcileReason:e.reconcileReason??null}),E=g||w.state==="blocked"?"blocked":o||w.state==="done"?"done":s?"exited":i?"running":"exited",S=e.stopClass&&e.stopClass!=="running"&&e.stopClass!=="finished"?e.stopClass:null,_=mp({alive:i,finalResult:s,error:k??null,stale:w.state==="stale",noRestartAt:e.noRestartAt??null,reconcileReason:e.reconcileReason??null,exit:m}),K=S&&!i&&!f?S:_,$=K==="running"||K==="finished"?null:(S===K?e.stopReason:void 0)??fp({stopClass:K,exit:m,error:k??null,reconcileReason:e.reconcileReason??null});return{runId:e.runId,worker:e.name,pid:e.pid,alive:i,status:E,stopClass:K,stopReason:$,exit:m,attention:w,branch:e.branch,worktreePath:e.worktreePath,ownedPaths:e.ownedPaths,stdoutBytes:a,stderrBytes:l,heartbeatBytes:c,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:u,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 xe(e){return!!(e.finalResult||e.alive===!1||e.status==="exited"||e.status==="done")}function Up(e){return e.finalResult?e.attention.state==="needs_attention"||e.attention.state==="blocked":!1}function Da(e,r){return r.length===0?e:r.some(t=>t.attention==="needs_attention"||t.attention==="stale"||t.attention==="blocked")?"needs_attention":r.every(t=>t.status==="done")?"done":r.some(t=>t.status==="running")?"running":e}var Ax,Na,fe=P(()=>{"use strict";pt();$n();Aa();_r();cs();Ia();ps();xp();fs();Mp();gs();O();Ax=18e4,Na=6e5});import{readFileSync as Nx}from"node:fs";function Dx(e){if(!e||process.platform!=="linux")return null;try{return Nx(`/proc/${e}/cmdline`,"utf8").replace(/\0/g," ")}catch{return null}}function Fp(e){if(!e.pid||process.platform!=="linux")return!0;let r=Dx(e.pid);return r?[e.worktreePath,e.workerDir,e.heartbeatPath].filter(n=>typeof n=="string"&&n.trim().length>0).some(n=>r.includes(n)):!1}function Jr(e){return typeof e.completionBlocker=="string"&&e.completionBlocker.trim()||typeof e.completionReportedAt=="string"&&e.completionReportedAt.trim()||!Y(e.pid)||!Fp(e)?!1:!Bp(e)}var ks=P(()=>{"use strict";fe();O()});import Hp from"node:os";import $p from"node:path";function Kp(e,r){let t=Number(e);return!Number.isFinite(t)||t<=0?r:Math.floor(t)}function Mx(e=U(),r,t){let n=Kp(e.perWorkerMemBytes,ys),o=Kp(e.memReserveBytes,Rs),s=Math.min(1,Math.max(.1,Number(e.memUtilization)>0?Number(e.memUtilization):vs)),i=Ss({config:e,configuredMaxWorkersOverride:r,totalMemBytes:t??Hp.totalmem()});return{perWorkerMemBytes:n,memReserveBytes:o,memUtilization:s,configuredMaxWorkers:i.configuredMaxWorkers,autoCap:i.autoCap,workerCapSource:i.workerCapSource}}function jp(e,r={}){let t=r.perWorkerMemBytes??ys,n=r.memReserveBytes??Rs,o=r.memUtilization??vs,s=Math.max(0,Math.floor(e*o)-n),i=Math.max(1,Math.floor(s/t));return Math.min(i,bs)}function Wx(){return Nd()}function Lx(e){let r=0;for(let t of ar(e)){let n=I($p.join(N(e.id),"workers",x(t),"worker.json"),void 0);!n||!Jr(n)||r++}return r}function Ma(){let e=0;for(let r of Xe())e+=Lx(r);return e}function Gt(){let e=[];for(let r of Xe())for(let t of ar(r)){let n=I($p.join(N(r.id),"workers",x(t),"worker.json"),void 0);n&&Jr(n)&&e.push({runId:r.id,workerName:t})}return e}function Yn(e){let r=e.config??U(),t=e.totalMemBytes??Hp.totalmem(),{perWorkerMemBytes:n,memReserveBytes:o,memUtilization:s,configuredMaxWorkers:i,autoCap:a,workerCapSource:l}=Mx(r,e.configuredMaxWorkersOverride,t),c=wr(r),u=e.freeMemBytes??Wx(),d=e.activeWorkers??Ma(),p=Math.max(0,Math.floor(t*s)-o),m=Math.max(0,Math.floor(p/n)),f=Math.max(0,Math.floor(Math.max(0,u-o)/n)),y=a,k=Wn(c,i??y),b=Math.max(0,Math.min(k,m)),g=Math.max(0,b-d),w=Math.min(g,f),S=e.skipDiskGate||process.env.KYNVER_RESOURCE_GATE_SKIP_DISK==="1"?void 0:Yr({diskPath:e.diskPath?.trim()||process.env.KYNVER_DISK_GUARD_PATH?.trim()||"/"});S&&!S.ok&&(w=0);let _=null;return w<=0&&(S&&!S.ok?_=S.reason??"disk gate blocked worker admission":d>=b?_=`at worker limit (${d}/${b} running)`:f<=0?_="insufficient free memory \u2014 waiting for workers to finish":_="no worker slots available"),{ok:w>0,totalMemBytes:t,freeMemBytes:u,memReserveBytes:o,perWorkerMemBytes:n,configuredMaxWorkers:i,workerCapSource:l,boxKind:c,autoCap:y,capacityWorkers:m,maxConcurrentWorkers:b,activeWorkers:d,slotsAvailable:w,reason:_,...S?{diskGate:S}:{}}}var ys,Rs,vs,bs,Yt=P(()=>{"use strict";Dd();H();Le();ts();ws();Ln();B();Bn();ks();O();ys=500*1024*1024,Rs=4*1024*1024*1024,vs=.85,bs=64});function qn(e,r){let t=Number(e);return!Number.isFinite(t)||t<=0?r:Math.floor(t)}function Ss(e){let r=e.config??{},t=e.env??process.env,n=qn(r.perWorkerMemBytes,ys),o=qn(r.memReserveBytes,Rs),s=Math.min(1,Math.max(.1,Number(r.memUtilization)>0?Number(r.memUtilization):vs)),i=jp(e.totalMemBytes,{perWorkerMemBytes:n,memReserveBytes:o,memUtilization:s});if(e.configuredMaxWorkersOverride!==void 0&&e.configuredMaxWorkersOverride!==null)return{configuredMaxWorkers:qn(e.configuredMaxWorkersOverride,i),autoCap:i,workerCapSource:"workspace_override"};if(r.maxConcurrentWorkers!==void 0&&r.maxConcurrentWorkers!==null){let c=qn(r.maxConcurrentWorkers,0)||null;if(c)return{configuredMaxWorkers:Math.min(c,bs),autoCap:i,workerCapSource:"config"}}let l=(t.KYNVER_MAX_WORKERS_INTENTIONAL==="1"||t.KYNVER_MAX_WORKERS_INTENTIONAL==="true")&&t.KYNVER_MAX_WORKERS&&qn(t.KYNVER_MAX_WORKERS,0)||null;return l?{configuredMaxWorkers:Math.min(l,bs),autoCap:i,workerCapSource:"env"}:{configuredMaxWorkers:null,autoCap:i,workerCapSource:"auto"}}var ws=P(()=>{"use strict";Yt()});import{homedir as Bx}from"node:os";import Ux from"node:path";var Vp,Wa=P(()=>{"use strict";Vp=Ux.join(Bx(),".kynver",".env")});var Gp=P(()=>{"use strict"});var Yp=P(()=>{"use strict";Gp()});var qp=P(()=>{"use strict"});var La=P(()=>{"use strict";Yp();qp();An()});import{existsSync as Fx,readFileSync as Kx}from"node:fs";function Ba(){if(process.platform==="win32")return"win32";if(process.platform==="darwin")return"darwin";if(process.platform==="linux"){if(process.env.WSL_DISTRO_NAME?.trim())return"wsl";try{if(Fx("/proc/version")){let e=Kx("/proc/version","utf8");if(/microsoft/i.test(e))return"wsl"}}catch{}return"linux"}return"linux"}var Ua=P(()=>{"use strict"});var Jp=P(()=>{"use strict";Ua()});var xs=P(()=>{"use strict";Wa();Gr();H();La();Jp()});import $x from"node:os";function Fa(e,r){let t=(r??$x.hostname()).trim().toLowerCase().replace(/\s+/g,"-")||"unknown-host";return`${e}:${t}`}function Qp(e){return e.trim().toLowerCase().replace(/\s+/g,"-")}function Zp(e,r){let t=e.trim();if(!t)return Fa(r);let n=t.indexOf(":");if(n>=0){let o=t.slice(0,n).trim().toLowerCase()||r,s=Qp(t.slice(n+1));return s?`${o}:${s}`:Fa(o)}return`${r}:${Qp(t)}`}function _s(e){let r=e.explicitBoxId?.trim()||e.env?.KYNVER_BOX_ID?.trim()||e.config?.boxId?.trim();return r?Zp(r,e.boxKind):Fa(e.boxKind,e.hostLabel)}var Es=P(()=>{"use strict";Le();Le()});var em=P(()=>{"use strict";Wa();La();xs()});function Ps(){return Cs}function tm(e){if(!Cs)return e;if(!rm)throw new Ka;return rm}function Qe(e,r=process.env){if(Cs)return;let t=r[e]?.trim();return t||void 0}function $a(){if(Cs)throw new Ha}var Ka,Ha,Cs,rm,Jn=P(()=>{"use strict";Ka=class extends Error{constructor(){super("desktop credential provider is not installed; refusing to fall back to file or env credentials"),this.name="DesktopCredentialProviderMissingError"}},Ha=class extends Error{constructor(){super("the credentials file is disabled in desktop mode"),this.name="LegacyCredentialStoreDisabledError"}},Cs=!1,rm=null});import{existsSync as Er,mkdirSync as jx,readdirSync as As,renameSync as nm,statSync as Vx}from"node:fs";import Cr from"node:path";function sm(e){try{return Vx(e).isDirectory()}catch{return!1}}function Gx(e){if(!Er(e))return!0;for(let r of om){let t=Cr.join(e,r);if(Er(t)&&(!sm(t)||As(t).length>0))return!1}return!0}function Yx(e){let r=Cr.join(e,"runs");if(!Er(r)||!sm(r))return!1;for(let t of As(r,{withFileTypes:!0})){if(!t.isDirectory()||t.name==="runs")continue;let n=Cr.join(r,t.name,"run.json");if(I(n,void 0)?.id)return!0}return!1}function qx(e){let r=Cr.join(e,"runs");if(!Er(r))return!1;for(let t of As(r,{withFileTypes:!0})){if(!t.isDirectory())continue;if(I(Cr.join(r,t.name,"run.json"),void 0)?.boxKind==="ghost")return!0}return!1}function Jx(e){let r=Cr.join(e,"ghost");return Er(r)?!Er(Cr.join(r,"runs")):qx(e)}function im(e){return Yx(e.sharedRoot)?Gx(e.forgeRoot)?Jx(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 am(e,r){jx(r,{recursive:!0});for(let t of om){let n=Cr.join(e,t),o=Cr.join(r,t);if(Er(n)){if(Er(o)&&As(o).length>0)throw new Error(`Forge legacy harness migration failed: ${o} is not empty`);if(Er(o)){nm(n,o);continue}nm(n,o)}}}var om,lm=P(()=>{"use strict";O();om=["runs","worktrees"]});import{existsSync as ve}from"node:fs";import{homedir as zx}from"node:os";import ge from"node:path";function ja(e=process.env){return e.HOME?.trim()||zx()}function Va(e=process.env){return ge.join(ja(e),".kynver","harness")}function Is(e){let r=ge.resolve(We(e.trim()));for(;Xx.has(ge.basename(r));)r=ge.dirname(r);return r}function Qx(e,r=process.env){return ge.join(Va(r),e)}function Zx(e=process.env){let r=Va(e);if(ve(ge.join(r,"runs")))return!0;if(ve(r)&&!ve(ge.join(r,"ghost"))&&!ve(ge.join(r,"forge")))return ve(r);let t=ge.join(ja(e),cm);return ve(t)}function Os(e){let r=e.env??process.env,t=r.KYNVER_HARNESS_ROOT?.trim()||r.OPUS_HARNESS_ROOT?.trim();if(t)return{harnessRoot:Is(t),source:"env"};let n=e.configuredHarnessRoot?.trim();if(n)return{harnessRoot:Is(n),source:"config"};let o=Qx(e.boxKind,r);if(ve(ge.join(o,"runs"))||ve(o)&&!e_(o))return{harnessRoot:o,source:"box_scoped"};let i=Va(r);if(e.boxKind==="forge"){let a=im({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&&am(i,o),{harnessRoot:o,source:"legacy_migrated"}}if(e.boxKind==="ghost"&&Zx(r)){if(ve(ge.join(i,"runs")))return{harnessRoot:i,source:"legacy_shared"};if(ve(i)&&!ve(ge.join(i,"ghost"))&&!ve(ge.join(i,"forge")))return{harnessRoot:i,source:"legacy_shared"};let l=ge.join(ja(r),cm);if(ve(l))return{harnessRoot:l,source:"legacy_shared"}}return{harnessRoot:o,source:"box_scoped"}}function e_(e){if(!ve(e))return!0;for(let r of["runs","worktrees"]){let t=ge.join(e,r);if(ve(t))return!1}return!0}var cm,Xx,Ga=P(()=>{"use strict";Gr();lm();cm=ge.join(".openclaw","harness");Xx=new Set(["runs","worktrees"])});import um from"node:os";function Ts(e){return e?.trim()?e.trim():null}function r_(e,r){let t=r.trim().toLowerCase()||"host";return`${e}-${t}`.replace(/[^a-z0-9._-]+/g,"-")}function t_(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 qt(e=U(),r=process.env,t={}){let n=Sr(r,e),o=[...n.warnings],s=[],i=!!(e.boxKind?.trim()||Ts(r.KYNVER_BOX_KIND)),a=t.strict===!0||t_(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 l=Ts(e.runnerId),c=Ts(r.KYNVER_RUNTIME_ID)??Ts(r.OPENCLAW_RUNTIME_ID),u=l??c??r_(n.boxKind,um.hostname()),d=l?"config":c?"env":"derived";d==="derived"&&o.push(`runnerId not persisted \u2014 using derived id "${u}"; run \`kynver setup --box-kind ${n.boxKind}\` to persist runner identity`);let p=Ss({config:e,env:r,totalMemBytes:um.totalmem()}),m=Wn(n.boxKind,p.configuredMaxWorkers??ka(n.boxKind,p.autoCap)),f=Os({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:u,runnerIdSource:d,maxConcurrentWorkers:m,workerCapSource:p.workerCapSource,harnessRoot:f.harnessRoot,harnessRootSource:f.source},errors:s,warnings:o}}var zn=P(()=>{"use strict";H();Le();ts();ws();Ga()});var pm=P(()=>{"use strict";On();Le();Es();H();xs();em();Mn();Jn();zn()});function lr(e){let r=e.trim().toLowerCase();return s_[r]??r}var mm,o_,s_,Ns=P(()=>{"use strict";mm=["claude","cursor","codex","gemini","gemini-api","openai-compatible","venice"],o_=mm.join("|"),s_={anthropic:"claude",opus:"claude",openai:"openai-compatible",openai_compatible:"openai-compatible","openai-compat":"openai-compatible",chatgpt:"codex",gpt:"codex","openai-api":"openai-compatible",openai_api:"openai-compatible","venice-ai":"venice",venice_ai:"venice",veniceai:"venice",google:"gemini",gemini_cli:"gemini",gemini_api:"gemini-api","google-api":"gemini-api",google_api:"gemini-api"}});var fm=P(()=>{"use strict";Gr()});var gm=P(()=>{"use strict";fm()});import{execFileSync as i_}from"node:child_process";function Ja(e=process.env){let r=e[l_]?.trim().toLowerCase();return r==="file"?"file":r==="keychain"?"keychain":"auto"}function c_(e,r,t){if(!hm.test(e)||!hm.test(r))return null;let n=Buffer.from(t,"utf8").toString("hex");return`add-generic-password -U -s ${e} -a ${r} -l Kynver-${r} -X ${n}
76
+ `}function u_(e,r,t){let n={encoding:"utf8",timeout:t.timeoutMs,stdio:["pipe","pipe","pipe"],windowsHide:!0,...t.input!==void 0?{input:t.input}:{}};return i_(e,r,n)}function d_(e=process.platform){return e==="darwin"?"macos":e==="linux"?"libsecret":e==="win32"?"windows":null}function Ya(e,r,t){let n=JSON.stringify(t),o=JSON.stringify(r),s="[void][Windows.Security.Credentials.PasswordVault,Windows.Security.Credentials,ContentType=WindowsRuntime]; $v = New-Object Windows.Security.Credentials.PasswordVault;";return e==="get"?`${s} try { $c = $v.Retrieve(${n}, ${o}); $c.RetrievePassword(); [Console]::Out.Write($c.Password) } catch { exit 3 }`:e==="set"?`${s} $s = [Console]::In.ReadToEnd().TrimEnd("\`r","\`n"); try { $old = $v.Retrieve(${n}, ${o}); $v.Remove($old) } catch {}; $v.Add((New-Object Windows.Security.Credentials.PasswordCredential(${n}, ${o}, $s)))`:`${s} try { $old = $v.Retrieve(${n}, ${o}); $v.Remove($old) } catch {}`}function km(e={}){if(Ja(e.env??process.env)==="file")return null;let t=d_(e.platform??process.platform);return t?new qa(t,e.exec,e.service):null}var a_,l_,Pr,hm,qa,ym=P(()=>{"use strict";a_="kynver",l_="KYNVER_CREDENTIAL_STORE";Pr=5e3,hm=/^[A-Za-z0-9_.@:-]{1,128}$/;qa=class{constructor(r,t=u_,n=a_){this.backend=r;this.exec=t;this.service=n}backend;exec;service;get(r){try{if(this.backend==="macos"){let s=this.exec("security",["find-generic-password","-s",this.service,"-a",r,"-w"],{timeoutMs:Pr}).replace(/\r?\n$/,"");return s||null}if(this.backend==="libsecret"){let s=this.exec("secret-tool",["lookup","service",this.service,"account",r],{timeoutMs:Pr}).replace(/\r?\n$/,"");return s||null}let n=this.exec("powershell.exe",["-NoProfile","-NonInteractive","-Command",Ya("get",r,this.service)],{timeoutMs:Pr}).replace(/\r?\n$/,"");return n||null}catch{return null}}set(r,t){if(!t||/[\r\n]/.test(t))return!1;try{if(this.backend==="macos"){let n=c_(this.service,r,t);if(!n)return!1;this.exec("security",["-i"],{input:n,timeoutMs:Pr})}else this.backend==="libsecret"?this.exec("secret-tool",["store",`--label=Kynver (${r})`,"service",this.service,"account",r],{input:`${t}
77
+ `,timeoutMs:Pr}):this.exec("powershell.exe",["-NoProfile","-NonInteractive","-Command",Ya("set",r,this.service)],{input:`${t}
78
+ `,timeoutMs:Pr})}catch{return!1}return this.get(r)===t}delete(r){try{this.backend==="macos"?this.exec("security",["delete-generic-password","-s",this.service,"-a",r],{timeoutMs:Pr}):this.backend==="libsecret"?this.exec("secret-tool",["clear","service",this.service,"account",r],{timeoutMs:Pr}):this.exec("powershell.exe",["-NoProfile","-NonInteractive","-Command",Ya("delete",r,this.service)],{timeoutMs:Pr})}catch{}}}});function Xn(){return za||(za=new Xa),za}var Qa,p_,Ds,Xa,za,Za=P(()=>{"use strict";ym();Qa="api-key",p_=6e4,Ds=class extends Error{constructor(r){super(`KYNVER_CREDENTIAL_STORE=keychain but the OS keychain could not store "${r}"; refusing to write the secret to disk`),this.name="KeychainUnavailableError"}},Xa=class{cache=new Map;keychain;env;now;constructor(r={}){this.env=r.env??process.env,this.keychain=r.keychain===void 0?km({env:this.env}):r.keychain,this.now=r.now??Date.now}get available(){return this.keychain!==null}get backend(){return this.keychain?.backend??null}read(r){if(!this.keychain)return null;let t=this.cache.get(r);if(t&&this.now()-t.at<p_)return t.value;let n=this.keychain.get(r);return this.cache.set(r,{value:n,at:this.now()}),n}write(r,t){let n=Ja(this.env);if(!this.keychain){if(n==="keychain")throw new Ds(r);return!1}let o=this.keychain.set(r,t);if(o)this.cache.set(r,{value:t,at:this.now()});else if(this.cache.delete(r),n==="keychain")throw new Ds(r);return o}remove(r){this.cache.delete(r),this.keychain?.delete(r)}invalidate(r){r?this.cache.delete(r):this.cache.clear()}},za=null});import{existsSync as vm,mkdirSync as f_,readFileSync as bm,writeFileSync as g_}from"node:fs";import{homedir as h_,totalmem as MF}from"node:os";import tl from"node:path";function k_(e){return{...e,...e.harnessRoot?.trim()?{harnessRoot:We(e.harnessRoot.trim())}:{},...e.defaultRepo?.trim()?{defaultRepo:We(e.defaultRepo.trim())}:{}}}function Sm(e){let r=e.defaultRepo?.trim();return!r||e.defaultBase?.trim()||!vd(We(r))?e:{...e,defaultBase:Rd}}function y_(){if(!vm(Rm))return null;try{return JSON.parse(bm(Rm,"utf8"))}catch{return null}}function U(){let e=y_();return e?Sm(k_(e)):{}}function Ms(){if($a(),!vm(el))return{};try{return JSON.parse(bm(el,"utf8"))}catch{return{}}}function rl(e){$a(),f_(nl,{recursive:!0}),g_(el,`${JSON.stringify(e,null,2)}
79
+ `,{mode:384})}function R_(e,r,t,n={}){let o=Ms();if(Xn().write(e,t)){let i={...o,...n};delete i[r],i.store="keychain",i.keychainAccounts=Array.from(new Set([...o.keychainAccounts??[],e])).sort(),rl(i);return}rl({...o,...n,[r]:t})}function v_(e,r){let t=Xn().read(e);return t||Ms()[r]}function ol(){return tm(b_)}function Ar(){return ol().getApiKey()}function Jt(e){return ol().getRunnerToken(e)}function sl(e,r){ol().persistRunnerToken(e,r)}function Q(e){let r=Qn(e);return r||_m("requires --base-url, KYNVER_API_URL, KYNVER_CRON_FIRE_BASE_URL, or ~/.kynver/config.json apiBaseUrl"),r}function il(e){return Qn(e)}function Qn(e){let r=e||process.env.KYNVER_API_URL||process.env.KYNVER_CRON_FIRE_BASE_URL||process.env.OPENCLAW_CRON_FIRE_BASE_URL||U().apiBaseUrl;return Nn(r)}function S_(e,r){let t=e||Jt(r)||(r?void 0:Jt(U().agentOsId));if(t)return String(t);let n=Qe("KYNVER_RUNTIME_SECRET")||Qe("KYNVER_CRON_SECRET")||Qe("OPENCLAW_CRON_SECRET");if(n)return console.warn("[kynver] using deployment-level callback secret; run `kynver runner credential --agent-os-id <id>` for a scoped token"),String(n)}async function w_(e,r,t){let n=S_(e,r);if(n)return{ok:!0,secret:n};let o=Ar(),s=Qn(t?.baseUrl);if(o&&r&&s)try{let i=await al(r,{baseUrl:s,apiKey:o});return sl(r,i),{ok:!0,secret:i}}catch(i){return{ok:!1,reason:`runner credential mint failed: ${i.message}`}}return{ok:!1,reason:"no runner credential: requires --secret, KYNVER_RUNNER_TOKEN, a scoped runner token (`kynver runner credential`), ~/.kynver/credentials runnerToken, or KYNVER_API_KEY + API base URL to mint one"}}async function ee(e,r,t){let n=await w_(e,r,t);if(n.ok)return n.secret;_m(n.reason)}async function wm(e,r){let t=Ar(),n=Qn(r?.baseUrl);if(!t||!e||!n)return null;try{let o=await al(e,{baseUrl:n,apiKey:t});return sl(e,o),o}catch{return null}}async function xm(e,r,t){let n=Ar(),o=Qn(t?.baseUrl);if(!n)return{ok:!1,reason:"KYNVER_API_KEY is required to refresh a rejected runner token"};if(!r)return{ok:!1,reason:"agentOsId is required to refresh a rejected runner token"};if(!o)return{ok:!1,reason:"KYNVER_API_URL or --base-url is required to refresh a rejected runner token"};try{let s=await al(r,{baseUrl:o,apiKey:n});return s&&s!==e?(sl(r,s),{ok:!0,token:s}):{ok:!1,reason:"runner credential refresh returned the rejected token"}}catch(s){return{ok:!1,reason:s.message}}}async function al(e,r){let t=r?.apiKey||Ar();if(!t)throw new Error("API key required \u2014 run `kynver login` first");let o=`${Q(r?.baseUrl)}/api/agent-os/by-id/${encodeURIComponent(e)}/runner-credentials`,s=await Dn(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`},body:JSON.stringify(r?.enableMcpUpdates?{enableMcpUpdates:!0}:{})}),i=await s.text(),a=null;try{a=JSON.parse(i)}catch{a=null}if(!s.ok||!a?.token)throw new Error(`runner credential mint failed (${s.status}): ${a?.error??i.slice(0,200)}`);return a.token}function _m(e){console.error(e),process.exit(1)}var nl,Rm,el,ZF,eK,b_,H=P(()=>{"use strict";On();Gr();fa();Cd();Mn();Le();ts();ws();Ln();xs();pm();Ns();zn();gm();Jn();Za();nl=tl.join(h_(),".kynver"),Rm=tl.join(nl,"config.json"),el=tl.join(nl,"credentials");ZF=500*1024*1024,eK=4*1024*1024*1024;b_={kind:"file",getApiKey(){return process.env.KYNVER_API_KEY?process.env.KYNVER_API_KEY:v_(Qa,"apiKey")},getRunnerToken(e){let r=Ms();if(!!r.runnerToken&&!!e&&r.runnerTokenAgentOsId===e)return r.runnerToken;let n=process.env.KYNVER_RUNNER_TOKEN?.trim();if(n)return n;if(r.runnerToken&&!(e&&r.runnerTokenAgentOsId&&r.runnerTokenAgentOsId!==e))return r.runnerToken},persistApiKey(e){R_(Qa,"apiKey",e)},persistRunnerToken(e,r){rl({...Ms(),runnerToken:r,runnerTokenAgentOsId:e})}}});import ll from"node:path";function he(e){return Is(e)}function Ue(){let e=process.env.KYNVER_HARNESS_ROOT||process.env.OPUS_HARNESS_ROOT;if(e)return he(e);let r=U(),t=r.harnessRoot?.trim();if(t)return he(t);let n=qt(r,process.env);return n.identity?n.identity.harnessRoot:Os({boxKind:"forge",configuredHarnessRoot:null}).harnessRoot}function Ae(e){return ll.join(he(e),"runs")}function zt(e){return ll.join(he(e),"worktrees")}function Em(){let e=Ue();return{harnessRoot:e,runsDir:Ae(e),worktreesDir:zt(e)}}function Ir(e,r){return ll.join(e,x(r))}var Ze=P(()=>{"use strict";H();Ga();zn();O()});import{existsSync as Ws,readdirSync as x_,statSync as __}from"node:fs";import ht from"node:path";function le(){return Em()}function q(e){let{runsDir:r}=le(),t=ht.join(Ir(r,x(e)),"run.json");return Ws(t)||Je(`run '${e}' not found`),I(t)}function Xe(){let{runsDir:e}=le();return Cm(e)}function Ls(e){return Cm(Ae(e))}function E_(e){try{return __(e).isDirectory()}catch{return!1}}function Cm(e){if(!Ws(e))return[];let r=[];for(let t of x_(e,{withFileTypes:!0})){if(t.name==="runs")continue;let n=ht.join(e,t.name);if(!E_(n))continue;let o=I(ht.join(n,"run.json"),void 0);o?.id&&r.push(o)}return r}function Xt(e,r){let{runsDir:t}=le(),n=ht.join(Ir(t,x(e)),"run.json"),o=ht.join(Ir(t,x(e)),"workers",x(r),"worker.json");return Ws(o)||(Ws(n)||Je(`run '${e}' not found`),Je(`worker '${r}' not found in run '${e}'`)),I(o)}function Ie(e){let{runsDir:r}=le();ue(ht.join(Ir(r,e.id),"run.json"),e)}function L(e,r){let{runsDir:t}=le();ue(ht.join(Ir(t,e),"workers",r.name,"worker.json"),r)}function N(e){let{harnessRoot:r}=le();return Zn(r,e)}function Zn(e,r){return Ir(Ae(e),x(r))}var B=P(()=>{"use strict";Ze();O()});import{parentPort as Ob,workerData as uL}from"node:worker_threads";var _n=null,Ju=-1,zu=0;function Xu(e){_n=e}function Qu(e=Date.now()){return!_n||_n.stallCount===Ju&&e-zu<9e5?null:(Ju=_n.stallCount,zu=e,_n)}var Wb="embedded-1",Lb=[{slug:"ghost",displayName:"Ghost",description:"Orchestration persona.",dispatchLane:null,defaultRoleLane:"system"},{slug:"astra",displayName:"Astra",description:"Planning persona.",dispatchLane:"implementation",defaultRoleLane:"plan_author"},{slug:"rhea",displayName:"Rhea",description:"Implementation persona.",dispatchLane:"implementation",defaultRoleLane:"implementer"},{slug:"mnemo",displayName:"Mnemo",description:"Implementation persona.",dispatchLane:"implementation",defaultRoleLane:"implementer"},{slug:"sentinel",displayName:"Sentinel",description:"Review persona.",dispatchLane:"review",defaultRoleLane:"deep_reviewer"},{slug:"pixel",displayName:"Pixel",description:"Implementation persona.",dispatchLane:"implementation",defaultRoleLane:"implementer"},{slug:"schema",displayName:"Schema",description:"Implementation persona.",dispatchLane:"implementation",defaultRoleLane:"implementer"},{slug:"atlas",displayName:"Atlas",description:"Implementation persona.",dispatchLane:"implementation",defaultRoleLane:"runtime_verifier"},{slug:"bridge",displayName:"Bridge",description:"Implementation persona.",dispatchLane:"implementation",defaultRoleLane:"implementer"},{slug:"catalyst",displayName:"Catalyst",description:"Implementation persona.",dispatchLane:"implementation",defaultRoleLane:"implementer"},{slug:"lorentz",displayName:"Lorentz",description:"Review persona.",dispatchLane:"review",defaultRoleLane:"report_reviewer"},{slug:"dalton",displayName:"Dalton",description:"Landing persona.",dispatchLane:"landing",defaultRoleLane:"implementer"}],Bb={"worker.prompt.core_rules":["Structured final result (recommended): record completion as JSON with summary, files, PR URLs, verification, risks, and blockers.","Completion handoff (required): before you stop, summarize the outcome in your last message and append a heartbeat line with phase `complete` and a structured finalResult object. Commit your work cleanly and open a GitHub PR (draft OK) for substantial changes \u2014 never leave uncommitted changes behind without reporting them.","Review-only workers must not open new implementation PRs \u2014 review the existing PR and record a verdict in the final result. Prefer `gh pr view` / `gh pr diff`; if a local checkout is needed, use a disposable ref or detached worktree, not a checked-out `pr-*` branch.","Keep verification targeted to touched paths; avoid full-monorepo verification unless explicitly requested.","Do not run `npm publish`.","If verification fails, append a heartbeat line immediately with the failing command, reason, and next action."].join(`
80
80
  `),"worker.prompt.progress.compact":"Plan progress: when planId is set, report progress with `kynver plan progress --plan <planId> --row <rowKey> --role implementer --status in_progress|running|partial|blocked`. Do not mark rows done from the worker CLI.","worker.prompt.progress.full":["Structured plan progress (required when planId is set):","- Report checkpoints with `kynver plan progress --plan <planId> --row <rowKey> --role implementer --status in_progress|running|partial|blocked`.","- When a slice is finished, emit `partial` with evidence (`--evidence pr:<url>`, `--evidence path:<file>`, or `--evidence command:<cmd>`).","- Do not propose or confirm row `done` from the worker CLI."].join(`
81
81
  `),"worker.prompt.merge_gate.compact":"Verification cost control: prefer local verification before requesting CI runs; do not push empty commits to re-trigger CI; record verification evidence on the PR.","worker.prompt.merge_gate.full":["Verification cost control:","- Prefer local verification of touched paths before requesting any CI run.","- Do not push empty commits to re-trigger CI.","- Record verification evidence on the PR before requesting review."].join(`
82
82
  `),"worker.prompt.plan_artifacts.compact":"Plan artifacts: when authoring or revising plan documents, open a GitHub PR early and iterate from that PR branch; do not leave the canonical plan only in a local worktree.","worker.prompt.plan_artifacts.full":["Plan artifacts (when authoring or revising plan documents):","- Create a feature branch and open a GitHub PR (draft OK) before substantial drafting; commit and push the plan file.","- Iterate on that PR branch and link the PR URL on the related task and progress evidence."].join(`
83
- `)},Ub={"harness.maxTaskAttempts":4,"harness.dispatchCooldownMs":5e3,"daemon.idleIntervalMs":5*6e4,"daemon.maxIdleStreak":10},Dt={version:Wb,generatedAt:"1970-01-01T00:00:00.000Z",personas:Lb,instructions:Bb,policyThresholds:Ub};var _n=Dt,Fb="embedded";function Zu(){return _n.version}function ed(e,r){_n=e,Fb=r}function En(e){let r=_n.instructions[e];if(typeof r=="string"&&r.trim())return r;let t=Dt.instructions[e];return typeof t=="string"?t:""}function ia(e,r){let t=_n.policyThresholds[e];if(typeof t=="number"&&Number.isFinite(t))return t;let n=Dt.policyThresholds[e];return typeof n=="number"&&Number.isFinite(n)?n:r}function rd(e){if(!e)return null;let r=e.trim().toLowerCase();return _n.personas.find(t=>t.slug===r)??null}Pn();import Eb from"node:path";B();hs();O();import C_ from"node:path";function P_(e){let r=Array.isArray(e.ownedPaths)?e.ownedPaths.filter(n=>typeof n=="string"):[],t=Array.isArray(e.writeSetPrefixes)?(e.writeSetPrefixes??[]).filter(n=>typeof n=="string"):[];return{...r.length?{ownedPaths:r}:{},...t.length?{writeSetPrefixes:t}:{},...e.allowConcurrentHotspot?{allowConcurrentHotspot:!0}:{}}}function Ls(e){let r=q(e),t=[];for(let n of Object.keys(r.workers||{})){let o=I(C_.join(N(r.id),"workers",x(n),"worker.json"),void 0);!o?.taskId||!qr(o)||t.push({runId:r.id,workerName:n,taskId:o.taskId,pid:o.pid,...P_(o)})}return t}H();function Zn(e){let r=String(e).trim();return r.startsWith("krc1.")?{"Content-Type":"application/json","X-Kynver-Runner-Token":r}:{"Content-Type":"application/json","X-Kynver-Cron-Secret":r,"X-OpenClaw-Cron-Secret":r,"X-Kynver-Runtime-Secret":r}}Dn();H();function Am(e){if(e!==void 0&&Number.isFinite(e)&&e>0)return Math.floor(e);let r=Number(process.env.KYNVER_CALLBACK_TIMEOUT_MS);return Number.isFinite(r)&&r>0?Math.floor(r):3e4}function Pm(e){return new Error(`callback timeout after ${e}ms`)}async function Im(e,r){let t=Am(r),n=new AbortController,o,s=!1;try{return await Promise.race([e(n.signal),new Promise((i,a)=>{o=setTimeout(()=>{s=!0,n.abort(),a(Pm(t))},t)})])}catch(i){throw s?Pm(t):i}finally{o&&clearTimeout(o)}}function Om(e,r){let t=Am(r);return{ok:!1,status:0,response:{error:e instanceof Error?e.message:String(e),timeoutMs:t}}}async function ht(e,r,t,n){try{return await Im(async o=>{let s=await Nn(e,{method:"POST",headers:Zn(r),body:JSON.stringify(t),signal:o}),i=null;try{i=await s.json()}catch{i=null}return{ok:s.ok,status:s.status,response:i}},n?.timeoutMs)}catch(o){return Om(o,n?.timeoutMs)}}async function X(e,r,t,n){let o=await ht(e,r,t,{timeoutMs:n.timeoutMs});if(o.ok||o.status!==401)return o;let s=await xm(r,n.agentOsId,{baseUrl:n.baseUrl});return s.ok?{...await ht(e,s.token,t,{timeoutMs:n.timeoutMs}),refreshedAuth:!0}:{...o,authRefreshFailure:s.reason}}async function cl(e,r,t){try{return await Im(async n=>{let o=await Nn(e,{method:"GET",headers:Zn(r),signal:n}),s=null;try{s=await o.json()}catch{s=null}return{ok:o.ok,status:o.status,response:s}},t?.timeoutMs)}catch(n){return Om(n,t?.timeoutMs)}}H();qn();import{spawnSync as K_}from"node:child_process";import{randomBytes as H_}from"node:crypto";import{createPublicKey as D_,verify as M_}from"node:crypto";import{createHash as A_,createPublicKey as _K,verify as EK}from"node:crypto";function dl(e){return JSON.stringify(ul(e))}function ul(e){if(Array.isArray(e))return e.map(ul);if(e&&typeof e=="object"){let r={};for(let t of Object.keys(e).sort())r[t]=ul(e[t]);return r}return e}function pl(e){if(!e)return null;let r=e.trim();if(!r)return null;if(/^[0-9a-fA-F]{64}$/.test(r))return new Uint8Array(r.match(/.{2}/g).map(t=>parseInt(t,16)));try{let t=Buffer.from(r,"base64");if(t.length===32)return new Uint8Array(t)}catch{}return null}function Tm(e){if(!e)return[];let r=[];for(let t of e.split(/[,\s]+/)){let n=pl(t);n&&r.push(n)}return r}function Nm(e=process.env){if(e.NODE_ENV==="production")return!1;let r=e.KYNVER_ALLOW_DEV_SIGNING_KEYS?.trim().toLowerCase();return r==="1"||r==="true"||r==="yes"||r==="on"?!0:e.NODE_ENV==="test"||e.VITEST==="true"}var PK=Buffer.from("302a300506032b6570032100","hex"),Dm="ca-6297fb8e1773",I_={[Dm]:"16ae5cb2a61f8c94cf1b86e8258f9c2f2ff6aba5e6136250a422209b6e866881","ca-456fd128f3b3":"f29cbd559410c2578d7f9732ccd86570073355ccdb36af0d1b7dff15908466e7","ca-fc6a2e593f40":"9c0d2fec00bdfce3a448d3fb1b9b9ecfe0dad587dd37f4de492ad9ca91f53def"};function O_(e){return`ca-${A_("sha256").update(Buffer.from(e)).digest("hex").slice(0,12)}`}function Mm(e,r=process.env){let t=Tm(r.KYNVER_COMMAND_AUTH_PUBLIC_KEY);if(t.length>0)return t.find(o=>O_(o)===e)??null;let n=I_[e];return!n||e===Dm&&!Nm(r)?null:pl(n)}var T_=/\[execution-mode:\s*(write|read[_-]?only)\s*\]/gi,N_=/<!--\s*harness-contract:\s*(\{[\s\S]*?\})\s*-->/gi;function Bs(e){let r=typeof e.description=="string"?e.description:"",t=typeof e.executorRef=="string"?e.executorRef:"",o=[...r.matchAll(T_)].at(-1)?.[1]?.toLowerCase();if(o)return o==="write"?"write":"read_only";if(/(?:^|:)read[_-]?only(?:$|:)/i.test(t))return"read_only";for(let s of r.matchAll(N_))try{let i=JSON.parse(s[1]);if(i.readOnly===!0||i.executionMode==="read_only")return"read_only"}catch{}return"write"}var W_=120,Wm=["write","read_only","land_pr","verify_live"],L_=["agentOsId","attempt","exp","kind","leaseOwner","leaseToken","operationClass","repoIdentity","requestNonce","taskId","tenantId","v"];var B_=/^[a-z0-9.-]+(?::\d+)?(?:\/[A-Za-z0-9._~-]+){2,}$/;function Lm(e){let r=e.trim();if(!r||r.includes("\0")||/\s/.test(r))return null;let t,n,o=/^(?:[^@/:]+@)?([^/:]+):(?!\/\/)(.+)$/.exec(r);if(/^[a-z][a-z0-9+.-]*:\/\//i.test(r)){let a;try{a=new URL(r)}catch{return null}if(!["https:","http:","ssh:","git:","git+ssh:","ssh+git:"].includes(a.protocol))return null;t=a.port?`${a.hostname}:${a.port}`:a.hostname,n=decodeURIComponent(a.pathname)}else if(o&&!/^[A-Za-z]$/.test(o[1]))t=o[1],n=o[2];else return null;t=t.toLowerCase().replace(/\.$/,"");let s=n.replace(/\/+$/,"").replace(/\.git$/i,"").split("/").filter(Boolean);if(s.length<2||s.some(a=>a==="."||a===".."))return null;let i=`${t}/${s.join("/")}`;return B_.test(i)&&i.length<=512?i:null}function Bm(e){let r=e.task??{};return e.landPrDispatch===!0||r.executor==="land_pr"?"land_pr":r.executor==="verify_live"?"verify_live":Bs(r)==="read_only"?"read_only":"write"}function U_(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let r=e;if(Object.keys(r).sort().join(",")!=="payload,publicKeyId,signature"||typeof r.signature!="string"||!r.signature||typeof r.publicKeyId!="string"||!r.publicKeyId)return!1;let t=r.payload;if(!t||typeof t!="object"||Array.isArray(t)||Object.keys(t).sort().join(",")!==[...L_].join(",")||t.v!==1||t.kind!=="dispatch_claim")return!1;for(let n of["tenantId","agentOsId","taskId","leaseOwner","leaseToken","repoIdentity","requestNonce"])if(typeof t[n]!="string"||!t[n])return!1;return!(typeof t.attempt!="number"||!Number.isInteger(t.attempt)||t.attempt<0||typeof t.exp!="number"||!Number.isFinite(t.exp)||!Wm.includes(t.operationClass))}var F_=Buffer.from("302a300506032b6570032100","hex");function Um(e,r,t=process.env,n=Math.floor(Date.now()/1e3)){if(!U_(e))return{ok:!1,code:"malformed",reason:"malformed dispatch claim authorization"};let o=e.payload;for(let a of Object.keys(r))if(o[a]!==r[a])return{ok:!1,code:"binding_mismatch",reason:`${a} mismatch`};if(o.exp<=n)return{ok:!1,code:"expired",reason:"authorization expired"};if(o.exp>n+W_+60)return{ok:!1,code:"malformed",reason:"authorization lifetime exceeds the allowed window"};let s=Mm(e.publicKeyId,t);if(!s)return{ok:!1,code:"unknown_key",reason:`no verification key for publicKeyId "${e.publicKeyId}"`};let i=Buffer.from(e.signature,"base64url");if(i.length!==64)return{ok:!1,code:"bad_signature",reason:"not a 64-byte Ed25519 signature"};try{let a=D_({key:Buffer.concat([F_,Buffer.from(s)]),format:"der",type:"spki"});return M_(null,Buffer.from(dl(o),"utf8"),a,i)?{ok:!0,payload:o}:{ok:!1,code:"bad_signature",reason:"Ed25519 signature mismatch"}}catch(a){return{ok:!1,code:"bad_signature",reason:`signature verification failed: ${a.message}`}}}O();var ml=class{constructor(r=4096){this.capacity=r}capacity;order=[];keys=new Set;consume(r){if(this.keys.has(r))return!1;for(this.keys.add(r),this.order.push(r);this.order.length>this.capacity;)this.keys.delete(this.order.shift());return!0}};function $_(e){let r=(c,u)=>({allow:!1,code:c,reason:u}),{policy:t,identity:n}=e;if(!n)return r("no_identity","the desktop runtime has not been prepared");if(!t)return r("no_policy","no approved execution policy on this computer");if(t.accountId!==n.accountId||t.agentOsId!==n.agentOsId)return r("policy_mismatch","the approved policy is for another account or workspace");if(!e.repoIdentity)return r("repo_identity_unavailable","the repository has no canonical remote identity");if(t.repoIdentity!==e.repoIdentity)return r("policy_mismatch","the approved policy is for another repository");let o=e.decision.claimAuthorization;if(o==null||!e.requestNonce)return r("missing_authorization","the claim carries no server authorization; the Kynver server must sign Desktop claims (KYNVER_COMMAND_AUTH_KEY, dispatch-claim-authorization diagnostic) and this runtime must be 0.2.87 or newer");let s=e.decision.task??{},i=Bm(e.decision),a=Um(o,{tenantId:n.accountId,agentOsId:n.agentOsId,taskId:typeof s.id=="string"?s.id:"",attempt:typeof s.attempt=="number"?s.attempt:-1,leaseOwner:e.leaseOwner,leaseToken:typeof s.leaseToken=="string"?s.leaseToken:"",operationClass:i,repoIdentity:e.repoIdentity,requestNonce:e.requestNonce},e.env??process.env,e.nowSec);if(!a.ok)return r(a.code,a.reason);let l=a.payload;return e.consumed.consume(`${l.taskId}\0${l.leaseToken}\0${l.requestNonce}`)?t.approvedOperationClasses.includes(i)?{allow:!0,operationClass:i}:{allow:!1,code:"operation_not_approved",reason:`${i} work in ${t.repoIdentity} has not been approved on this computer`,consentRequired:{repoIdentity:t.repoIdentity,operationClass:i}}:r("replayed","this claim authorization was already used")}var j_=null,V_=null,G_=new ml,Y_=new Set;function Fm(){return Cs()}function Km(e){return{v:1,repoIdentity:e,requestNonce:H_(16).toString("base64url")}}function Hm(e){let r=K_("git",["-C",e,"remote","get-url","origin"],ae({encoding:"utf8",timeout:1e4}));return r.status!==0||typeof r.stdout!="string"?null:Lm(r.stdout.trim())}function $m(e){let r=$_({...e,policy:j_,identity:V_,consumed:G_});if(!r.allow){let t=e.decision.task??{},n={taskId:typeof t.id=="string"?t.id:"",code:r.code,reason:r.reason,...r.consentRequired?{consentRequired:r.consentRequired}:{}};for(let o of Y_)try{o(n)}catch{}}return r}function jm(){let e=Number(process.env.KYNVER_DISPATCH_CALLBACK_TIMEOUT_MS);return Number.isFinite(e)&&e>0?Math.floor(e):3e5}function eo(e){console.error(JSON.stringify({event:"dispatch_progress",ts:new Date().toISOString(),...e}))}function Vm(e){if(!e||typeof e!="object")return!1;let r=e;if(r.timeout===!0||r.timeoutMs!==void 0)return!0;let t=r.error;if(typeof t!="string"||!t.trim())return!1;let n=t.toLowerCase();return n.includes("abort")||n.includes("timeout")}function fl(e){if(!e||typeof e!="object")return!1;let r=e;return r.timeout===!0?!0:(typeof r.error=="string"?r.error.toLowerCase():"").includes("timeout")}var q_=["implementation","review","landing"],J_=["plan_author","implementer","report_reviewer","deep_reviewer","runtime_verifier","system"];function z_(e){return q_.includes(e)}function X_(e){return J_.includes(e)}function Gm(e){return{slug:e.slug,displayName:e.displayName,description:e.description,dispatchLane:e.dispatchLane===null||z_(e.dispatchLane)?e.dispatchLane:null,defaultRoleLane:X_(e.defaultRoleLane)?e.defaultRoleLane:"implementer"}}var Ym=Dt.personas.map(Gm),Q_=new Map(Ym.map(e=>[e.slug,e]));function Z_(e){if(!e)return null;let r=e.trim().toLowerCase(),t=Q_.get(r)??null,n=rd(r);if(!n)return t;let o=Gm(n);return t?{...o,dispatchLane:t.dispatchLane,defaultRoleLane:t.defaultRoleLane}:o}function gl(e){return Z_(e)?.defaultRoleLane??null}function qm(){return Ym.filter(e=>e.dispatchLane==="review").map(e=>e.slug)}function Jm(e){return(e??"").trim().toLowerCase()}function eE(e){switch(Jm(e)){case"implementer":case"repair_implementer":case"plan_author":case"runtime_verifier":return"implementation";case"plan_reviewer":case"report_reviewer":case"deep_reviewer":return"review";default:return null}}function rE(e){let r=Jm(e);if(!r)return;if(r==="implementation"||r==="review"||r==="landing"||r==="any")return r;let t=eE(r);if(t)return t;if(r==="implement"||r==="repair"||r==="coding")return"implementation";if(r==="land"||r==="merge")return"landing"}function zm(e){return rE(e)??"any"}Wn();H();Le();function tE(e=process.env){let r=U();return Sr(r,e)!=="forge"}function Us(e,r=process.env){if(tE(r))return e?.maxConcurrentWorkers??void 0}async function Fs(e,r){let t=Q(r.baseUrl?String(r.baseUrl):void 0),n=await ee(r.secret?String(r.secret):void 0,e,{baseUrl:t}),o=`${t}/api/agent-os/by-id/${encodeURIComponent(e)}/runtime`;try{let s=await cl(o,n);if(!s.ok)return null;let a=s.response?.preferences?.maxConcurrentWorkers;if(a==null)return{maxConcurrentWorkers:null};let l=Number(a);return!Number.isFinite(l)||l<=0?{maxConcurrentWorkers:null}:{maxConcurrentWorkers:Math.floor(l)}}catch{return null}}Gt();var nE={fetchPreferences:Fs,configuredOverride:Us,observe:Gn};async function Xm(e,r=nE){let t=await r.fetchPreferences(e.agentOsId,e.args),n=r.configuredOverride(t,e.env);return r.observe({runId:e.runId,configuredMaxWorkersOverride:n})}Gt();B();B();function Ks(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function hl(e){return e.toLowerCase()}function oE(e){let r=Ks(e,"roleLane");if(r)return r;let t=hl(Ks(e,"executorRef")),n=hl(Ks(e,"title")),o=hl(Ks(e,"personaSlug")),s=`${t} ${n}`;if(s.includes("deep review")||s.includes("security review")||t.includes("deep-reviewer"))return"deep_reviewer";if(s.includes("plan author")||s.includes("plan-author")||n.includes("strategy plan"))return"plan_author";if(s.includes("plan review")||t.includes("plan-reviewer"))return"plan_reviewer";if(s.includes("report review")||s.includes("completion report"))return"report_reviewer";if(s.includes("repair")||n.startsWith("fix ")||t.includes("repair"))return"repair_implementer";if(t.includes("cursor")||t.includes("codex")||t.includes("composer")||n.includes("implement")||n.includes("land:"))return"implementer";let i=gl(o);if(i)return o==="lorentz"&&(s.includes("deep")||s.includes("security"))?"deep_reviewer":i;if(s.includes("review"))return"report_reviewer"}function Qm(e){let r=oE(e);return r?{...e,roleLane:r}:e}H();var sE=/^claude[-_]/i,iE=/^(?:opus|sonnet|haiku)\b/i;function Zm(e){let r=e.trim();return sE.test(r)||iE.test(r)}function ef(e){let r=e.trim().toLowerCase();return r.startsWith("gpt-")||r.startsWith("gpt5")||r.includes("codex")}function kl(e){let r=e.trim().toLowerCase();return r.includes("composer")||r.includes("cursor")}function rf(e){return e.trim().toLowerCase().startsWith("gemini-")}function aE(e){return ef(e)?"codex":Zm(e)?"claude":rf(e)?"gemini":(kl(e),"cursor")}function lE(e){if(!e.startsWith("provider:"))return null;let r=e.slice(9),t=r.indexOf(":"),n=(t>=0?r.slice(0,t):r).trim().toLowerCase(),o=t>=0&&r.slice(t+1).trim()||void 0;return n?n==="claude"||n==="opus"||n==="anthropic"?{provider:"claude",model:o,rule:o?"executor_ref:provider_claude_model":"executor_ref:provider_claude"}:n==="codex"?{provider:"codex",model:o,rule:"executor_ref:provider_codex"}:n==="openai-compatible"||n==="openai"||n==="openai_compatible"?{provider:"openai-compatible",model:o,rule:"executor_ref:provider_openai_compatible"}:n==="venice"||n==="venice-ai"||n==="venice_ai"||n==="veniceai"?{provider:"venice",model:o,rule:"executor_ref:provider_venice"}:n==="chatgpt"||n==="gpt"?{provider:"codex",model:o,rule:"executor_ref:provider_codex"}:n==="openai-api"||n==="openai_api"?{provider:"openai-compatible",model:o,rule:"executor_ref:provider_openai_compatible"}:n==="cursor"||n==="composer"?{provider:"cursor",model:o,rule:"executor_ref:provider_cursor"}:n==="gemini-api"||n==="gemini_api"||n==="google-api"?{provider:"gemini-api",model:o,rule:"executor_ref:provider_gemini_api"}:n==="gemini"||n==="google"||n==="gemini_cli"?{provider:"gemini",model:o,rule:o?"executor_ref:provider_gemini_model":"executor_ref:provider_gemini"}:null:null}function cE(e){if(!e.startsWith("harness-lane:"))return null;let r=e.split(":").map(o=>o.trim()).filter(Boolean);if(r.length<2)return null;let t=r[1],n=r.slice(2).join(":");return n?Zm(n)||ef(n)||kl(n)||rf(n)?{lane:t,model:n,provider:aE(n),rule:"executor_ref:harness_lane_model"}:{lane:t,rule:"executor_ref:harness_lane"}:{lane:t,rule:"executor_ref:harness_lane"}}function Oe(e){let r=typeof e=="string"?e.trim():"";return r?lE(r)??cE(r):null}function tf(e){let r=Oe(e);return r?!!(r.provider&&r.provider!=="cursor"||r.model&&!kl(r.model)):!1}Ts();Ts();var Or="cursor",uE=new Set(["claude","opus","anthropic"]),dE=[/\[worker-provider:\s*claude\]/i,/\[use-claude-worker\]/i,/\[operator-worker-provider:\s*claude\]/i];function ro(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function Ir(e){if(!e?.trim())return!1;let r=e.trim().toLowerCase();return uE.has(r)?!0:r.includes("claude")||r.includes("opus")}function Hs(e){if(!e)return!1;let r=e.workerProviderOverride;if(typeof r=="string"&&Ir(r))return!0;let t=ro(e,"executorRef").toLowerCase();if(t==="provider:claude"||t.startsWith("provider:claude:")||t.includes("claude-worker-override")||t.includes("operator-claude"))return!0;let n=Oe(ro(e,"executorRef"));if(n?.provider&&Ir(n.provider)||n?.model&&Ir(pE(n.model)))return!0;let o=ro(e,"description");if(dE.some(i=>i.test(o)))return!0;let s=ro(e,"title");return!!/\[use-claude-worker\]/i.test(s)}function pE(e){let r=e.trim().toLowerCase();return/^claude[-_]/.test(r)||/^(?:opus|sonnet|haiku)\b/.test(r)?"claude":r}function mE(e,r){return{provider:Or,model:$s,rule:`policy:cursor_default${r}`,requestedModel:e}}var fE=["explicit:","executor_ref:","factory:","task:"];function gE(e){return fE.some(r=>e.startsWith(r))}function yl(e){if(!e)return!1;let r=e.workerProviderOverride;return typeof r=="string"&&r.trim()||Oe(ro(e,"executorRef"))?.provider?!0:Hs(e)}function nf(e){let{routing:r,task:t}=e,n=e.explicitProvider?.trim().toLowerCase();if(e.explicitProviderIsOperatorOverride&&Ir(n))return{...r,provider:"claude",rule:r.rule.startsWith("explicit:")?r.rule:"explicit:operator_provider"};if(n||gE(r.rule)||yl(t)||!Ir(r.provider))return r;let o=r.rule&&r.rule!=="default:global"?`:${r.rule.replace(/:/g,"_")}`:"";return mE(r.model,o)}function of(e,r=Or){let t=e?.trim();return t?lr(t):r}var sf={codex:{id:"codex",displayName:"Codex (BYO OAuth / Hermes openai-codex)",costTier:"low",authSources:["oauth_local","api_key_env","subscription_hermes"],supportsLowRiskOrchestration:!0,supportsPrivilegedPlatformActions:!1,workerMcpTools:"supported"},cursor:{id:"cursor",displayName:"Cursor / Composer",costTier:"medium",authSources:["oauth_local","api_key_env"],supportsLowRiskOrchestration:!0,supportsPrivilegedPlatformActions:!0,workerMcpTools:"supported"},claude:{id:"claude",displayName:"Claude Code",costTier:"high",authSources:["oauth_local"],supportsLowRiskOrchestration:!0,supportsPrivilegedPlatformActions:!0,workerMcpTools:"supported"}};function Xt(e){return sf[e]}function af(){return Object.values(sf)}import{existsSync as kE}from"node:fs";import{homedir as yE}from"node:os";import to from"node:path";vr();import{createHash as lf}from"node:crypto";import{statSync as hE}from"node:fs";import{spawnSync as cf}from"node:child_process";function cr(e){try{let r=hE(e),t=`${e}|${r.size}|${r.mtimeMs}`;return lf("sha256").update(t).digest("hex").slice(0,16)}catch{return}}function Qt(e){return lf("sha256").update(`env:${e}`).digest("hex").slice(0,16)}function Fe(e,r){for(let t of r){let n=process.env[t]?.trim();if(n)return n}return e}function er(e,r,t={}){let n=t.timeoutMs??8e3;try{let[o,s]=pe(e,r),i=cf(o,s,{windowsHide:!0,encoding:"utf8",timeout:n,env:{...process.env,...t.env,CI:"1",NO_COLOR:"1"}});if(i.status===0)return{ok:!0,note:t.okNote??`${e} ${r.join(" ")}: ok`};let a=(i.stderr||i.stdout||"").trim(),l=t.failPrefix??`${e} ${r.join(" ")} failed`;return{ok:!1,note:a?`${l}: ${a.slice(0,200)}`:l}}catch(o){return{ok:!1,note:o instanceof Error?o.message:`${e} probe failed`}}}function js(e,r,t={}){let n=t.timeoutMs??8e3;try{let[o,s]=pe(e,r);return cf(o,s,{windowsHide:!0,stdio:"ignore",timeout:n,env:{...process.env,CI:"1",NO_COLOR:"1"}}).status===0?{ok:!0,note:t.okNote??`${e} authenticated`}:{ok:!1,note:t.failNote??`${e} not authenticated`}}catch(o){return{ok:!1,note:o instanceof Error?o.message:`${e} auth probe failed`}}}var RE="codex";function vE(){let e=yE();return[process.env.CODEX_HOME?.trim()?to.join(to.resolve(process.env.CODEX_HOME.trim()),"auth.json"):null,to.join(e,".codex","auth.json"),to.join(e,".config","codex","auth.json")].filter(t=>!!t)}function bE(e){return to.dirname(e)}function SE(e){let r,t;for(let n of vE()){if(!kE(n))continue;r??=n;let o=er(e,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status",env:{CODEX_HOME:bE(n)}});if(t??=o,o.ok)return{authPath:n,login:o}}return{authPath:r,login:t??er(e,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status"})}}function uf(e=new Date().toISOString()){let r=Fe(RE,["KYNVER_CODEX_BIN","CODEX_BIN"]);if(process.env.CODEX_API_KEY?.trim())return{providerId:"codex",ready:!0,authSource:"api_key_env",sessionFingerprint:Qt("CODEX_API_KEY"),checkedAt:e,note:"CODEX_API_KEY present (env binding \u2014 cloud credits path, no token stored in Kynver)"};let{authPath:t,login:n}=SE(r),o=!!t&&n.ok;return{providerId:"codex",ready:o,authSource:"oauth_local",sessionFingerprint:t?cr(t):void 0,checkedAt:e,note:o?"Local Codex OAuth session bound on runner":[n.note,t?void 0:"no Codex auth store found"].filter(Boolean).join("; ")}}import{existsSync as wE}from"node:fs";import{homedir as xE}from"node:os";import Rl from"node:path";function _E(){let e=process.env.HERMES_HOME?.trim(),r=e?Rl.resolve(e):Rl.join(xE(),".hermes");return Rl.join(r,"auth.json")}function Vs(e=new Date().toISOString()){let r=Fe("hermes",["KYNVER_HERMES_BIN","HERMES_BIN"]),t=er(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=_E(),o=wE(n),s=js(r,["auth","status","openai-codex"],{okNote:"hermes openai-codex: logged in",failNote:"hermes openai-codex: not logged in"}),i=t.ok&&s.ok;return{path:"hermes_openai_codex",ready:i,authSource:i?"subscription_hermes":"none",sessionFingerprint:o?cr(n):void 0,checkedAt:e,note:i?"Hermes openai-codex subscription session bound (ChatGPT Codex OAuth)":[t.note,s.note,o?void 0:"no ~/.hermes/auth.json"].filter(Boolean).join("; ")}}function Zt(e=new Date().toISOString()){let r=uf(e);if(r.ready)return{...r,path:"codex_cli"};let t=Vs(e);return t.ready?{providerId:"codex",ready:!0,authSource:t.authSource,sessionFingerprint:t.sessionFingerprint,checkedAt:t.checkedAt,note:t.note,path:"hermes_openai_codex",hermesOpenAiCodex:t}:{providerId:"codex",ready:!1,authSource:"none",checkedAt:e,path:"none",hermesOpenAiCodex:t,note:[r.note,t.note].filter(Boolean).join("; ")||"Codex CLI and Hermes openai-codex unavailable"}}var df=["low","medium","high"],pf={oauth_local:0,subscription_hermes:0,runner_token:1,api_key_env:2,none:3};function mf(e,r){let t=Xt(e);return r==="privileged"?t.supportsPrivilegedPlatformActions:r==="low"?t.supportsLowRiskOrchestration:!0}function EE(e,r){let t=Xt(e.providerId),n=Xt(r.providerId),o=df.indexOf(t.costTier)-df.indexOf(n.costTier);if(o!==0)return o;let s=pf[e.binding.authSource]-pf[r.binding.authSource];return s!==0?s:e.providerId.localeCompare(r.providerId)}function vl(e){let r=af().map(a=>({providerId:a.id,binding:e.inventory.bindings[a.id]})).filter(a=>a.binding.ready&&mf(a.providerId,e.riskClass));if(r.length===0)return null;let n=[...r].sort(EE)[0],o="codex";if(n.providerId===o)return{providerId:n.providerId,binding:n.binding};let s=e.inventory.bindings[o],i;return mf(o,e.riskClass)?s.ready||(i=s.note??`${o} not bound`):i=`${e.riskClass} orchestration requires privileged-capable provider`,{providerId:n.providerId,binding:n.binding,escalatedFrom:o,escalatedReason:i}}import{existsSync as CE}from"node:fs";import{homedir as PE}from"node:os";import AE from"node:path";var IE="claude";function OE(){let e=PE();return[AE.join(e,".claude",".credentials.json")]}function ff(e=new Date().toISOString()){let r=Fe(IE,["KYNVER_CLAUDE_BIN","CLAUDE_BIN"]);if(process.env.ANTHROPIC_API_KEY?.trim())return{providerId:"claude",ready:!1,authSource:"api_key_env",sessionFingerprint:Qt("ANTHROPIC_API_KEY"),checkedAt:e,note:"ANTHROPIC_API_KEY present but scrubbed from worker env (deployment secret) \u2014 use `claude` CLI login (OAuth) for harness workers"};let t=er(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=OE().find(i=>CE(i)),o=js(r,["auth","status"],{okNote:"claude auth status: authenticated",failNote:"claude auth status: not authenticated"}),s=t.ok&&(o.ok||!!n);return{providerId:"claude",ready:s,authSource:"oauth_local",sessionFingerprint:n?cr(n):void 0,checkedAt:e,note:s?"Local Claude Code OAuth session bound on runner":[t.note,o.note,n?void 0:"no ~/.claude/.credentials.json"].filter(Boolean).join("; ")}}import{existsSync as aC}from"node:fs";import{homedir as iC}from"node:os";import nn from"node:path";xr();O();import{closeSync as xl,existsSync as yf,mkdirSync as GE,openSync as _l,statSync as YE,unlinkSync as kf}from"node:fs";import{spawn as qE}from"node:child_process";import JE from"node:os";import ur from"node:path";pa();var TE="KYNVER_NO_PROD_DB_CREDENTIALS",NE=["KYNVER_ENV_FILE"];function Ke(e,r={}){let t=da(e);if(!r.reviewWorker)return t;let n={...t,[TE]:"1"};for(let o of NE)delete n[o];return n}var DE=/-(?:thinking(?:-(?:high|medium|low|minimal|max|none))?|high|medium|low|minimal)$/i;function gf(e){return e.replace(DE,"")}var hf=/^(?:gpt-|gpt5|o1|o3|o4|gemini-|grok-|composer|deepseek|llama|mistral|qwen|command-)/i;function Gs(e){return/^claude[-_]/i.test(e)||/^(?:opus|sonnet|haiku)\b/i.test(e)}function ME(e){let r=e.trim().toLowerCase();return r.startsWith("gemini-")||r==="auto"||r==="pro"||r==="flash"||r==="flash-lite"}var WE=new Set(["cursor"]);function LE(e){let r=e.trim().toLowerCase();return WE.has(r)?"auto":null}function bl(e,r){let t=(e??"").trim();if(!t)return{ok:!0,model:r,normalized:!1};let o=gf(t).trim()||r;return hf.test(o)||!Gs(o)&&o!==r?{ok:!1,model:t,normalized:!1,requested:t,note:`model "${t}" is not a Claude model \u2014 the "claude" provider drives the Claude CLI, which only accepts claude-* model ids (got "${o}"). Pick a Claude model or switch the worker provider.`}:o!==t?{ok:!0,model:o,normalized:!0,requested:t,note:`normalized model "${t}" \u2192 "${o}" (the Claude CLI rejects reasoning-effort suffixes)`}:{ok:!0,model:o,normalized:!1}}function en(e,r){let t=(e??"").trim();return t?Gs(t)?{ok:!1,model:t,normalized:!1,requested:t,note:`model "${t}" is a Claude model but the worker provider is "codex". Switch the provider or pick a Codex/OpenAI model.`}:{ok:!0,model:t,normalized:!1}:{ok:!0,model:r,normalized:!1}}function rn(e,r){let t=(e??"").trim();if(t)return{ok:!0,model:t,normalized:!1};let n=(r??"").trim();return n?{ok:!0,model:n,normalized:!1}:{ok:!1,model:"",normalized:!1,note:'the "openai-compatible" provider has no universal default model \u2014 pass --model (any id your endpoint serves, e.g. llama3.1, qwen2.5-coder, gpt-4o-mini) or set KYNVER_WORKER_MODEL on the daemon host.'}}function tn(e,r){let t=(e??"").trim();if(!t)return{ok:!0,model:r,normalized:!1};let o=gf(t).trim()||r;return Gs(o)||!ME(o)&&hf.test(o)?{ok:!1,model:t,normalized:!1,requested:t,note:`model "${t}" is not a Gemini model \u2014 the gemini / gemini-api providers drive Google Gemini (got "${o}"). Pick a gemini-* model or an alias (auto, pro, flash, flash-lite), or switch the worker provider.`}:o!==t?{ok:!0,model:o,normalized:!0,requested:t,note:`normalized model "${t}" \u2192 "${o}"`}:{ok:!0,model:o,normalized:!1}}function Sl(e,r){let t=(e??"").trim();if(!t)return{ok:!0,model:r,normalized:!1};let n=LE(t);return n?{ok:!0,model:n,normalized:!0,requested:t,note:`normalized model "${t}" \u2192 "${n}" (Cursor provider alias \u2014 use "auto" or a composer id, not "cursor")`}:Gs(t)?{ok:!1,model:t,normalized:!1,requested:t,note:`model "${t}" is a Claude model but the worker provider is "cursor". Switch the provider to "claude" or pick a Cursor model.`}:{ok:!0,model:t,normalized:!1}}import{existsSync as no,readdirSync as BE}from"node:fs";import kt from"node:path";var UE=/^\d{4}\.\d{1,2}\.\d{1,2}-[a-f0-9]+$/i;function FE(e){let t=e.split("-")[0].split(".");if(t.length!==3)return null;let[n,o,s]=t;return!n||!o||!s?null:+`${n}${o.padStart(2,"0")}${s.padStart(2,"0")}`}function KE(e){let r=kt.join(e,"versions");if(!no(r))return null;let t=null,n=-1;for(let o of BE(r,{withFileTypes:!0})){if(!o.isDirectory()||!UE.test(o.name))continue;let s=FE(o.name);s==null||s<=n||(n=s,t=kt.join(r,o.name))}return t}function Ys(e){let r=e?.trim()||kt.join(process.env.LOCALAPPDATA||"","cursor-agent"),t=kt.join(r,"node.exe"),n=kt.join(r,"index.js");if(no(t)&&no(n))return{nodeExe:t,indexJs:n,versionDir:r};let o=KE(r);if(!o)return null;let s=kt.join(o,"node.exe"),i=kt.join(o,"index.js");return!no(s)||!no(i)?null:{nodeExe:s,indexJs:i,versionDir:o}}import{writeFileSync as HE}from"node:fs";import $E from"node:path";var jE="worker-prompt.md";function VE(e=process.platform,r={}){return r.shell?6e3:e==="win32"?24e3:12e4}function qs(e,r,t={}){if(e.length<=VE(t.platform,{shell:t.shell}))return{prompt:e,spilledTo:null};let n=$E.join(r,jE);return HE(n,e,"utf8"),{prompt:[`Your complete task instructions are in this file: ${n}`,"They were too long to pass on the command line.","Read the whole file first, then follow it exactly as if it were this prompt. Do not edit or commit that file."].join(`
84
- `),spilledTo:n}}var wl="composer-2.5",zE=15e3,XE=6e4,QE=3e4;function ZE(e,r,t){return{executable:e,prefixArgs:[r],shell:!1,detached:ce(),bundledVersionDir:t}}function Cl(e){if(process.platform==="win32"){let r=/\.(cmd|bat)$/i.test(e),t=/node\.exe$/i.test(e)&&yf(ur.join(ur.dirname(e),"index.js"));if(r||t||e==="agent"){let o=r?Ys(ur.dirname(e)):t?{nodeExe:e,indexJs:ur.join(ur.dirname(e),"index.js"),versionDir:ur.dirname(e)}:Ys();if(o)return ZE(o.nodeExe,o.indexJs,o.versionDir);throw new Error("Cursor Agent on Windows has no headless bundled node.exe under %LOCALAPPDATA%\\cursor-agent\\versions\\\u2026. Run `agent login` / update Cursor Agent CLI, use `--provider claude`, or set KYNVER_CURSOR_AGENT_ROOT to the cursor-agent folder.")}}return{executable:e,prefixArgs:[],shell:!1,detached:ce()}}function eC(e,r,t){return Ke({...process.env,CI:"1",NO_COLOR:"1",...r.bundledVersionDir?{CURSOR_INVOKED_AS:ur.basename(e)||"agent.cmd"}:{}},{reviewWorker:t})}function Rf(e){e<=0||Atomics.wait(new Int32Array(new SharedArrayBuffer(4)),0,0,e)}function El(e,r){let t=process.env[e];if(!t)return r;let n=Number(t);return Number.isFinite(n)&&n>=0?Math.floor(n):r}function rC(){let e=process.env.KYNVER_CURSOR_START_LOCK_DIR?.trim()||ur.join(JE.homedir(),".kynver","locks");return GE(e,{recursive:!0}),ur.join(e,"cursor-agent-start.lock")}function tC(){if(process.env.KYNVER_CURSOR_START_LOCK==="0")return()=>{};let e=rC(),r=El("KYNVER_CURSOR_START_LOCK_TIMEOUT_MS",XE),t=El("KYNVER_CURSOR_START_LOCK_STALE_MS",QE),n=Date.now();for(;;)try{let o=_l(e,"wx");return xl(o),()=>{try{kf(e)}catch{}}}catch(o){if(o.code!=="EEXIST")throw o;try{if(Date.now()-YE(e).mtimeMs>t){kf(e);continue}}catch{continue}if(Date.now()-n>r)throw new Error(`timed out waiting for Cursor agent start lock: ${e}`);Rf(250)}}function vf(e=process.env){let r=e.KYNVER_CURSOR_AGENT_BIN?.trim()||e.CURSOR_AGENT_BIN?.trim();if(r)return r;if(process.platform==="win32"){let t=Ys(e.KYNVER_CURSOR_AGENT_ROOT?.trim()||void 0);if(t)return t.nodeExe;let n=ur.join(e.LOCALAPPDATA||"","cursor-agent","agent.cmd");if(yf(n))return n}return"agent"}function nC(){return vf(process.env)}var bf={name:"cursor",defaultModel:wl,preflightModel(e){return Sl(e,wl)},start(e){let r=Sl(e.model,wl);if(!r.ok)throw new Error(`cursor provider model preflight failed: ${r.note}`);let t=r.model,n=_l(e.stdoutPath,"a"),o=_l(e.stderrPath,"a"),s=["ignore",n,o],i=nC(),a=Cl(i),l=qs(e.prompt,e.workerDir,{shell:a.shell}),c=oC({...e,prompt:l.prompt},t,a.prefixArgs),u=tC(),d;try{let[p,m]=a.shell?[a.executable,c]:Pe(a.executable,c,e.workerDir);d=qE(p,m,ae({cwd:e.worktreePath,detached:a.detached,shell:a.shell,stdio:s,env:eC(i,a,e.reviewWorker)})),Rf(El("KYNVER_CURSOR_START_LOCK_HOLD_MS",zE))}finally{u(),xl(n),xl(o)}if(!d.pid)throw new Error(`failed to spawn Cursor agent worker (is \`${i}\` on PATH? run \`agent login\` or set CURSOR_API_KEY)`);return d.unref(),{pid:d.pid,model:t}}};function oC(e,r,t=[]){return[...t,"-p",...e.executionMode==="read_only"?["--mode","plan"]:["--force"],...e.mcpConfigPath?["--approve-mcps"]:[],"--trust","--workspace",e.worktreePath,"--output-format","stream-json","--stream-partial-output","--model",r,e.prompt]}import{spawnSync as sC}from"node:child_process";function Pl(e,r=process.env){try{let t;try{t=Cl(e)}catch{t={executable:e,prefixArgs:[]}}let n=sC(t.executable,[...t.prefixArgs,"status","--format","json"],{encoding:"utf8",windowsHide:!0,timeout:8e3,env:{...r,CI:"1",NO_COLOR:"1"}});if(n.status!==0)return{ok:!1,note:"agent status: not authenticated"};let o=(n.stdout||"").trim();if(!o)return{ok:!1,note:"agent status: empty response"};let s;try{s=JSON.parse(o)}catch{return{ok:!1,note:"agent status: unparseable response"}}return typeof s=="object"&&s!==null&&s.isAuthenticated===!0?{ok:!0,note:"agent status: authenticated"}:{ok:!1,note:"agent status: not authenticated"}}catch(t){return{ok:!1,note:t instanceof Error?t.message:"agent status probe failed"}}}function Al(e=process.env){let r=[],t=e.KYNVER_CURSOR_AUTH_HOME?.trim();t&&(r.push(nn.join(t,".config","cursor","auth.json")),r.push(nn.join(t,".cursor-agent","auth.json")));let n=iC();if(r.push(nn.join(n,".config","cursor","auth.json")),r.push(nn.join(n,".cursor-agent","auth.json")),process.platform==="win32"){let o=e.LOCALAPPDATA?.trim(),s=e.APPDATA?.trim();o&&r.push(nn.join(o,"cursor-agent","auth.json")),s&&r.push(nn.join(s,"cursor","auth.json"))}return r}var lC="agent";function Sf(e=new Date().toISOString()){let r=Fe(lC,["KYNVER_CURSOR_AGENT_BIN","CURSOR_AGENT_BIN"]);if(process.env.CURSOR_API_KEY?.trim())return{providerId:"cursor",ready:!1,authSource:"api_key_env",sessionFingerprint:Qt("CURSOR_API_KEY"),checkedAt:e,note:"CURSOR_API_KEY present but scrubbed from worker env (deployment secret) \u2014 use `agent login` (OAuth) for harness workers"};let t=er(r,["-v"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=Al().find(a=>aC(a)),o=Pl(r),s=!!n||o.ok,i=t.ok&&s;return{providerId:"cursor",ready:i,authSource:"oauth_local",sessionFingerprint:n?cr(n):void 0,checkedAt:e,note:i?"Local Cursor/Composer OAuth session bound on runner":[t.note,s?void 0:o.note??"no ~/.config/cursor/auth.json or `agent login` session"].filter(Boolean).join("; ")}}import{existsSync as cC,readFileSync as uC}from"node:fs";import{homedir as dC}from"node:os";import Il from"node:path";var pC=["OPENAI_API_KEY","ANTHROPIC_API_KEY","KYNVER_API_KEY","KYNVER_BASE_URL"];function mC(){let e=process.env.HERMES_HOME?.trim(),r=e?Il.resolve(e):Il.join(dC(),".hermes");return Il.join(r,".env")}function fC(e){try{let r=uC(e,"utf8"),t=[];for(let n of pC)new RegExp(`^${n}=`,"m").test(r)&&t.push(n);return t}catch{return[]}}function wf(e=new Date().toISOString()){let r=Fe("hermes",["KYNVER_HERMES_BIN","HERMES_BIN"]),t=er(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=mC(),o=cC(n),s=o?fC(n):[],a=s.some(c=>c.endsWith("_API_KEY"))?"api_key_env":o?"oauth_local":"none",l=t.ok&&o;return{adapterId:"hermes",cliAvailable:t.ok,profileBound:o,authSource:a,sessionFingerprint:o?cr(n):void 0,checkedAt:e,note:l?`Hermes profile bound (${s.length?`keys: ${s.join(", ")}`:"no API keys detected"})`:[t.note,o?void 0:"no ~/.hermes/.env"].filter(Boolean).join("; ")}}function xf(e={}){let r=e.nowIso?.()??new Date().toISOString(),t=Zt(r),n={codex:t,cursor:Sf(r),claude:ff(r)},o=Object.values(n).filter(s=>s.ready).length;return{generatedAt:r,bindings:n,cloudApiCredits:{anthropicApiKey:!!process.env.ANTHROPIC_API_KEY?.trim(),openaiApiKey:!!process.env.OPENAI_API_KEY?.trim(),codexApiKey:!!process.env.CODEX_API_KEY?.trim()},workerEndpoint:{baseUrlConfigured:!!process.env.KYNVER_WORKER_BASE_URL?.trim(),apiKeyConfigured:!!process.env.KYNVER_WORKER_API_KEY?.trim()},hermes:wf(r),hermesOpenAiCodex:Vs(r),codexAdapterPath:t.path,readyCount:o}}var gC=[/\bprivileged\b/i,/\bproduction\s+db\b/i,/\bdb:push\b/i,/\bmigration\b/i,/\bdeploy\b/i,/\bsecrets?\b/i,/\bstripe\b/i,/\[require-approval\]/i,/\[operator-only\]/i],hC=[/\borchestration\b/i,/\bplan[- ]?progress\b/i,/\bstatus\s+sync\b/i,/\bheartbeat\b/i,/\bboard[- ]?drain\b/i,/\bmaintenance\b/i,/\[orchestration:\s*low-risk\]/i];function Ol(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function kC(e){let r=Ol(e,"executorRef").toLowerCase(),t=Ol(e,"title").toLowerCase(),n=Ol(e,"description").toLowerCase(),o=`${r}
83
+ `)},Ub={"harness.maxTaskAttempts":4,"harness.dispatchCooldownMs":5e3,"daemon.idleIntervalMs":5*6e4,"daemon.maxIdleStreak":10},Mt={version:Wb,generatedAt:"1970-01-01T00:00:00.000Z",personas:Lb,instructions:Bb,policyThresholds:Ub};var En=Mt,Fb="embedded";function Zu(){return En.version}function ed(e,r){En=e,Fb=r}function Cn(e){let r=En.instructions[e];if(typeof r=="string"&&r.trim())return r;let t=Mt.instructions[e];return typeof t=="string"?t:""}function ia(e,r){let t=En.policyThresholds[e];if(typeof t=="number"&&Number.isFinite(t))return t;let n=Mt.policyThresholds[e];return typeof n=="number"&&Number.isFinite(n)?n:r}function rd(e){if(!e)return null;let r=e.trim().toLowerCase();return En.personas.find(t=>t.slug===r)??null}An();import Eb from"node:path";B();ks();O();import C_ from"node:path";function P_(e){let r=Array.isArray(e.ownedPaths)?e.ownedPaths.filter(n=>typeof n=="string"):[],t=Array.isArray(e.writeSetPrefixes)?(e.writeSetPrefixes??[]).filter(n=>typeof n=="string"):[];return{...r.length?{ownedPaths:r}:{},...t.length?{writeSetPrefixes:t}:{},...e.allowConcurrentHotspot?{allowConcurrentHotspot:!0}:{}}}function Bs(e){let r=q(e),t=[];for(let n of Object.keys(r.workers||{})){let o=I(C_.join(N(r.id),"workers",x(n),"worker.json"),void 0);!o?.taskId||!Jr(o)||t.push({runId:r.id,workerName:n,taskId:o.taskId,pid:o.pid,...P_(o)})}return t}H();function eo(e){let r=String(e).trim();return r.startsWith("krc1.")?{"Content-Type":"application/json","X-Kynver-Runner-Token":r}:{"Content-Type":"application/json","X-Kynver-Cron-Secret":r,"X-OpenClaw-Cron-Secret":r,"X-Kynver-Runtime-Secret":r}}Mn();H();function Am(e){if(e!==void 0&&Number.isFinite(e)&&e>0)return Math.floor(e);let r=Number(process.env.KYNVER_CALLBACK_TIMEOUT_MS);return Number.isFinite(r)&&r>0?Math.floor(r):3e4}function Pm(e){return new Error(`callback timeout after ${e}ms`)}async function Im(e,r){let t=Am(r),n=new AbortController,o,s=!1;try{return await Promise.race([e(n.signal),new Promise((i,a)=>{o=setTimeout(()=>{s=!0,n.abort(),a(Pm(t))},t)})])}catch(i){throw s?Pm(t):i}finally{o&&clearTimeout(o)}}function Om(e,r){let t=Am(r);return{ok:!1,status:0,response:{error:e instanceof Error?e.message:String(e),timeoutMs:t}}}async function kt(e,r,t,n){try{return await Im(async o=>{let s=await Dn(e,{method:"POST",headers:eo(r),body:JSON.stringify(t),signal:o}),i=null;try{i=await s.json()}catch{i=null}return{ok:s.ok,status:s.status,response:i}},n?.timeoutMs)}catch(o){return Om(o,n?.timeoutMs)}}async function X(e,r,t,n){let o=await kt(e,r,t,{timeoutMs:n.timeoutMs});if(o.ok||o.status!==401)return o;let s=await xm(r,n.agentOsId,{baseUrl:n.baseUrl});return s.ok?{...await kt(e,s.token,t,{timeoutMs:n.timeoutMs}),refreshedAuth:!0}:{...o,authRefreshFailure:s.reason}}async function cl(e,r,t){try{return await Im(async n=>{let o=await Dn(e,{method:"GET",headers:eo(r),signal:n}),s=null;try{s=await o.json()}catch{s=null}return{ok:o.ok,status:o.status,response:s}},t?.timeoutMs)}catch(n){return Om(n,t?.timeoutMs)}}H();Jn();import{spawnSync as K_}from"node:child_process";import{randomBytes as H_}from"node:crypto";import{createPublicKey as D_,verify as M_}from"node:crypto";import{createHash as A_,createPublicKey as _K,verify as EK}from"node:crypto";function dl(e){return JSON.stringify(ul(e))}function ul(e){if(Array.isArray(e))return e.map(ul);if(e&&typeof e=="object"){let r={};for(let t of Object.keys(e).sort())r[t]=ul(e[t]);return r}return e}function pl(e){if(!e)return null;let r=e.trim();if(!r)return null;if(/^[0-9a-fA-F]{64}$/.test(r))return new Uint8Array(r.match(/.{2}/g).map(t=>parseInt(t,16)));try{let t=Buffer.from(r,"base64");if(t.length===32)return new Uint8Array(t)}catch{}return null}function Tm(e){if(!e)return[];let r=[];for(let t of e.split(/[,\s]+/)){let n=pl(t);n&&r.push(n)}return r}function Nm(e=process.env){if(e.NODE_ENV==="production")return!1;let r=e.KYNVER_ALLOW_DEV_SIGNING_KEYS?.trim().toLowerCase();return r==="1"||r==="true"||r==="yes"||r==="on"?!0:e.NODE_ENV==="test"||e.VITEST==="true"}var PK=Buffer.from("302a300506032b6570032100","hex"),Dm="ca-6297fb8e1773",I_={[Dm]:"16ae5cb2a61f8c94cf1b86e8258f9c2f2ff6aba5e6136250a422209b6e866881","ca-456fd128f3b3":"f29cbd559410c2578d7f9732ccd86570073355ccdb36af0d1b7dff15908466e7","ca-fc6a2e593f40":"9c0d2fec00bdfce3a448d3fb1b9b9ecfe0dad587dd37f4de492ad9ca91f53def"};function O_(e){return`ca-${A_("sha256").update(Buffer.from(e)).digest("hex").slice(0,12)}`}function Mm(e,r=process.env){let t=Tm(r.KYNVER_COMMAND_AUTH_PUBLIC_KEY);if(t.length>0)return t.find(o=>O_(o)===e)??null;let n=I_[e];return!n||e===Dm&&!Nm(r)?null:pl(n)}var T_=/\[execution-mode:\s*(write|read[_-]?only)\s*\]/gi,N_=/<!--\s*harness-contract:\s*(\{[\s\S]*?\})\s*-->/gi;function Us(e){let r=typeof e.description=="string"?e.description:"",t=typeof e.executorRef=="string"?e.executorRef:"",o=[...r.matchAll(T_)].at(-1)?.[1]?.toLowerCase();if(o)return o==="write"?"write":"read_only";if(/(?:^|:)read[_-]?only(?:$|:)/i.test(t))return"read_only";for(let s of r.matchAll(N_))try{let i=JSON.parse(s[1]);if(i.readOnly===!0||i.executionMode==="read_only")return"read_only"}catch{}return"write"}var W_=120,Wm=["write","read_only","land_pr","verify_live"],L_=["agentOsId","attempt","exp","kind","leaseOwner","leaseToken","operationClass","repoIdentity","requestNonce","taskId","tenantId","v"];var B_=/^[a-z0-9.-]+(?::\d+)?(?:\/[A-Za-z0-9._~-]+){2,}$/;function Lm(e){let r=e.trim();if(!r||r.includes("\0")||/\s/.test(r))return null;let t,n,o=/^(?:[^@/:]+@)?([^/:]+):(?!\/\/)(.+)$/.exec(r);if(/^[a-z][a-z0-9+.-]*:\/\//i.test(r)){let a;try{a=new URL(r)}catch{return null}if(!["https:","http:","ssh:","git:","git+ssh:","ssh+git:"].includes(a.protocol))return null;t=a.port?`${a.hostname}:${a.port}`:a.hostname,n=decodeURIComponent(a.pathname)}else if(o&&!/^[A-Za-z]$/.test(o[1]))t=o[1],n=o[2];else return null;t=t.toLowerCase().replace(/\.$/,"");let s=n.replace(/\/+$/,"").replace(/\.git$/i,"").split("/").filter(Boolean);if(s.length<2||s.some(a=>a==="."||a===".."))return null;let i=`${t}/${s.join("/")}`;return B_.test(i)&&i.length<=512?i:null}function Bm(e){let r=e.task??{};return e.landPrDispatch===!0||r.executor==="land_pr"?"land_pr":r.executor==="verify_live"?"verify_live":Us(r)==="read_only"?"read_only":"write"}function U_(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let r=e;if(Object.keys(r).sort().join(",")!=="payload,publicKeyId,signature"||typeof r.signature!="string"||!r.signature||typeof r.publicKeyId!="string"||!r.publicKeyId)return!1;let t=r.payload;if(!t||typeof t!="object"||Array.isArray(t)||Object.keys(t).sort().join(",")!==[...L_].join(",")||t.v!==1||t.kind!=="dispatch_claim")return!1;for(let n of["tenantId","agentOsId","taskId","leaseOwner","leaseToken","repoIdentity","requestNonce"])if(typeof t[n]!="string"||!t[n])return!1;return!(typeof t.attempt!="number"||!Number.isInteger(t.attempt)||t.attempt<0||typeof t.exp!="number"||!Number.isFinite(t.exp)||!Wm.includes(t.operationClass))}var F_=Buffer.from("302a300506032b6570032100","hex");function Um(e,r,t=process.env,n=Math.floor(Date.now()/1e3)){if(!U_(e))return{ok:!1,code:"malformed",reason:"malformed dispatch claim authorization"};let o=e.payload;for(let a of Object.keys(r))if(o[a]!==r[a])return{ok:!1,code:"binding_mismatch",reason:`${a} mismatch`};if(o.exp<=n)return{ok:!1,code:"expired",reason:"authorization expired"};if(o.exp>n+W_+60)return{ok:!1,code:"malformed",reason:"authorization lifetime exceeds the allowed window"};let s=Mm(e.publicKeyId,t);if(!s)return{ok:!1,code:"unknown_key",reason:`no verification key for publicKeyId "${e.publicKeyId}"`};let i=Buffer.from(e.signature,"base64url");if(i.length!==64)return{ok:!1,code:"bad_signature",reason:"not a 64-byte Ed25519 signature"};try{let a=D_({key:Buffer.concat([F_,Buffer.from(s)]),format:"der",type:"spki"});return M_(null,Buffer.from(dl(o),"utf8"),a,i)?{ok:!0,payload:o}:{ok:!1,code:"bad_signature",reason:"Ed25519 signature mismatch"}}catch(a){return{ok:!1,code:"bad_signature",reason:`signature verification failed: ${a.message}`}}}O();var ml=class{constructor(r=4096){this.capacity=r}capacity;order=[];keys=new Set;consume(r){if(this.keys.has(r))return!1;for(this.keys.add(r),this.order.push(r);this.order.length>this.capacity;)this.keys.delete(this.order.shift());return!0}};function $_(e){let r=(c,u)=>({allow:!1,code:c,reason:u}),{policy:t,identity:n}=e;if(!n)return r("no_identity","the desktop runtime has not been prepared");if(!t)return r("no_policy","no approved execution policy on this computer");if(t.accountId!==n.accountId||t.agentOsId!==n.agentOsId)return r("policy_mismatch","the approved policy is for another account or workspace");if(!e.repoIdentity)return r("repo_identity_unavailable","the repository has no canonical remote identity");if(t.repoIdentity!==e.repoIdentity)return r("policy_mismatch","the approved policy is for another repository");let o=e.decision.claimAuthorization;if(o==null||!e.requestNonce)return r("missing_authorization","the claim carries no server authorization; the Kynver server must sign Desktop claims (KYNVER_COMMAND_AUTH_KEY, dispatch-claim-authorization diagnostic) and this runtime must be 0.2.87 or newer");let s=e.decision.task??{},i=Bm(e.decision),a=Um(o,{tenantId:n.accountId,agentOsId:n.agentOsId,taskId:typeof s.id=="string"?s.id:"",attempt:typeof s.attempt=="number"?s.attempt:-1,leaseOwner:e.leaseOwner,leaseToken:typeof s.leaseToken=="string"?s.leaseToken:"",operationClass:i,repoIdentity:e.repoIdentity,requestNonce:e.requestNonce},e.env??process.env,e.nowSec);if(!a.ok)return r(a.code,a.reason);let l=a.payload;return e.consumed.consume(`${l.taskId}\0${l.leaseToken}\0${l.requestNonce}`)?t.approvedOperationClasses.includes(i)?{allow:!0,operationClass:i}:{allow:!1,code:"operation_not_approved",reason:`${i} work in ${t.repoIdentity} has not been approved on this computer`,consentRequired:{repoIdentity:t.repoIdentity,operationClass:i}}:r("replayed","this claim authorization was already used")}var j_=null,V_=null,G_=new ml,Y_=new Set;function Fm(){return Ps()}function Km(e){return{v:1,repoIdentity:e,requestNonce:H_(16).toString("base64url")}}function Hm(e){let r=K_("git",["-C",e,"remote","get-url","origin"],ae({encoding:"utf8",timeout:1e4}));return r.status!==0||typeof r.stdout!="string"?null:Lm(r.stdout.trim())}function $m(e){let r=$_({...e,policy:j_,identity:V_,consumed:G_});if(!r.allow){let t=e.decision.task??{},n={taskId:typeof t.id=="string"?t.id:"",code:r.code,reason:r.reason,...r.consentRequired?{consentRequired:r.consentRequired}:{}};for(let o of Y_)try{o(n)}catch{}}return r}function jm(){let e=Number(process.env.KYNVER_DISPATCH_CALLBACK_TIMEOUT_MS);return Number.isFinite(e)&&e>0?Math.floor(e):3e5}function ro(e){console.error(JSON.stringify({event:"dispatch_progress",ts:new Date().toISOString(),...e}))}function Vm(e){if(!e||typeof e!="object")return!1;let r=e;if(r.timeout===!0||r.timeoutMs!==void 0)return!0;let t=r.error;if(typeof t!="string"||!t.trim())return!1;let n=t.toLowerCase();return n.includes("abort")||n.includes("timeout")}function fl(e){if(!e||typeof e!="object")return!1;let r=e;return r.timeout===!0?!0:(typeof r.error=="string"?r.error.toLowerCase():"").includes("timeout")}var q_=["implementation","review","landing"],J_=["plan_author","implementer","report_reviewer","deep_reviewer","runtime_verifier","system"];function z_(e){return q_.includes(e)}function X_(e){return J_.includes(e)}function Gm(e){return{slug:e.slug,displayName:e.displayName,description:e.description,dispatchLane:e.dispatchLane===null||z_(e.dispatchLane)?e.dispatchLane:null,defaultRoleLane:X_(e.defaultRoleLane)?e.defaultRoleLane:"implementer"}}var Ym=Mt.personas.map(Gm),Q_=new Map(Ym.map(e=>[e.slug,e]));function Z_(e){if(!e)return null;let r=e.trim().toLowerCase(),t=Q_.get(r)??null,n=rd(r);if(!n)return t;let o=Gm(n);return t?{...o,dispatchLane:t.dispatchLane,defaultRoleLane:t.defaultRoleLane}:o}function gl(e){return Z_(e)?.defaultRoleLane??null}function qm(){return Ym.filter(e=>e.dispatchLane==="review").map(e=>e.slug)}function Jm(e){return(e??"").trim().toLowerCase()}function eE(e){switch(Jm(e)){case"implementer":case"repair_implementer":case"plan_author":case"runtime_verifier":return"implementation";case"plan_reviewer":case"report_reviewer":case"deep_reviewer":return"review";default:return null}}function rE(e){let r=Jm(e);if(!r)return;if(r==="implementation"||r==="review"||r==="landing"||r==="any")return r;let t=eE(r);if(t)return t;if(r==="implement"||r==="repair"||r==="coding")return"implementation";if(r==="land"||r==="merge")return"landing"}function zm(e){return rE(e)??"any"}Ln();H();Le();function tE(e=process.env){let r=U();return wr(r,e)!=="forge"}function Fs(e,r=process.env){if(tE(r))return e?.maxConcurrentWorkers??void 0}async function Ks(e,r){let t=Q(r.baseUrl?String(r.baseUrl):void 0),n=await ee(r.secret?String(r.secret):void 0,e,{baseUrl:t}),o=`${t}/api/agent-os/by-id/${encodeURIComponent(e)}/runtime`;try{let s=await cl(o,n);if(!s.ok)return null;let a=s.response?.preferences?.maxConcurrentWorkers;if(a==null)return{maxConcurrentWorkers:null};let l=Number(a);return!Number.isFinite(l)||l<=0?{maxConcurrentWorkers:null}:{maxConcurrentWorkers:Math.floor(l)}}catch{return null}}Yt();var nE={fetchPreferences:Ks,configuredOverride:Fs,observe:Yn};async function Xm(e,r=nE){let t=await r.fetchPreferences(e.agentOsId,e.args),n=r.configuredOverride(t,e.env);return r.observe({runId:e.runId,configuredMaxWorkersOverride:n})}Yt();B();B();function Hs(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function hl(e){return e.toLowerCase()}function oE(e){let r=Hs(e,"roleLane");if(r)return r;let t=hl(Hs(e,"executorRef")),n=hl(Hs(e,"title")),o=hl(Hs(e,"personaSlug")),s=`${t} ${n}`;if(s.includes("deep review")||s.includes("security review")||t.includes("deep-reviewer"))return"deep_reviewer";if(s.includes("plan author")||s.includes("plan-author")||n.includes("strategy plan"))return"plan_author";if(s.includes("plan review")||t.includes("plan-reviewer"))return"plan_reviewer";if(s.includes("report review")||s.includes("completion report"))return"report_reviewer";if(s.includes("repair")||n.startsWith("fix ")||t.includes("repair"))return"repair_implementer";if(t.includes("cursor")||t.includes("codex")||t.includes("composer")||n.includes("implement")||n.includes("land:"))return"implementer";let i=gl(o);if(i)return o==="lorentz"&&(s.includes("deep")||s.includes("security"))?"deep_reviewer":i;if(s.includes("review"))return"report_reviewer"}function Qm(e){let r=oE(e);return r?{...e,roleLane:r}:e}H();var sE=/^claude[-_]/i,iE=/^(?:opus|sonnet|haiku)\b/i;function Zm(e){let r=e.trim();return sE.test(r)||iE.test(r)}function ef(e){let r=e.trim().toLowerCase();return r.startsWith("gpt-")||r.startsWith("gpt5")||r.includes("codex")}function kl(e){let r=e.trim().toLowerCase();return r.includes("composer")||r.includes("cursor")}function rf(e){return e.trim().toLowerCase().startsWith("gemini-")}function aE(e){return ef(e)?"codex":Zm(e)?"claude":rf(e)?"gemini":(kl(e),"cursor")}function lE(e){if(!e.startsWith("provider:"))return null;let r=e.slice(9),t=r.indexOf(":"),n=(t>=0?r.slice(0,t):r).trim().toLowerCase(),o=t>=0&&r.slice(t+1).trim()||void 0;return n?n==="claude"||n==="opus"||n==="anthropic"?{provider:"claude",model:o,rule:o?"executor_ref:provider_claude_model":"executor_ref:provider_claude"}:n==="codex"?{provider:"codex",model:o,rule:"executor_ref:provider_codex"}:n==="openai-compatible"||n==="openai"||n==="openai_compatible"?{provider:"openai-compatible",model:o,rule:"executor_ref:provider_openai_compatible"}:n==="venice"||n==="venice-ai"||n==="venice_ai"||n==="veniceai"?{provider:"venice",model:o,rule:"executor_ref:provider_venice"}:n==="chatgpt"||n==="gpt"?{provider:"codex",model:o,rule:"executor_ref:provider_codex"}:n==="openai-api"||n==="openai_api"?{provider:"openai-compatible",model:o,rule:"executor_ref:provider_openai_compatible"}:n==="cursor"||n==="composer"?{provider:"cursor",model:o,rule:"executor_ref:provider_cursor"}:n==="gemini-api"||n==="gemini_api"||n==="google-api"?{provider:"gemini-api",model:o,rule:"executor_ref:provider_gemini_api"}:n==="gemini"||n==="google"||n==="gemini_cli"?{provider:"gemini",model:o,rule:o?"executor_ref:provider_gemini_model":"executor_ref:provider_gemini"}:null:null}function cE(e){if(!e.startsWith("harness-lane:"))return null;let r=e.split(":").map(o=>o.trim()).filter(Boolean);if(r.length<2)return null;let t=r[1],n=r.slice(2).join(":");return n?Zm(n)||ef(n)||kl(n)||rf(n)?{lane:t,model:n,provider:aE(n),rule:"executor_ref:harness_lane_model"}:{lane:t,rule:"executor_ref:harness_lane"}:{lane:t,rule:"executor_ref:harness_lane"}}function Oe(e){let r=typeof e=="string"?e.trim():"";return r?lE(r)??cE(r):null}function tf(e){let r=Oe(e);return r?!!(r.provider&&r.provider!=="cursor"||r.model&&!kl(r.model)):!1}Ns();Ns();var Tr="cursor",uE=new Set(["claude","opus","anthropic"]),dE=[/\[worker-provider:\s*claude\]/i,/\[use-claude-worker\]/i,/\[operator-worker-provider:\s*claude\]/i];function to(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function Or(e){if(!e?.trim())return!1;let r=e.trim().toLowerCase();return uE.has(r)?!0:r.includes("claude")||r.includes("opus")}function $s(e){if(!e)return!1;let r=e.workerProviderOverride;if(typeof r=="string"&&Or(r))return!0;let t=to(e,"executorRef").toLowerCase();if(t==="provider:claude"||t.startsWith("provider:claude:")||t.includes("claude-worker-override")||t.includes("operator-claude"))return!0;let n=Oe(to(e,"executorRef"));if(n?.provider&&Or(n.provider)||n?.model&&Or(pE(n.model)))return!0;let o=to(e,"description");if(dE.some(i=>i.test(o)))return!0;let s=to(e,"title");return!!/\[use-claude-worker\]/i.test(s)}function pE(e){let r=e.trim().toLowerCase();return/^claude[-_]/.test(r)||/^(?:opus|sonnet|haiku)\b/.test(r)?"claude":r}function mE(e,r){return{provider:Tr,model:js,rule:`policy:cursor_default${r}`,requestedModel:e}}var fE=["explicit:","executor_ref:","factory:","task:"];function gE(e){return fE.some(r=>e.startsWith(r))}function yl(e){if(!e)return!1;let r=e.workerProviderOverride;return typeof r=="string"&&r.trim()||Oe(to(e,"executorRef"))?.provider?!0:$s(e)}function nf(e){let{routing:r,task:t}=e,n=e.explicitProvider?.trim().toLowerCase();if(e.explicitProviderIsOperatorOverride&&Or(n))return{...r,provider:"claude",rule:r.rule.startsWith("explicit:")?r.rule:"explicit:operator_provider"};if(n||gE(r.rule)||yl(t)||!Or(r.provider))return r;let o=r.rule&&r.rule!=="default:global"?`:${r.rule.replace(/:/g,"_")}`:"";return mE(r.model,o)}function of(e,r=Tr){let t=e?.trim();return t?lr(t):r}var sf={codex:{id:"codex",displayName:"Codex (BYO OAuth / Hermes openai-codex)",costTier:"low",authSources:["oauth_local","api_key_env","subscription_hermes"],supportsLowRiskOrchestration:!0,supportsPrivilegedPlatformActions:!1,workerMcpTools:"supported"},cursor:{id:"cursor",displayName:"Cursor / Composer",costTier:"medium",authSources:["oauth_local","api_key_env"],supportsLowRiskOrchestration:!0,supportsPrivilegedPlatformActions:!0,workerMcpTools:"supported"},claude:{id:"claude",displayName:"Claude Code",costTier:"high",authSources:["oauth_local"],supportsLowRiskOrchestration:!0,supportsPrivilegedPlatformActions:!0,workerMcpTools:"supported"}};function Qt(e){return sf[e]}function af(){return Object.values(sf)}import{existsSync as kE}from"node:fs";import{homedir as yE}from"node:os";import no from"node:path";br();import{createHash as lf}from"node:crypto";import{statSync as hE}from"node:fs";import{spawnSync as cf}from"node:child_process";function cr(e){try{let r=hE(e),t=`${e}|${r.size}|${r.mtimeMs}`;return lf("sha256").update(t).digest("hex").slice(0,16)}catch{return}}function Zt(e){return lf("sha256").update(`env:${e}`).digest("hex").slice(0,16)}function Fe(e,r){for(let t of r){let n=process.env[t]?.trim();if(n)return n}return e}function er(e,r,t={}){let n=t.timeoutMs??8e3;try{let[o,s]=pe(e,r),i=cf(o,s,{windowsHide:!0,encoding:"utf8",timeout:n,env:{...process.env,...t.env,CI:"1",NO_COLOR:"1"}});if(i.status===0)return{ok:!0,note:t.okNote??`${e} ${r.join(" ")}: ok`};let a=(i.stderr||i.stdout||"").trim(),l=t.failPrefix??`${e} ${r.join(" ")} failed`;return{ok:!1,note:a?`${l}: ${a.slice(0,200)}`:l}}catch(o){return{ok:!1,note:o instanceof Error?o.message:`${e} probe failed`}}}function Vs(e,r,t={}){let n=t.timeoutMs??8e3;try{let[o,s]=pe(e,r);return cf(o,s,{windowsHide:!0,stdio:"ignore",timeout:n,env:{...process.env,CI:"1",NO_COLOR:"1"}}).status===0?{ok:!0,note:t.okNote??`${e} authenticated`}:{ok:!1,note:t.failNote??`${e} not authenticated`}}catch(o){return{ok:!1,note:o instanceof Error?o.message:`${e} auth probe failed`}}}var RE="codex";function vE(){let e=yE();return[process.env.CODEX_HOME?.trim()?no.join(no.resolve(process.env.CODEX_HOME.trim()),"auth.json"):null,no.join(e,".codex","auth.json"),no.join(e,".config","codex","auth.json")].filter(t=>!!t)}function bE(e){return no.dirname(e)}function SE(e){let r,t;for(let n of vE()){if(!kE(n))continue;r??=n;let o=er(e,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status",env:{CODEX_HOME:bE(n)}});if(t??=o,o.ok)return{authPath:n,login:o}}return{authPath:r,login:t??er(e,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status"})}}function uf(e=new Date().toISOString()){let r=Fe(RE,["KYNVER_CODEX_BIN","CODEX_BIN"]);if(process.env.CODEX_API_KEY?.trim())return{providerId:"codex",ready:!0,authSource:"api_key_env",sessionFingerprint:Zt("CODEX_API_KEY"),checkedAt:e,note:"CODEX_API_KEY present (env binding \u2014 cloud credits path, no token stored in Kynver)"};let{authPath:t,login:n}=SE(r),o=!!t&&n.ok;return{providerId:"codex",ready:o,authSource:"oauth_local",sessionFingerprint:t?cr(t):void 0,checkedAt:e,note:o?"Local Codex OAuth session bound on runner":[n.note,t?void 0:"no Codex auth store found"].filter(Boolean).join("; ")}}import{existsSync as wE}from"node:fs";import{homedir as xE}from"node:os";import Rl from"node:path";function _E(){let e=process.env.HERMES_HOME?.trim(),r=e?Rl.resolve(e):Rl.join(xE(),".hermes");return Rl.join(r,"auth.json")}function Gs(e=new Date().toISOString()){let r=Fe("hermes",["KYNVER_HERMES_BIN","HERMES_BIN"]),t=er(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=_E(),o=wE(n),s=Vs(r,["auth","status","openai-codex"],{okNote:"hermes openai-codex: logged in",failNote:"hermes openai-codex: not logged in"}),i=t.ok&&s.ok;return{path:"hermes_openai_codex",ready:i,authSource:i?"subscription_hermes":"none",sessionFingerprint:o?cr(n):void 0,checkedAt:e,note:i?"Hermes openai-codex subscription session bound (ChatGPT Codex OAuth)":[t.note,s.note,o?void 0:"no ~/.hermes/auth.json"].filter(Boolean).join("; ")}}function en(e=new Date().toISOString()){let r=uf(e);if(r.ready)return{...r,path:"codex_cli"};let t=Gs(e);return t.ready?{providerId:"codex",ready:!0,authSource:t.authSource,sessionFingerprint:t.sessionFingerprint,checkedAt:t.checkedAt,note:t.note,path:"hermes_openai_codex",hermesOpenAiCodex:t}:{providerId:"codex",ready:!1,authSource:"none",checkedAt:e,path:"none",hermesOpenAiCodex:t,note:[r.note,t.note].filter(Boolean).join("; ")||"Codex CLI and Hermes openai-codex unavailable"}}var df=["low","medium","high"],pf={oauth_local:0,subscription_hermes:0,runner_token:1,api_key_env:2,none:3};function mf(e,r){let t=Qt(e);return r==="privileged"?t.supportsPrivilegedPlatformActions:r==="low"?t.supportsLowRiskOrchestration:!0}function EE(e,r){let t=Qt(e.providerId),n=Qt(r.providerId),o=df.indexOf(t.costTier)-df.indexOf(n.costTier);if(o!==0)return o;let s=pf[e.binding.authSource]-pf[r.binding.authSource];return s!==0?s:e.providerId.localeCompare(r.providerId)}function vl(e){let r=af().map(a=>({providerId:a.id,binding:e.inventory.bindings[a.id]})).filter(a=>a.binding.ready&&mf(a.providerId,e.riskClass));if(r.length===0)return null;let n=[...r].sort(EE)[0],o="codex";if(n.providerId===o)return{providerId:n.providerId,binding:n.binding};let s=e.inventory.bindings[o],i;return mf(o,e.riskClass)?s.ready||(i=s.note??`${o} not bound`):i=`${e.riskClass} orchestration requires privileged-capable provider`,{providerId:n.providerId,binding:n.binding,escalatedFrom:o,escalatedReason:i}}import{existsSync as CE}from"node:fs";import{homedir as PE}from"node:os";import AE from"node:path";var IE="claude";function OE(){let e=PE();return[AE.join(e,".claude",".credentials.json")]}function ff(e=new Date().toISOString()){let r=Fe(IE,["KYNVER_CLAUDE_BIN","CLAUDE_BIN"]);if(process.env.ANTHROPIC_API_KEY?.trim())return{providerId:"claude",ready:!1,authSource:"api_key_env",sessionFingerprint:Zt("ANTHROPIC_API_KEY"),checkedAt:e,note:"ANTHROPIC_API_KEY present but scrubbed from worker env (deployment secret) \u2014 use `claude` CLI login (OAuth) for harness workers"};let t=er(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=OE().find(i=>CE(i)),o=Vs(r,["auth","status"],{okNote:"claude auth status: authenticated",failNote:"claude auth status: not authenticated"}),s=t.ok&&(o.ok||!!n);return{providerId:"claude",ready:s,authSource:"oauth_local",sessionFingerprint:n?cr(n):void 0,checkedAt:e,note:s?"Local Claude Code OAuth session bound on runner":[t.note,o.note,n?void 0:"no ~/.claude/.credentials.json"].filter(Boolean).join("; ")}}import{existsSync as aC}from"node:fs";import{homedir as iC}from"node:os";import on from"node:path";_r();O();import{closeSync as xl,existsSync as yf,mkdirSync as GE,openSync as _l,statSync as YE,unlinkSync as kf}from"node:fs";import{spawn as qE}from"node:child_process";import JE from"node:os";import dr from"node:path";pa();var TE="KYNVER_NO_PROD_DB_CREDENTIALS",NE=["KYNVER_ENV_FILE"];function Ke(e,r={}){let t=da(e);if(!r.reviewWorker)return t;let n={...t,[TE]:"1"};for(let o of NE)delete n[o];return n}var DE=/-(?:thinking(?:-(?:high|medium|low|minimal|max|none))?|high|medium|low|minimal)$/i;function gf(e){return e.replace(DE,"")}var hf=/^(?:gpt-|gpt5|o1|o3|o4|gemini-|grok-|composer|deepseek|llama|mistral|qwen|command-)/i;function Ys(e){return/^claude[-_]/i.test(e)||/^(?:opus|sonnet|haiku)\b/i.test(e)}function ME(e){let r=e.trim().toLowerCase();return r.startsWith("gemini-")||r==="auto"||r==="pro"||r==="flash"||r==="flash-lite"}var WE=new Set(["cursor"]);function LE(e){let r=e.trim().toLowerCase();return WE.has(r)?"auto":null}function bl(e,r){let t=(e??"").trim();if(!t)return{ok:!0,model:r,normalized:!1};let o=gf(t).trim()||r;return hf.test(o)||!Ys(o)&&o!==r?{ok:!1,model:t,normalized:!1,requested:t,note:`model "${t}" is not a Claude model \u2014 the "claude" provider drives the Claude CLI, which only accepts claude-* model ids (got "${o}"). Pick a Claude model or switch the worker provider.`}:o!==t?{ok:!0,model:o,normalized:!0,requested:t,note:`normalized model "${t}" \u2192 "${o}" (the Claude CLI rejects reasoning-effort suffixes)`}:{ok:!0,model:o,normalized:!1}}function rn(e,r){let t=(e??"").trim();return t?Ys(t)?{ok:!1,model:t,normalized:!1,requested:t,note:`model "${t}" is a Claude model but the worker provider is "codex". Switch the provider or pick a Codex/OpenAI model.`}:{ok:!0,model:t,normalized:!1}:{ok:!0,model:r,normalized:!1}}function tn(e,r){let t=(e??"").trim();if(t)return{ok:!0,model:t,normalized:!1};let n=(r??"").trim();return n?{ok:!0,model:n,normalized:!1}:{ok:!1,model:"",normalized:!1,note:'the "openai-compatible" provider has no universal default model \u2014 pass --model (any id your endpoint serves, e.g. llama3.1, qwen2.5-coder, gpt-4o-mini) or set KYNVER_WORKER_MODEL on the daemon host.'}}function nn(e,r){let t=(e??"").trim();if(!t)return{ok:!0,model:r,normalized:!1};let o=gf(t).trim()||r;return Ys(o)||!ME(o)&&hf.test(o)?{ok:!1,model:t,normalized:!1,requested:t,note:`model "${t}" is not a Gemini model \u2014 the gemini / gemini-api providers drive Google Gemini (got "${o}"). Pick a gemini-* model or an alias (auto, pro, flash, flash-lite), or switch the worker provider.`}:o!==t?{ok:!0,model:o,normalized:!0,requested:t,note:`normalized model "${t}" \u2192 "${o}"`}:{ok:!0,model:o,normalized:!1}}function Sl(e,r){let t=(e??"").trim();if(!t)return{ok:!0,model:r,normalized:!1};let n=LE(t);return n?{ok:!0,model:n,normalized:!0,requested:t,note:`normalized model "${t}" \u2192 "${n}" (Cursor provider alias \u2014 use "auto" or a composer id, not "cursor")`}:Ys(t)?{ok:!1,model:t,normalized:!1,requested:t,note:`model "${t}" is a Claude model but the worker provider is "cursor". Switch the provider to "claude" or pick a Cursor model.`}:{ok:!0,model:t,normalized:!1}}import{existsSync as oo,readdirSync as BE}from"node:fs";import yt from"node:path";var UE=/^\d{4}\.\d{1,2}\.\d{1,2}-[a-f0-9]+$/i;function FE(e){let t=e.split("-")[0].split(".");if(t.length!==3)return null;let[n,o,s]=t;return!n||!o||!s?null:+`${n}${o.padStart(2,"0")}${s.padStart(2,"0")}`}function KE(e){let r=yt.join(e,"versions");if(!oo(r))return null;let t=null,n=-1;for(let o of BE(r,{withFileTypes:!0})){if(!o.isDirectory()||!UE.test(o.name))continue;let s=FE(o.name);s==null||s<=n||(n=s,t=yt.join(r,o.name))}return t}function qs(e){let r=e?.trim()||yt.join(process.env.LOCALAPPDATA||"","cursor-agent"),t=yt.join(r,"node.exe"),n=yt.join(r,"index.js");if(oo(t)&&oo(n))return{nodeExe:t,indexJs:n,versionDir:r};let o=KE(r);if(!o)return null;let s=yt.join(o,"node.exe"),i=yt.join(o,"index.js");return!oo(s)||!oo(i)?null:{nodeExe:s,indexJs:i,versionDir:o}}import{writeFileSync as HE}from"node:fs";import $E from"node:path";var jE="worker-prompt.md";function VE(e=process.platform,r={}){return r.shell?6e3:e==="win32"?24e3:12e4}function ur(e,r,t={}){if(e.length<=VE(t.platform,{shell:t.shell}))return{prompt:e,spilledTo:null};let n=$E.join(r,jE);return HE(n,e,"utf8"),{prompt:[`Your complete task instructions are in this file: ${n}`,"They were too long to pass on the command line.","Read the whole file first, then follow it exactly as if it were this prompt. Do not edit or commit that file."].join(`
84
+ `),spilledTo:n}}var wl="composer-2.5",zE=15e3,XE=6e4,QE=3e4;function ZE(e,r,t){return{executable:e,prefixArgs:[r],shell:!1,detached:ce(),bundledVersionDir:t}}function Cl(e){if(process.platform==="win32"){let r=/\.(cmd|bat)$/i.test(e),t=/node\.exe$/i.test(e)&&yf(dr.join(dr.dirname(e),"index.js"));if(r||t||e==="agent"){let o=r?qs(dr.dirname(e)):t?{nodeExe:e,indexJs:dr.join(dr.dirname(e),"index.js"),versionDir:dr.dirname(e)}:qs();if(o)return ZE(o.nodeExe,o.indexJs,o.versionDir);throw new Error("Cursor Agent on Windows has no headless bundled node.exe under %LOCALAPPDATA%\\cursor-agent\\versions\\\u2026. Run `agent login` / update Cursor Agent CLI, use `--provider claude`, or set KYNVER_CURSOR_AGENT_ROOT to the cursor-agent folder.")}}return{executable:e,prefixArgs:[],shell:!1,detached:ce()}}function eC(e,r,t){return Ke({...process.env,CI:"1",NO_COLOR:"1",...r.bundledVersionDir?{CURSOR_INVOKED_AS:dr.basename(e)||"agent.cmd"}:{}},{reviewWorker:t})}function Rf(e){e<=0||Atomics.wait(new Int32Array(new SharedArrayBuffer(4)),0,0,e)}function El(e,r){let t=process.env[e];if(!t)return r;let n=Number(t);return Number.isFinite(n)&&n>=0?Math.floor(n):r}function rC(){let e=process.env.KYNVER_CURSOR_START_LOCK_DIR?.trim()||dr.join(JE.homedir(),".kynver","locks");return GE(e,{recursive:!0}),dr.join(e,"cursor-agent-start.lock")}function tC(){if(process.env.KYNVER_CURSOR_START_LOCK==="0")return()=>{};let e=rC(),r=El("KYNVER_CURSOR_START_LOCK_TIMEOUT_MS",XE),t=El("KYNVER_CURSOR_START_LOCK_STALE_MS",QE),n=Date.now();for(;;)try{let o=_l(e,"wx");return xl(o),()=>{try{kf(e)}catch{}}}catch(o){if(o.code!=="EEXIST")throw o;try{if(Date.now()-YE(e).mtimeMs>t){kf(e);continue}}catch{continue}if(Date.now()-n>r)throw new Error(`timed out waiting for Cursor agent start lock: ${e}`);Rf(250)}}function vf(e=process.env){let r=e.KYNVER_CURSOR_AGENT_BIN?.trim()||e.CURSOR_AGENT_BIN?.trim();if(r)return r;if(process.platform==="win32"){let t=qs(e.KYNVER_CURSOR_AGENT_ROOT?.trim()||void 0);if(t)return t.nodeExe;let n=dr.join(e.LOCALAPPDATA||"","cursor-agent","agent.cmd");if(yf(n))return n}return"agent"}function nC(){return vf(process.env)}var bf={name:"cursor",defaultModel:wl,preflightModel(e){return Sl(e,wl)},start(e){let r=Sl(e.model,wl);if(!r.ok)throw new Error(`cursor provider model preflight failed: ${r.note}`);let t=r.model,n=_l(e.stdoutPath,"a"),o=_l(e.stderrPath,"a"),s=["ignore",n,o],i=nC(),a=Cl(i),l=ur(e.prompt,e.workerDir,{shell:a.shell}),c=oC({...e,prompt:l.prompt},t,a.prefixArgs),u=tC(),d;try{let[p,m]=a.shell?[a.executable,c]:Pe(a.executable,c,e.workerDir);d=qE(p,m,ae({cwd:e.worktreePath,detached:a.detached,shell:a.shell,stdio:s,env:eC(i,a,e.reviewWorker)})),Rf(El("KYNVER_CURSOR_START_LOCK_HOLD_MS",zE))}finally{u(),xl(n),xl(o)}if(!d.pid)throw new Error(`failed to spawn Cursor agent worker (is \`${i}\` on PATH? run \`agent login\` or set CURSOR_API_KEY)`);return d.unref(),{pid:d.pid,model:t}}};function oC(e,r,t=[]){return[...t,"-p",...e.executionMode==="read_only"?["--mode","plan"]:["--force"],...e.mcpConfigPath?["--approve-mcps"]:[],"--trust","--workspace",e.worktreePath,"--output-format","stream-json","--stream-partial-output","--model",r,e.prompt]}import{spawnSync as sC}from"node:child_process";function Pl(e,r=process.env){try{let t;try{t=Cl(e)}catch{t={executable:e,prefixArgs:[]}}let n=sC(t.executable,[...t.prefixArgs,"status","--format","json"],{encoding:"utf8",windowsHide:!0,timeout:8e3,env:{...r,CI:"1",NO_COLOR:"1"}});if(n.status!==0)return{ok:!1,note:"agent status: not authenticated"};let o=(n.stdout||"").trim();if(!o)return{ok:!1,note:"agent status: empty response"};let s;try{s=JSON.parse(o)}catch{return{ok:!1,note:"agent status: unparseable response"}}return typeof s=="object"&&s!==null&&s.isAuthenticated===!0?{ok:!0,note:"agent status: authenticated"}:{ok:!1,note:"agent status: not authenticated"}}catch(t){return{ok:!1,note:t instanceof Error?t.message:"agent status probe failed"}}}function Al(e=process.env){let r=[],t=e.KYNVER_CURSOR_AUTH_HOME?.trim();t&&(r.push(on.join(t,".config","cursor","auth.json")),r.push(on.join(t,".cursor-agent","auth.json")));let n=iC();if(r.push(on.join(n,".config","cursor","auth.json")),r.push(on.join(n,".cursor-agent","auth.json")),process.platform==="win32"){let o=e.LOCALAPPDATA?.trim(),s=e.APPDATA?.trim();o&&r.push(on.join(o,"cursor-agent","auth.json")),s&&r.push(on.join(s,"cursor","auth.json"))}return r}var lC="agent";function Sf(e=new Date().toISOString()){let r=Fe(lC,["KYNVER_CURSOR_AGENT_BIN","CURSOR_AGENT_BIN"]);if(process.env.CURSOR_API_KEY?.trim())return{providerId:"cursor",ready:!1,authSource:"api_key_env",sessionFingerprint:Zt("CURSOR_API_KEY"),checkedAt:e,note:"CURSOR_API_KEY present but scrubbed from worker env (deployment secret) \u2014 use `agent login` (OAuth) for harness workers"};let t=er(r,["-v"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=Al().find(a=>aC(a)),o=Pl(r),s=!!n||o.ok,i=t.ok&&s;return{providerId:"cursor",ready:i,authSource:"oauth_local",sessionFingerprint:n?cr(n):void 0,checkedAt:e,note:i?"Local Cursor/Composer OAuth session bound on runner":[t.note,s?void 0:o.note??"no ~/.config/cursor/auth.json or `agent login` session"].filter(Boolean).join("; ")}}import{existsSync as cC,readFileSync as uC}from"node:fs";import{homedir as dC}from"node:os";import Il from"node:path";var pC=["OPENAI_API_KEY","ANTHROPIC_API_KEY","KYNVER_API_KEY","KYNVER_BASE_URL"];function mC(){let e=process.env.HERMES_HOME?.trim(),r=e?Il.resolve(e):Il.join(dC(),".hermes");return Il.join(r,".env")}function fC(e){try{let r=uC(e,"utf8"),t=[];for(let n of pC)new RegExp(`^${n}=`,"m").test(r)&&t.push(n);return t}catch{return[]}}function wf(e=new Date().toISOString()){let r=Fe("hermes",["KYNVER_HERMES_BIN","HERMES_BIN"]),t=er(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=mC(),o=cC(n),s=o?fC(n):[],a=s.some(c=>c.endsWith("_API_KEY"))?"api_key_env":o?"oauth_local":"none",l=t.ok&&o;return{adapterId:"hermes",cliAvailable:t.ok,profileBound:o,authSource:a,sessionFingerprint:o?cr(n):void 0,checkedAt:e,note:l?`Hermes profile bound (${s.length?`keys: ${s.join(", ")}`:"no API keys detected"})`:[t.note,o?void 0:"no ~/.hermes/.env"].filter(Boolean).join("; ")}}function xf(e={}){let r=e.nowIso?.()??new Date().toISOString(),t=en(r),n={codex:t,cursor:Sf(r),claude:ff(r)},o=Object.values(n).filter(s=>s.ready).length;return{generatedAt:r,bindings:n,cloudApiCredits:{anthropicApiKey:!!process.env.ANTHROPIC_API_KEY?.trim(),openaiApiKey:!!process.env.OPENAI_API_KEY?.trim(),codexApiKey:!!process.env.CODEX_API_KEY?.trim()},workerEndpoint:{baseUrlConfigured:!!process.env.KYNVER_WORKER_BASE_URL?.trim(),apiKeyConfigured:!!process.env.KYNVER_WORKER_API_KEY?.trim()},hermes:wf(r),hermesOpenAiCodex:Gs(r),codexAdapterPath:t.path,readyCount:o}}var gC=[/\bprivileged\b/i,/\bproduction\s+db\b/i,/\bdb:push\b/i,/\bmigration\b/i,/\bdeploy\b/i,/\bsecrets?\b/i,/\bstripe\b/i,/\[require-approval\]/i,/\[operator-only\]/i],hC=[/\borchestration\b/i,/\bplan[- ]?progress\b/i,/\bstatus\s+sync\b/i,/\bheartbeat\b/i,/\bboard[- ]?drain\b/i,/\bmaintenance\b/i,/\[orchestration:\s*low-risk\]/i];function Ol(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function kC(e){let r=Ol(e,"executorRef").toLowerCase(),t=Ol(e,"title").toLowerCase(),n=Ol(e,"description").toLowerCase(),o=`${r}
85
85
  ${t}
86
- ${n}`;return gC.some(s=>s.test(o))?"privileged":r.includes("provider:claude")||r.includes("deep_review")||r.includes("security")||r.includes("landing")||r.includes("review")||t.startsWith("land:")||r.includes("implementer")||r.includes("repair")||t.includes("implement")?"elevated":hC.some(s=>s.test(o))?"low":"elevated"}function yC(e){let r=Xt(e.provider),t=e.escalatedFrom&&e.escalatedReason?`Escalated from ${e.escalatedFrom} (${e.escalatedReason}); using ${r.displayName} (${r.costTier} tier)`:`${r.displayName} selected for ${e.riskClass} orchestration (${r.costTier} tier, auth=${e.authSource})`;return{provider:e.provider,model:e.model,authSource:e.authSource,costTier:r.costTier,riskClass:e.riskClass,costRationale:t,routingRule:e.routingRule,escalatedFrom:e.escalatedFrom,escalatedReason:e.escalatedReason}}function RC(e){let r=e.inventory??xf();return e.codexBinding?{...r,bindings:{...r.bindings,codex:e.codexBinding}}:r}function yt(e){let r=yC({provider:e.providerId,model:e.model,authSource:e.binding.authSource,riskClass:e.riskClass,routingRule:e.routingRule,escalatedFrom:e.escalatedFrom,escalatedReason:e.escalatedReason});return{provider:e.providerId,model:e.model,rule:r.routingRule,audit:r}}function _f(e){let r=e.task??{},t=kC(r),n=RC({inventory:e.inventory,codexBinding:e.codexBinding??(e.inventory?null:Zt())}),o=e.preferLowCost===!1?null:e.explicitProvider?.trim().toLowerCase(),s=e.explicitModel?.trim()||void 0,i=Or;if(o==="codex"||o==="provider:codex"){let c=n.bindings.codex;if(!c.ready){let u=vl({inventory:n,riskClass:t});return yt(u?{providerId:u.providerId,binding:u.binding,riskClass:t,routingRule:"orchestration:explicit_codex_unavailable_cost_aware",model:s,escalatedFrom:"codex",escalatedReason:c.note??"codex oauth not bound"}:{providerId:i,binding:n.bindings[i],riskClass:t,routingRule:"orchestration:codex_unavailable_escalate_cursor",model:s,escalatedFrom:"codex",escalatedReason:c.note??"codex oauth not bound"})}return yt({providerId:"codex",binding:c,riskClass:t,routingRule:"orchestration:explicit_codex",model:s})}if(o==="cursor"||o==="provider:cursor"){let c=n.bindings.cursor;if(c.ready)return yt({providerId:"cursor",binding:c,riskClass:t,routingRule:"orchestration:explicit_cursor",model:s})}if(o==="claude"||o==="provider:claude"){let c=n.bindings.claude;if(c.ready)return yt({providerId:"claude",binding:c,riskClass:t,routingRule:"orchestration:explicit_claude",model:s})}let a=vl({inventory:n,riskClass:t});if(a)return yt({providerId:a.providerId,binding:a.binding,riskClass:t,routingRule:`orchestration:cost_aware_${a.providerId}`,model:s,escalatedFrom:a.escalatedFrom,escalatedReason:a.escalatedReason});let l=n.bindings.codex;return yt({providerId:i,binding:n.bindings[i],riskClass:t,routingRule:l.ready?"orchestration:inventory_empty_default_cursor":"orchestration:codex_unavailable_default_cursor",model:s,...l.ready?{}:{escalatedFrom:"codex",escalatedReason:l.note??"codex oauth not bound"}})}xr();import{closeSync as Of,openSync as Tf}from"node:fs";import{spawn as AC}from"node:child_process";O();vr();Kn();import{unlinkSync as vC,writeFileSync as bC}from"node:fs";import SC from"node:path";var rr="KYNVER_WORKER_BROKER_SOCKET";function Tl(e){return`${JSON.stringify(e)}
87
- `}function Nl(e){let r;try{r=JSON.parse(e)}catch{return{ok:!1,reason:"malformed_request",error:"request was not valid JSON",id:""}}if(!r||typeof r!="object"||Array.isArray(r))return{ok:!1,reason:"malformed_request",error:"request must be a JSON object",id:""};let t=r,n=typeof t.id=="string"?t.id:"";if(t.v!==1)return{ok:!1,reason:"unsupported_protocol",error:"unsupported protocol version (expected 1)",id:n};if(!n)return{ok:!1,reason:"malformed_request",error:"request id must be a non-empty string",id:""};if(t.op==="list_tools")return{ok:!0,request:{v:1,id:n,op:"list_tools"}};if(t.op==="call_tool"){if(typeof t.name!="string"||!t.name)return{ok:!1,reason:"malformed_request",error:"call_tool requires a tool name",id:n};let o=t.args&&typeof t.args=="object"&&!Array.isArray(t.args)?t.args:{};return{ok:!0,request:{v:1,id:n,op:"call_tool",name:t.name,args:o}}}return{ok:!1,reason:"malformed_request",error:"unknown op",id:n}}var wC="KYNVER_WORKER_MCP_TOOLS",xC="mcp-config.json",oe="kynver",oo=["agent_os_context_envelope","agent_os_search_memory","agent_os_search_skills","agent_os_get_skill","agent_os_progress_note"],Ef=oo.map(e=>`mcp__${oe}__${e}`),_C={"worker.context":["agent_os_context_envelope"],"worker.memory.read":["agent_os_search_memory"],"worker.skills.read":["agent_os_search_skills","agent_os_get_skill"],"worker.progress.report":["agent_os_progress_note"]};function so(e){if(!e||e.length===0)return[...oo];let r=new Set;for(let t of e)for(let n of _C[t]??[])r.add(n);return oo.filter(t=>r.has(t))}function Cf(e){return so(e).map(r=>`mcp__${oe}__${r}`)}var EC=["claude","cursor","codex","openai-compatible","gemini","gemini-api"],CC=["openai-compatible","gemini-api"];function PC(e){return EC.includes(e)}function Dl(e){return CC.includes(e)}function Pf(e){return PC(e)&&!Dl(e)}function io(e=process.env){let r=e[wC]?.trim().toLowerCase();return r?r==="1"||r==="true"||r==="yes"||r==="on":!0}function Af(e){return SC.join(e,xC)}function If(e){let r=Af(e.workerDir),t={mcpServers:{[oe]:{command:"npx",args:["-y","-p","@kynver-app/mcp-agent-os","kynver-worker-mcp"],env:{[rr]:e.brokerSocketPath}}}};return bC(r,`${JSON.stringify(t,null,2)}
88
- `,{mode:384}),r}function Js(e){try{return vC(Af(e)),!0}catch{return!1}}Kn();function IC(e,r){let n=Df(e,r).at(-1);if(typeof n!="string"||!n.trim())throw new Error("claude provider refuses to spawn: worker prompt is empty after argv assembly (stdin is ignored \u2014 fix prompt delivery before retrying)")}var Nf={name:"claude",defaultModel:Be,preflightModel(e){return bl(e,Be)},start(e){let r=bl(e.model,Be);if(!r.ok)throw new Error(`claude provider model preflight failed: ${r.note}`);let t=r.model;IC(e,t);let n=ep(t,{pinned:e.modelPinned===!0}),o=qs(e.prompt,e.workerDir),[s,i]=pe("claude",Df({...e,prompt:o.prompt},t,n)),a=Tf(e.stdoutPath,"a"),l=Tf(e.stderrPath,"a"),c=["ignore",a,l],[u,d]=Pe(s,i,e.workerDir),p=AC(u,d,ae({cwd:e.worktreePath,detached:ce(),stdio:c,env:Ke(process.env,{reviewWorker:e.reviewWorker})}));if(Of(a),Of(l),!p.pid)throw new Error("failed to spawn claude worker process (is the `claude` CLI on PATH?)");return p.unref(),{pid:p.pid,model:t}}};function Df(e,r,t){return["--model",r,...rp(t),"-p","--verbose","--permission-mode",e.executionMode==="read_only"?"plan":"bypassPermissions","--output-format","stream-json","--include-partial-messages",...e.mcpConfigPath?["--mcp-config",e.mcpConfigPath,`--allowedTools=${(e.mcpAllowedTools?.length?e.mcpAllowedTools:Ef).join(",")}`]:[],"--",e.prompt]}xr();import{closeSync as Uf,existsSync as LC,openSync as Ff}from"node:fs";import{spawn as Wl}from"node:child_process";O();vr();xr();import{closeSync as Mf,openSync as Wf}from"node:fs";import{spawn as OC}from"node:child_process";O();vr();var zs="gpt-5.6-sol";var Ml=process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||zs;function TC(e,r){return Ke({...process.env,CI:"1",NO_COLOR:"1",HERMES_ACCEPT_HOOKS:process.env.HERMES_ACCEPT_HOOKS??"1",...r?{CODEX_HOME:r}:{}},{reviewWorker:e})}function NC(e,r){let t=process.env.KYNVER_HERMES_CODEX_MAX_TURNS?.trim()||"40";return["chat","-q",r,"--provider","openai-codex","-m",e,"-Q","--accept-hooks","--max-turns",t,"--toolsets","hermes-cli"]}var Lf={name:"hermes-codex",defaultModel:Ml,preflightModel(e){return en(e,Ml)},start(e){if(e.executionMode==="read_only")throw new Error("hermes-codex provider cannot enforce read_only execution mode (no sandbox flag); route read_only tasks to the direct codex exec path or another provider");let r=en(e.model,Ml);if(!r.ok)throw new Error(`hermes-codex provider model preflight failed: ${r.note}`);let t=r.model,n=Fe("hermes",["KYNVER_HERMES_BIN","HERMES_BIN"]),[o,s]=pe(n,NC(t,e.prompt)),i=Wf(e.stdoutPath,"a"),a=Wf(e.stderrPath,"a"),l=["ignore",i,a],[c,u]=Pe(o,s,e.workerDir),d=OC(c,u,ae({cwd:e.worktreePath,detached:ce(),shell:!1,stdio:l,env:TC(e.reviewWorker,e.codexHome)}));if(Mf(i),Mf(a),!d.pid)throw new Error(`failed to spawn Hermes openai-codex worker (is \`${n}\` on PATH? run \`hermes auth status openai-codex\`)`);return d.unref(),{pid:d.pid,model:t}}};var DC="KYNVER_CODEX_WINDOWS_SANDBOX",MC="unelevated";function WC(e=process.env){return e[DC]?.trim().toLowerCase()==="elevated"?"elevated":MC}function Bf(e=process.platform,r=process.env){return e!=="win32"?[]:["-c",`windows.sandbox="${WC(r)}"`]}function BC(){return process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||zs}var Tr=BC();function Ll(){return process.env.KYNVER_CODEX_BIN?.trim()||process.env.CODEX_BIN?.trim()||"codex"}function UC(e,r){return Ke({...process.env,CI:"1",NO_COLOR:"1",...r?{CODEX_HOME:r}:{}},{reviewWorker:e})}function FC(e,r,t,n=process.platform,o=process.env){return["--ask-for-approval","never","exec",...Bf(n,o),"--json","--sandbox",t==="read_only"?"read-only":"workspace-write","--model",e,r]}function KC(e,r,t,n){if(process.platform==="win32"){let[l,c]=pe(e,r);return Wl(l,c,t)}if(!LC("/usr/bin/script")){let[l,c]=Pe(e,r,n);return Wl(l,c,t)}let s=[e,...r].map(l=>`'${l.replace(/'/g,"'\\''")}'`).join(" "),[i,a]=Pe("script",["-qfc",s,"/dev/null"],n);return Wl(i,a,t)}var Kf={name:"codex",defaultModel:Tr,preflightModel(e){return en(e,Tr)},start(e){if(Zt().path==="hermes_openai_codex"&&e.executionMode!=="read_only")return Lf.start(e);let t=en(e.model,Tr);if(!t.ok)throw new Error(`codex provider model preflight failed: ${t.note}`);let n=t.model,o=Ff(e.stdoutPath,"a"),s=Ff(e.stderrPath,"a"),i=["ignore",o,s],a=Ll(),l=FC(n,e.prompt,e.executionMode),c;try{c=KC(a,l,ae({cwd:e.worktreePath,detached:ce(),shell:!1,stdio:i,env:UC(e.reviewWorker,e.codexHome)}),e.workerDir)}finally{Uf(o),Uf(s)}if(!c.pid)throw new Error(`failed to spawn Codex worker (is \`${a}\` on PATH? run \`codex login\` or set CODEX_API_KEY)`);return c.unref(),{pid:c.pid,model:n}}};xr();import{closeSync as Hf,openSync as $f}from"node:fs";import YC from"node:path";import{fileURLToPath as qC}from"node:url";import{spawn as JC}from"node:child_process";O();import{existsSync as Xs}from"node:fs";import Rt from"node:path";import{fileURLToPath as HC}from"node:url";function $C(e,r){let t=Rt.resolve(e);for(;;){let n=Rt.join(t,r);if(Xs(n))return n;let o=Rt.dirname(t);if(o===t)return null;t=o}}function jC(e){return $C(e,Rt.join("node_modules",".bin","tsx"))??"npx"}function Bl(e,r){if(e.endsWith(".ts")){let t=jC(Rt.dirname(e));return{command:t,argsPrefix:t==="npx"?["tsx",e]:[e],cliPath:e}}return{command:r,argsPrefix:[e],cliPath:e}}function Qs(e){if(e.explicitCliPath)return Xs(e.explicitCliPath)?Bl(e.explicitCliPath,e.nodeExecutable):null;let r=HC(new URL(".",e.importMetaUrl)),t=Rt.join(r,"cli.js");if(Xs(t))return Bl(t,e.nodeExecutable);let n=Rt.join(r,"cli.ts");return Xs(n)?Bl(n,e.nodeExecutable):null}var VC="X-Kynver-Job-Token",co={agent_os_context_envelope:{name:"agent_os_context_envelope",description:"Fetch the context envelope for YOUR OWN task: goal/plan/task summaries, relevant memory, and recent session context. Optional memoryQuery focuses the memory portion.",inputSchema:{type:"object",properties:{memoryQuery:{type:"string",description:"Focus the memory portion of the envelope."},mode:{type:"string",description:"Envelope mode hint."}},additionalProperties:!1}},agent_os_search_memory:{name:"agent_os_search_memory",description:"Semantic search over the workspace's long-term memory. Returns a bounded top-N of relevant entries.",inputSchema:{type:"object",properties:{query:{type:"string",description:"What to search for."},k:{type:"integer",minimum:1,maximum:20,description:"How many entries to return."}},required:["query"],additionalProperties:!1}},agent_os_search_skills:{name:"agent_os_search_skills",description:"Search the workspace's skill library (bounded, metadata-only index). Use agent_os_get_skill to fetch one full skill by slug.",inputSchema:{type:"object",properties:{query:{type:"string"},limit:{type:"integer",minimum:1,maximum:25}},additionalProperties:!1}},agent_os_get_skill:{name:"agent_os_get_skill",description:"Fetch ONE full skill (including instructions) by slug.",inputSchema:{type:"object",properties:{slug:{type:"string"}},required:["slug"],additionalProperties:!1}},agent_os_progress_note:{name:"agent_os_progress_note",description:"Append a progress or blocker note to YOUR OWN task's journal. kind: 'progress' (default) or 'blocked'.",inputSchema:{type:"object",properties:{note:{type:"string"},kind:{type:"string",enum:["progress","blocked"]},eventKey:{type:"string"}},required:["note"],additionalProperties:!1}}};function GC(e){return`/api/agent-os/by-id/${encodeURIComponent(e.agentOsId)}/worker`}async function ao(e,r,t){let n=await e.fetchImpl(`${e.apiBaseUrl}${r}`,{method:t?.method??"GET",headers:{[VC]:e.token,...t?{"Content-Type":"application/json"}:{}},...t?{body:JSON.stringify(t.body)}:{}});if(!n.ok)throw new Error(`request failed (${n.status})`);return n.json()}function lo(e){return typeof e=="string"&&e.trim()?e.trim():void 0}async function Zs(e,r,t){let n=GC(e);switch(r){case"agent_os_context_envelope":{let o=new URLSearchParams({task:e.taskId}),s=lo(t.memoryQuery);s&&o.set("memoryQuery",s);let i=lo(t.mode);return i&&o.set("mode",i),ao(e,`${n}/context-envelope?${o.toString()}`)}case"agent_os_search_memory":{let o=new URLSearchParams({q:String(t.query??"")});return typeof t.k=="number"&&o.set("k",String(t.k)),ao(e,`${n}/memory-search?${o.toString()}`)}case"agent_os_search_skills":{let o=new URLSearchParams,s=lo(t.query);s&&o.set("q",s),typeof t.limit=="number"&&o.set("limit",String(t.limit));let i=o.toString();return ao(e,`${n}/skills${i?`?${i}`:""}`)}case"agent_os_get_skill":return ao(e,`${n}/skills/${encodeURIComponent(String(t.slug??""))}`);case"agent_os_progress_note":return ao(e,`${n}/progress-note`,{method:"POST",body:{note:String(t.note??""),...t.kind==="blocked"?{kind:"blocked"}:{},...lo(t.eventKey)?{eventKey:lo(t.eventKey)}:{}}})}}function on(e){return oo.includes(e)}function sn(e){return so(e).filter(on).map(r=>{let t=co[r];return{type:"function",function:{name:t.name,description:t.description,parameters:t.inputSchema}}})}var vt="openai-compatible",zC=600*1e3;function Ul(e=process.env){return e.KYNVER_WORKER_MODEL?.trim()||void 0}var uo=class extends Error{};function XC(e=process.env){let r=e.KYNVER_WORKER_BASE_URL?.trim();if(!r)throw new uo(`the "openai-compatible" worker provider requires KYNVER_WORKER_BASE_URL on the daemon host \u2014 point it at any OpenAI-compatible chat-completions endpoint (e.g. http://localhost:11434/v1 for Ollama, http://localhost:8000/v1 for vLLM, or your gateway's /v1 URL). Set KYNVER_WORKER_API_KEY too when the endpoint requires auth.`);let t;try{t=new URL(r)}catch{throw new uo(`KYNVER_WORKER_BASE_URL is not a valid URL: "${r}" \u2014 expected e.g. http://localhost:11434/v1`)}if(t.protocol!=="http:"&&t.protocol!=="https:")throw new uo(`KYNVER_WORKER_BASE_URL must be http(s), got "${t.protocol}//" \u2014 e.g. http://localhost:11434/v1`);let n=Number(e.KYNVER_WORKER_TIMEOUT_MS??""),o=Number.isFinite(n)&&n>0?Math.floor(n):zC;return{baseUrl:r.replace(/\/+$/,""),...e.KYNVER_WORKER_API_KEY?.trim()?{apiKey:e.KYNVER_WORKER_API_KEY.trim()}:{},timeoutMs:o}}var QC="You are a Kynver harness worker executing one work unit end to end. Follow the task instructions exactly and produce the complete deliverable (analysis, answer, or unified diff as the task requires) in a single response. Be precise and complete \u2014 your response is recorded verbatim as the work unit's final result.";function po(e,r,t,n){return{url:`${e.baseUrl}/chat/completions`,headers:{"content-type":"application/json",...e.apiKey?{authorization:`Bearer ${e.apiKey}`}:{}},body:{model:r,temperature:0,stream:!1,messages:[{role:"system",content:QC},{role:"user",content:t}],...n&&n.length?{tools:n,tool_choice:"auto"}:{}}}}function ZC(){let e=qC(new URL(".",import.meta.url)),r=import.meta.url.endsWith(".ts"),t=YC.join(e,r?"openai-compatible-runner.ts":"openai-compatible-runner.js"),n=Qs({importMetaUrl:import.meta.url,explicitCliPath:t,nodeExecutable:process.execPath});if(!n)throw new Error(`openai-compatible runner script not found at ${t} \u2014 is the @kynver-app/runtime install complete?`);return{command:n.command,argsPrefix:n.argsPrefix}}function eP(e,r,t){let n=e.workerToolGrant,o=n?sn(n.capabilities):void 0;return{provider:vt,model:t,request:po(r,t,e.prompt,o),timeoutMs:r.timeoutMs,heartbeatPath:e.heartbeatPath,endpointOrigin:new URL(r.baseUrl).origin,...n&&o&&o.length?{workerTools:n}:{}}}function mo(e,r,t){let n=ZC(),o=$f(e.stdoutPath,"a"),s=$f(e.stderrPath,"a"),i=["pipe",o,s],[a,l]=Pe(n.command,n.argsPrefix,e.workerDir),c=JC(a,l,ae({cwd:e.worktreePath,detached:ce(),shell:!1,stdio:i,env:Ke(process.env,{reviewWorker:e.reviewWorker})}));if(Hf(o),Hf(s),!c.pid)throw new Error(`failed to spawn ${r.provider} worker runner (node executable unavailable?)`);try{c.stdin?.on("error",()=>{}),c.stdin?.write(JSON.stringify(r)),c.stdin?.end()}catch(u){throw new Error(`failed to hand request config to ${r.provider} runner: ${u.message}`)}return c.unref(),{pid:c.pid,model:t}}var jf={name:vt,get defaultModel(){return Ul()},preflightModel(e){return rn(e,Ul())},start(e){let r=rn(e.model,Ul());if(!r.ok)throw new Error(`openai-compatible provider model preflight failed: ${r.note}`);let t=r.model,n=XC(process.env),o=eP(e,n,t);return mo(e,o,t)}};xr();import{closeSync as Jf,openSync as zf}from"node:fs";import{spawn as nP}from"node:child_process";O();vr();import rP from"node:path";var tP=new Set(["gemini-2.5-pro","gemini-2.5-flash","auto","pro","flash","flash-lite"]);function ei(e=process.env){return e.KYNVER_GEMINI_BIN?.trim()||e.GEMINI_BIN?.trim()||"agy"}function ri(e){let r=rP.basename(e).toLowerCase().replace(/\.cmd$/i,"").replace(/\.exe$/i,"");return r==="agy"||r==="antigravity"?"antigravity":"gemini"}function Vf(e){return e.requested&&/-(?:high|medium|low)$/i.test(e.requested)?e.requested:e.model}function Gf(e){let r=e.trim().toLowerCase();return!r||tP.has(r)?[]:["--model",e.trim()]}function Yf(e,r){return[...Gf(r),"--output-format","stream-json",...e.executionMode==="read_only"?[]:["--dangerously-skip-permissions"],"--prompt",e.prompt]}function qf(e,r){return["--model",r,"--approval-mode",e.executionMode==="read_only"?"plan":"yolo","--output-format","stream-json","--skip-trust",...e.mcpConfigPath?["--allowed-mcp-server-names",oe]:[],"--prompt",e.prompt]}var dr="gemini";function Te(e=process.env){return e.KYNVER_GEMINI_DEFAULT_MODEL?.trim()||"gemini-2.5-pro"}function oP(e,r){return Ke({...process.env,CI:"1",NO_COLOR:"1",GEMINI_CLI_TRUST_WORKSPACE:"true",...r?{GEMINI_CLI_HOME:r}:{}},{reviewWorker:e})}var Xf={name:dr,get defaultModel(){return Te()},preflightModel(e){return tn(e,Te())},start(e){let r=tn(e.model,Te());if(!r.ok)throw new Error(`gemini provider model preflight failed: ${r.note}`);let t=ei(),n=ri(t),o=n==="antigravity"?Vf(r):r.model,s=n==="antigravity"?Yf(e,o):qf(e,o),[i,a]=pe(t,s),l=zf(e.stdoutPath,"a"),c=zf(e.stderrPath,"a"),u=["ignore",l,c],[d,p]=Pe(i,a,e.workerDir),m=nP(d,p,ae({cwd:e.worktreePath,detached:ce(),shell:!1,stdio:u,env:oP(e.reviewWorker,n==="gemini"?e.geminiCliHome:void 0)}));if(Jf(l),Jf(c),!m.pid)throw new Error(`failed to spawn Google Antigravity worker (is \`${t}\` on PATH? install Google Antigravity and run \`agy\` once to sign in`+(n==="antigravity"?'; GEMINI_API_KEY is used only when ~/.gemini/antigravity-cli/settings.json sets "modelProvider": "gemini")':", or set GEMINI_API_KEY)"));return m.unref(),{pid:m.pid,model:o}}};var pr="gemini-api",Qf="https://generativelanguage.googleapis.com/v1beta/openai",sP=600*1e3,fo=class extends Error{};function iP(e=process.env){return e.KYNVER_GEMINI_API_KEY?.trim()||e.GEMINI_API_KEY?.trim()||void 0}function aP(e=process.env){let r=iP(e);if(!r)throw new fo('the "gemini-api" worker provider requires KYNVER_GEMINI_API_KEY or GEMINI_API_KEY on the daemon host \u2014 create a key at https://aistudio.google.com/apikey. To use Google Antigravity instead, set workerProvider / --provider gemini and run `agy` once to sign in.');let t=e.KYNVER_GEMINI_BASE_URL?.trim()||Qf,n;try{n=new URL(t)}catch{throw new fo(`KYNVER_GEMINI_BASE_URL is not a valid URL: "${t}" \u2014 expected e.g. ${Qf}`)}if(n.protocol!=="http:"&&n.protocol!=="https:")throw new fo(`KYNVER_GEMINI_BASE_URL must be http(s), got "${n.protocol}//"`);let o=Number(e.KYNVER_WORKER_TIMEOUT_MS??""),s=Number.isFinite(o)&&o>0?Math.floor(o):sP;return{baseUrl:t.replace(/\/+$/,""),apiKey:r,timeoutMs:s}}function lP(e,r,t){let n=e.workerToolGrant,o=n?sn(n.capabilities):void 0,s=po(r,t,e.prompt,o);return{provider:pr,model:t,request:s,timeoutMs:r.timeoutMs,heartbeatPath:e.heartbeatPath,endpointOrigin:new URL(r.baseUrl).origin,...n&&o&&o.length?{workerTools:n}:{}}}var Zf={name:pr,get defaultModel(){return Te()},preflightModel(e){return tn(e,Te())},start(e){let r=tn(e.model,Te());if(!r.ok)throw new Error(`gemini-api provider model preflight failed: ${r.note}`);let t=r.model,n=aP(process.env),o=lP(e,n,t);return mo(e,o,t)}};var tr="venice",Fl="https://api.venice.ai/api/v1",cP="venice-uncensored-1-2",uP="KYNVER_VENICE_API_KEY",dP="VENICE_API_KEY",pP="KYNVER_VENICE_BASE_URL",mP="KYNVER_VENICE_DEFAULT_MODEL";function eg(e=process.env){return e[uP]?.trim()||e[dP]?.trim()||void 0}function rg(e=process.env){return(e[pP]?.trim()||Fl).replace(/\/+$/,"")}function Jr(e=process.env){return e[mP]?.trim()||cP}function tg(e){return{"content-type":"application/json",authorization:`Bearer ${e}`}}var fP=Be,$s="composer-2.5";function be(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function gP(e){if(!e)return;let r=be(e,"workerModelOverride")||be(e,"modelOverride");return r||`${be(e,"title")}
86
+ ${n}`;return gC.some(s=>s.test(o))?"privileged":r.includes("provider:claude")||r.includes("deep_review")||r.includes("security")||r.includes("landing")||r.includes("review")||t.startsWith("land:")||r.includes("implementer")||r.includes("repair")||t.includes("implement")?"elevated":hC.some(s=>s.test(o))?"low":"elevated"}function yC(e){let r=Qt(e.provider),t=e.escalatedFrom&&e.escalatedReason?`Escalated from ${e.escalatedFrom} (${e.escalatedReason}); using ${r.displayName} (${r.costTier} tier)`:`${r.displayName} selected for ${e.riskClass} orchestration (${r.costTier} tier, auth=${e.authSource})`;return{provider:e.provider,model:e.model,authSource:e.authSource,costTier:r.costTier,riskClass:e.riskClass,costRationale:t,routingRule:e.routingRule,escalatedFrom:e.escalatedFrom,escalatedReason:e.escalatedReason}}function RC(e){let r=e.inventory??xf();return e.codexBinding?{...r,bindings:{...r.bindings,codex:e.codexBinding}}:r}function Rt(e){let r=yC({provider:e.providerId,model:e.model,authSource:e.binding.authSource,riskClass:e.riskClass,routingRule:e.routingRule,escalatedFrom:e.escalatedFrom,escalatedReason:e.escalatedReason});return{provider:e.providerId,model:e.model,rule:r.routingRule,audit:r}}function _f(e){let r=e.task??{},t=kC(r),n=RC({inventory:e.inventory,codexBinding:e.codexBinding??(e.inventory?null:en())}),o=e.preferLowCost===!1?null:e.explicitProvider?.trim().toLowerCase(),s=e.explicitModel?.trim()||void 0,i=Tr;if(o==="codex"||o==="provider:codex"){let c=n.bindings.codex;if(!c.ready){let u=vl({inventory:n,riskClass:t});return Rt(u?{providerId:u.providerId,binding:u.binding,riskClass:t,routingRule:"orchestration:explicit_codex_unavailable_cost_aware",model:s,escalatedFrom:"codex",escalatedReason:c.note??"codex oauth not bound"}:{providerId:i,binding:n.bindings[i],riskClass:t,routingRule:"orchestration:codex_unavailable_escalate_cursor",model:s,escalatedFrom:"codex",escalatedReason:c.note??"codex oauth not bound"})}return Rt({providerId:"codex",binding:c,riskClass:t,routingRule:"orchestration:explicit_codex",model:s})}if(o==="cursor"||o==="provider:cursor"){let c=n.bindings.cursor;if(c.ready)return Rt({providerId:"cursor",binding:c,riskClass:t,routingRule:"orchestration:explicit_cursor",model:s})}if(o==="claude"||o==="provider:claude"){let c=n.bindings.claude;if(c.ready)return Rt({providerId:"claude",binding:c,riskClass:t,routingRule:"orchestration:explicit_claude",model:s})}let a=vl({inventory:n,riskClass:t});if(a)return Rt({providerId:a.providerId,binding:a.binding,riskClass:t,routingRule:`orchestration:cost_aware_${a.providerId}`,model:s,escalatedFrom:a.escalatedFrom,escalatedReason:a.escalatedReason});let l=n.bindings.codex;return Rt({providerId:i,binding:n.bindings[i],riskClass:t,routingRule:l.ready?"orchestration:inventory_empty_default_cursor":"orchestration:codex_unavailable_default_cursor",model:s,...l.ready?{}:{escalatedFrom:"codex",escalatedReason:l.note??"codex oauth not bound"}})}_r();import{closeSync as Of,openSync as Tf}from"node:fs";import{spawn as AC}from"node:child_process";O();br();Hn();import{unlinkSync as vC,writeFileSync as bC}from"node:fs";import SC from"node:path";var rr="KYNVER_WORKER_BROKER_SOCKET";function Tl(e){return`${JSON.stringify(e)}
87
+ `}function Nl(e){let r;try{r=JSON.parse(e)}catch{return{ok:!1,reason:"malformed_request",error:"request was not valid JSON",id:""}}if(!r||typeof r!="object"||Array.isArray(r))return{ok:!1,reason:"malformed_request",error:"request must be a JSON object",id:""};let t=r,n=typeof t.id=="string"?t.id:"";if(t.v!==1)return{ok:!1,reason:"unsupported_protocol",error:"unsupported protocol version (expected 1)",id:n};if(!n)return{ok:!1,reason:"malformed_request",error:"request id must be a non-empty string",id:""};if(t.op==="list_tools")return{ok:!0,request:{v:1,id:n,op:"list_tools"}};if(t.op==="call_tool"){if(typeof t.name!="string"||!t.name)return{ok:!1,reason:"malformed_request",error:"call_tool requires a tool name",id:n};let o=t.args&&typeof t.args=="object"&&!Array.isArray(t.args)?t.args:{};return{ok:!0,request:{v:1,id:n,op:"call_tool",name:t.name,args:o}}}return{ok:!1,reason:"malformed_request",error:"unknown op",id:n}}var wC="KYNVER_WORKER_MCP_TOOLS",xC="mcp-config.json",oe="kynver",so=["agent_os_context_envelope","agent_os_search_memory","agent_os_search_skills","agent_os_get_skill","agent_os_progress_note"],Ef=so.map(e=>`mcp__${oe}__${e}`),_C={"worker.context":["agent_os_context_envelope"],"worker.memory.read":["agent_os_search_memory"],"worker.skills.read":["agent_os_search_skills","agent_os_get_skill"],"worker.progress.report":["agent_os_progress_note"]};function io(e){if(!e||e.length===0)return[...so];let r=new Set;for(let t of e)for(let n of _C[t]??[])r.add(n);return so.filter(t=>r.has(t))}function Cf(e){return io(e).map(r=>`mcp__${oe}__${r}`)}var EC=["claude","cursor","codex","openai-compatible","gemini","gemini-api"],CC=["openai-compatible","gemini-api"];function PC(e){return EC.includes(e)}function Dl(e){return CC.includes(e)}function Pf(e){return PC(e)&&!Dl(e)}function ao(e=process.env){let r=e[wC]?.trim().toLowerCase();return r?r==="1"||r==="true"||r==="yes"||r==="on":!0}function Af(e){return SC.join(e,xC)}function If(e){let r=Af(e.workerDir),t={mcpServers:{[oe]:{command:"npx",args:["-y","-p","@kynver-app/mcp-agent-os","kynver-worker-mcp"],env:{[rr]:e.brokerSocketPath}}}};return bC(r,`${JSON.stringify(t,null,2)}
88
+ `,{mode:384}),r}function Js(e){try{return vC(Af(e)),!0}catch{return!1}}Hn();function IC(e,r){let n=Df(e,r).at(-1);if(typeof n!="string"||!n.trim())throw new Error("claude provider refuses to spawn: worker prompt is empty after argv assembly (stdin is ignored \u2014 fix prompt delivery before retrying)")}var Nf={name:"claude",defaultModel:Be,preflightModel(e){return bl(e,Be)},start(e){let r=bl(e.model,Be);if(!r.ok)throw new Error(`claude provider model preflight failed: ${r.note}`);let t=r.model;IC(e,t);let n=ep(t,{pinned:e.modelPinned===!0}),o=ur(e.prompt,e.workerDir),[s,i]=pe("claude",Df({...e,prompt:o.prompt},t,n)),a=Tf(e.stdoutPath,"a"),l=Tf(e.stderrPath,"a"),c=["ignore",a,l],[u,d]=Pe(s,i,e.workerDir),p=AC(u,d,ae({cwd:e.worktreePath,detached:ce(),stdio:c,env:Ke(process.env,{reviewWorker:e.reviewWorker})}));if(Of(a),Of(l),!p.pid)throw new Error("failed to spawn claude worker process (is the `claude` CLI on PATH?)");return p.unref(),{pid:p.pid,model:t}}};function Df(e,r,t){return["--model",r,...rp(t),"-p","--verbose","--permission-mode",e.executionMode==="read_only"?"plan":"bypassPermissions","--output-format","stream-json","--include-partial-messages",...e.mcpConfigPath?["--mcp-config",e.mcpConfigPath,`--allowedTools=${(e.mcpAllowedTools?.length?e.mcpAllowedTools:Ef).join(",")}`]:[],"--",e.prompt]}_r();import{closeSync as Uf,existsSync as LC,openSync as Ff}from"node:fs";import{spawn as Wl}from"node:child_process";O();br();_r();import{closeSync as Mf,openSync as Wf}from"node:fs";import{spawn as OC}from"node:child_process";O();br();var zs="gpt-5.6-sol";var Ml=process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||zs;function TC(e,r){return Ke({...process.env,CI:"1",NO_COLOR:"1",HERMES_ACCEPT_HOOKS:process.env.HERMES_ACCEPT_HOOKS??"1",...r?{CODEX_HOME:r}:{}},{reviewWorker:e})}function NC(e,r){let t=process.env.KYNVER_HERMES_CODEX_MAX_TURNS?.trim()||"40";return["chat","-q",r,"--provider","openai-codex","-m",e,"-Q","--accept-hooks","--max-turns",t,"--toolsets","hermes-cli"]}var Lf={name:"hermes-codex",defaultModel:Ml,preflightModel(e){return rn(e,Ml)},start(e){if(e.executionMode==="read_only")throw new Error("hermes-codex provider cannot enforce read_only execution mode (no sandbox flag); route read_only tasks to the direct codex exec path or another provider");let r=rn(e.model,Ml);if(!r.ok)throw new Error(`hermes-codex provider model preflight failed: ${r.note}`);let t=r.model,n=Fe("hermes",["KYNVER_HERMES_BIN","HERMES_BIN"]),o=ur(e.prompt,e.workerDir),[s,i]=pe(n,NC(t,o.prompt)),a=Wf(e.stdoutPath,"a"),l=Wf(e.stderrPath,"a"),c=["ignore",a,l],[u,d]=Pe(s,i,e.workerDir),p=OC(u,d,ae({cwd:e.worktreePath,detached:ce(),shell:!1,stdio:c,env:TC(e.reviewWorker,e.codexHome)}));if(Mf(a),Mf(l),!p.pid)throw new Error(`failed to spawn Hermes openai-codex worker (is \`${n}\` on PATH? run \`hermes auth status openai-codex\`)`);return p.unref(),{pid:p.pid,model:t}}};var DC="KYNVER_CODEX_WINDOWS_SANDBOX",MC="unelevated";function WC(e=process.env){return e[DC]?.trim().toLowerCase()==="elevated"?"elevated":MC}function Bf(e=process.platform,r=process.env){return e!=="win32"?[]:["-c",`windows.sandbox="${WC(r)}"`]}function BC(){return process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||zs}var Nr=BC();function Ll(){return process.env.KYNVER_CODEX_BIN?.trim()||process.env.CODEX_BIN?.trim()||"codex"}function UC(e,r){return Ke({...process.env,CI:"1",NO_COLOR:"1",...r?{CODEX_HOME:r}:{}},{reviewWorker:e})}function FC(e,r,t,n=process.platform,o=process.env){return["--ask-for-approval","never","exec",...Bf(n,o),"--json","--sandbox",t==="read_only"?"read-only":"workspace-write","--model",e,r]}function KC(e,r,t,n){if(process.platform==="win32"){let[l,c]=pe(e,r);return Wl(l,c,t)}if(!LC("/usr/bin/script")){let[l,c]=Pe(e,r,n);return Wl(l,c,t)}let s=[e,...r].map(l=>`'${l.replace(/'/g,"'\\''")}'`).join(" "),[i,a]=Pe("script",["-qfc",s,"/dev/null"],n);return Wl(i,a,t)}var Kf={name:"codex",defaultModel:Nr,preflightModel(e){return rn(e,Nr)},start(e){if(en().path==="hermes_openai_codex"&&e.executionMode!=="read_only")return Lf.start(e);let t=rn(e.model,Nr);if(!t.ok)throw new Error(`codex provider model preflight failed: ${t.note}`);let n=t.model,o=Ff(e.stdoutPath,"a"),s=Ff(e.stderrPath,"a"),i=["ignore",o,s],a=Ll(),l=ur(e.prompt,e.workerDir),c=FC(n,l.prompt,e.executionMode),u;try{u=KC(a,c,ae({cwd:e.worktreePath,detached:ce(),shell:!1,stdio:i,env:UC(e.reviewWorker,e.codexHome)}),e.workerDir)}finally{Uf(o),Uf(s)}if(!u.pid)throw new Error(`failed to spawn Codex worker (is \`${a}\` on PATH? run \`codex login\` or set CODEX_API_KEY)`);return u.unref(),{pid:u.pid,model:n}}};_r();import{closeSync as Hf,openSync as $f}from"node:fs";import YC from"node:path";import{fileURLToPath as qC}from"node:url";import{spawn as JC}from"node:child_process";O();import{existsSync as Xs}from"node:fs";import vt from"node:path";import{fileURLToPath as HC}from"node:url";function $C(e,r){let t=vt.resolve(e);for(;;){let n=vt.join(t,r);if(Xs(n))return n;let o=vt.dirname(t);if(o===t)return null;t=o}}function jC(e){return $C(e,vt.join("node_modules",".bin","tsx"))??"npx"}function Bl(e,r){if(e.endsWith(".ts")){let t=jC(vt.dirname(e));return{command:t,argsPrefix:t==="npx"?["tsx",e]:[e],cliPath:e}}return{command:r,argsPrefix:[e],cliPath:e}}function Qs(e){if(e.explicitCliPath)return Xs(e.explicitCliPath)?Bl(e.explicitCliPath,e.nodeExecutable):null;let r=HC(new URL(".",e.importMetaUrl)),t=vt.join(r,"cli.js");if(Xs(t))return Bl(t,e.nodeExecutable);let n=vt.join(r,"cli.ts");return Xs(n)?Bl(n,e.nodeExecutable):null}var VC="X-Kynver-Job-Token",uo={agent_os_context_envelope:{name:"agent_os_context_envelope",description:"Fetch the context envelope for YOUR OWN task: goal/plan/task summaries, relevant memory, and recent session context. Optional memoryQuery focuses the memory portion.",inputSchema:{type:"object",properties:{memoryQuery:{type:"string",description:"Focus the memory portion of the envelope."},mode:{type:"string",description:"Envelope mode hint."}},additionalProperties:!1}},agent_os_search_memory:{name:"agent_os_search_memory",description:"Semantic search over the workspace's long-term memory. Returns a bounded top-N of relevant entries.",inputSchema:{type:"object",properties:{query:{type:"string",description:"What to search for."},k:{type:"integer",minimum:1,maximum:20,description:"How many entries to return."}},required:["query"],additionalProperties:!1}},agent_os_search_skills:{name:"agent_os_search_skills",description:"Search the workspace's skill library (bounded, metadata-only index). Use agent_os_get_skill to fetch one full skill by slug.",inputSchema:{type:"object",properties:{query:{type:"string"},limit:{type:"integer",minimum:1,maximum:25}},additionalProperties:!1}},agent_os_get_skill:{name:"agent_os_get_skill",description:"Fetch ONE full skill (including instructions) by slug.",inputSchema:{type:"object",properties:{slug:{type:"string"}},required:["slug"],additionalProperties:!1}},agent_os_progress_note:{name:"agent_os_progress_note",description:"Append a progress or blocker note to YOUR OWN task's journal. kind: 'progress' (default) or 'blocked'.",inputSchema:{type:"object",properties:{note:{type:"string"},kind:{type:"string",enum:["progress","blocked"]},eventKey:{type:"string"}},required:["note"],additionalProperties:!1}}};function GC(e){return`/api/agent-os/by-id/${encodeURIComponent(e.agentOsId)}/worker`}async function lo(e,r,t){let n=await e.fetchImpl(`${e.apiBaseUrl}${r}`,{method:t?.method??"GET",headers:{[VC]:e.token,...t?{"Content-Type":"application/json"}:{}},...t?{body:JSON.stringify(t.body)}:{}});if(!n.ok)throw new Error(`request failed (${n.status})`);return n.json()}function co(e){return typeof e=="string"&&e.trim()?e.trim():void 0}async function Zs(e,r,t){let n=GC(e);switch(r){case"agent_os_context_envelope":{let o=new URLSearchParams({task:e.taskId}),s=co(t.memoryQuery);s&&o.set("memoryQuery",s);let i=co(t.mode);return i&&o.set("mode",i),lo(e,`${n}/context-envelope?${o.toString()}`)}case"agent_os_search_memory":{let o=new URLSearchParams({q:String(t.query??"")});return typeof t.k=="number"&&o.set("k",String(t.k)),lo(e,`${n}/memory-search?${o.toString()}`)}case"agent_os_search_skills":{let o=new URLSearchParams,s=co(t.query);s&&o.set("q",s),typeof t.limit=="number"&&o.set("limit",String(t.limit));let i=o.toString();return lo(e,`${n}/skills${i?`?${i}`:""}`)}case"agent_os_get_skill":return lo(e,`${n}/skills/${encodeURIComponent(String(t.slug??""))}`);case"agent_os_progress_note":return lo(e,`${n}/progress-note`,{method:"POST",body:{note:String(t.note??""),...t.kind==="blocked"?{kind:"blocked"}:{},...co(t.eventKey)?{eventKey:co(t.eventKey)}:{}}})}}function sn(e){return so.includes(e)}function an(e){return io(e).filter(sn).map(r=>{let t=uo[r];return{type:"function",function:{name:t.name,description:t.description,parameters:t.inputSchema}}})}var bt="openai-compatible",zC=600*1e3;function Ul(e=process.env){return e.KYNVER_WORKER_MODEL?.trim()||void 0}var po=class extends Error{};function XC(e=process.env){let r=e.KYNVER_WORKER_BASE_URL?.trim();if(!r)throw new po(`the "openai-compatible" worker provider requires KYNVER_WORKER_BASE_URL on the daemon host \u2014 point it at any OpenAI-compatible chat-completions endpoint (e.g. http://localhost:11434/v1 for Ollama, http://localhost:8000/v1 for vLLM, or your gateway's /v1 URL). Set KYNVER_WORKER_API_KEY too when the endpoint requires auth.`);let t;try{t=new URL(r)}catch{throw new po(`KYNVER_WORKER_BASE_URL is not a valid URL: "${r}" \u2014 expected e.g. http://localhost:11434/v1`)}if(t.protocol!=="http:"&&t.protocol!=="https:")throw new po(`KYNVER_WORKER_BASE_URL must be http(s), got "${t.protocol}//" \u2014 e.g. http://localhost:11434/v1`);let n=Number(e.KYNVER_WORKER_TIMEOUT_MS??""),o=Number.isFinite(n)&&n>0?Math.floor(n):zC;return{baseUrl:r.replace(/\/+$/,""),...e.KYNVER_WORKER_API_KEY?.trim()?{apiKey:e.KYNVER_WORKER_API_KEY.trim()}:{},timeoutMs:o}}var QC="You are a Kynver harness worker executing one work unit end to end. Follow the task instructions exactly and produce the complete deliverable (analysis, answer, or unified diff as the task requires) in a single response. Be precise and complete \u2014 your response is recorded verbatim as the work unit's final result.";function mo(e,r,t,n){return{url:`${e.baseUrl}/chat/completions`,headers:{"content-type":"application/json",...e.apiKey?{authorization:`Bearer ${e.apiKey}`}:{}},body:{model:r,temperature:0,stream:!1,messages:[{role:"system",content:QC},{role:"user",content:t}],...n&&n.length?{tools:n,tool_choice:"auto"}:{}}}}function ZC(){let e=qC(new URL(".",import.meta.url)),r=import.meta.url.endsWith(".ts"),t=YC.join(e,r?"openai-compatible-runner.ts":"openai-compatible-runner.js"),n=Qs({importMetaUrl:import.meta.url,explicitCliPath:t,nodeExecutable:process.execPath});if(!n)throw new Error(`openai-compatible runner script not found at ${t} \u2014 is the @kynver-app/runtime install complete?`);return{command:n.command,argsPrefix:n.argsPrefix}}function eP(e,r,t){let n=e.workerToolGrant,o=n?an(n.capabilities):void 0;return{provider:bt,model:t,request:mo(r,t,e.prompt,o),timeoutMs:r.timeoutMs,heartbeatPath:e.heartbeatPath,endpointOrigin:new URL(r.baseUrl).origin,...n&&o&&o.length?{workerTools:n}:{}}}function fo(e,r,t){let n=ZC(),o=$f(e.stdoutPath,"a"),s=$f(e.stderrPath,"a"),i=["pipe",o,s],[a,l]=Pe(n.command,n.argsPrefix,e.workerDir),c=JC(a,l,ae({cwd:e.worktreePath,detached:ce(),shell:!1,stdio:i,env:Ke(process.env,{reviewWorker:e.reviewWorker})}));if(Hf(o),Hf(s),!c.pid)throw new Error(`failed to spawn ${r.provider} worker runner (node executable unavailable?)`);try{c.stdin?.on("error",()=>{}),c.stdin?.write(JSON.stringify(r)),c.stdin?.end()}catch(u){throw new Error(`failed to hand request config to ${r.provider} runner: ${u.message}`)}return c.unref(),{pid:c.pid,model:t}}var jf={name:bt,get defaultModel(){return Ul()},preflightModel(e){return tn(e,Ul())},start(e){let r=tn(e.model,Ul());if(!r.ok)throw new Error(`openai-compatible provider model preflight failed: ${r.note}`);let t=r.model,n=XC(process.env),o=eP(e,n,t);return fo(e,o,t)}};_r();import{closeSync as Jf,openSync as zf}from"node:fs";import{spawn as nP}from"node:child_process";O();br();import rP from"node:path";var tP=new Set(["gemini-2.5-pro","gemini-2.5-flash","auto","pro","flash","flash-lite"]);function ei(e=process.env){return e.KYNVER_GEMINI_BIN?.trim()||e.GEMINI_BIN?.trim()||"agy"}function ri(e){let r=rP.basename(e).toLowerCase().replace(/\.cmd$/i,"").replace(/\.exe$/i,"");return r==="agy"||r==="antigravity"?"antigravity":"gemini"}function Vf(e){return e.requested&&/-(?:high|medium|low)$/i.test(e.requested)?e.requested:e.model}function Gf(e){let r=e.trim().toLowerCase();return!r||tP.has(r)?[]:["--model",e.trim()]}function Yf(e,r){return[...Gf(r),"--output-format","stream-json",...e.executionMode==="read_only"?[]:["--dangerously-skip-permissions"],"--prompt",e.prompt]}function qf(e,r){return["--model",r,"--approval-mode",e.executionMode==="read_only"?"plan":"yolo","--output-format","stream-json","--skip-trust",...e.mcpConfigPath?["--allowed-mcp-server-names",oe]:[],"--prompt",e.prompt]}var pr="gemini";function Te(e=process.env){return e.KYNVER_GEMINI_DEFAULT_MODEL?.trim()||"gemini-2.5-pro"}function oP(e,r){return Ke({...process.env,CI:"1",NO_COLOR:"1",GEMINI_CLI_TRUST_WORKSPACE:"true",...r?{GEMINI_CLI_HOME:r}:{}},{reviewWorker:e})}var Xf={name:pr,get defaultModel(){return Te()},preflightModel(e){return nn(e,Te())},start(e){let r=nn(e.model,Te());if(!r.ok)throw new Error(`gemini provider model preflight failed: ${r.note}`);let t=ei(),n=ri(t),o=n==="antigravity"?Vf(r):r.model,s={...e,prompt:ur(e.prompt,e.workerDir).prompt},i=n==="antigravity"?Yf(s,o):qf(s,o),[a,l]=pe(t,i),c=zf(e.stdoutPath,"a"),u=zf(e.stderrPath,"a"),d=["ignore",c,u],[p,m]=Pe(a,l,e.workerDir),f=nP(p,m,ae({cwd:e.worktreePath,detached:ce(),shell:!1,stdio:d,env:oP(e.reviewWorker,n==="gemini"?e.geminiCliHome:void 0)}));if(Jf(c),Jf(u),!f.pid)throw new Error(`failed to spawn Google Antigravity worker (is \`${t}\` on PATH? install Google Antigravity and run \`agy\` once to sign in`+(n==="antigravity"?'; GEMINI_API_KEY is used only when ~/.gemini/antigravity-cli/settings.json sets "modelProvider": "gemini")':", or set GEMINI_API_KEY)"));return f.unref(),{pid:f.pid,model:o}}};var mr="gemini-api",Qf="https://generativelanguage.googleapis.com/v1beta/openai",sP=600*1e3,go=class extends Error{};function iP(e=process.env){return e.KYNVER_GEMINI_API_KEY?.trim()||e.GEMINI_API_KEY?.trim()||void 0}function aP(e=process.env){let r=iP(e);if(!r)throw new go('the "gemini-api" worker provider requires KYNVER_GEMINI_API_KEY or GEMINI_API_KEY on the daemon host \u2014 create a key at https://aistudio.google.com/apikey. To use Google Antigravity instead, set workerProvider / --provider gemini and run `agy` once to sign in.');let t=e.KYNVER_GEMINI_BASE_URL?.trim()||Qf,n;try{n=new URL(t)}catch{throw new go(`KYNVER_GEMINI_BASE_URL is not a valid URL: "${t}" \u2014 expected e.g. ${Qf}`)}if(n.protocol!=="http:"&&n.protocol!=="https:")throw new go(`KYNVER_GEMINI_BASE_URL must be http(s), got "${n.protocol}//"`);let o=Number(e.KYNVER_WORKER_TIMEOUT_MS??""),s=Number.isFinite(o)&&o>0?Math.floor(o):sP;return{baseUrl:t.replace(/\/+$/,""),apiKey:r,timeoutMs:s}}function lP(e,r,t){let n=e.workerToolGrant,o=n?an(n.capabilities):void 0,s=mo(r,t,e.prompt,o);return{provider:mr,model:t,request:s,timeoutMs:r.timeoutMs,heartbeatPath:e.heartbeatPath,endpointOrigin:new URL(r.baseUrl).origin,...n&&o&&o.length?{workerTools:n}:{}}}var Zf={name:mr,get defaultModel(){return Te()},preflightModel(e){return nn(e,Te())},start(e){let r=nn(e.model,Te());if(!r.ok)throw new Error(`gemini-api provider model preflight failed: ${r.note}`);let t=r.model,n=aP(process.env),o=lP(e,n,t);return fo(e,o,t)}};var tr="venice",Fl="https://api.venice.ai/api/v1",cP="venice-uncensored-1-2",uP="KYNVER_VENICE_API_KEY",dP="VENICE_API_KEY",pP="KYNVER_VENICE_BASE_URL",mP="KYNVER_VENICE_DEFAULT_MODEL";function eg(e=process.env){return e[uP]?.trim()||e[dP]?.trim()||void 0}function rg(e=process.env){return(e[pP]?.trim()||Fl).replace(/\/+$/,"")}function zr(e=process.env){return e[mP]?.trim()||cP}function tg(e){return{"content-type":"application/json",authorization:`Bearer ${e}`}}var fP=Be,js="composer-2.5";function be(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function gP(e){if(!e)return;let r=be(e,"workerModelOverride")||be(e,"modelOverride");return r||`${be(e,"title")}
89
89
  ${be(e,"description")}
90
- ${be(e,"executorRef")}`.match(/\[(?:worker-)?model:\s*([^\]\n]+)\]/i)?.[1]?.trim()||void 0}function ng(e){return e.toLowerCase()}function sg(e,r=U(),t=process.env){return e==="explicit:cli"||e==="explicit:spawn"?!0:e==="default:global"?!!(r.defaultModel?.trim()||t.KYNVER_DEFAULT_MODEL?.trim()):!1}function Hl(e=U()){let r=e.defaultModel?.trim();if(r)return r;let t=process.env.KYNVER_DEFAULT_MODEL?.trim();return t||fP}function ti(e){let r=(e??"").toLowerCase();return!r||r.includes("composer")||r.includes("cursor")||r.includes("codex")||r.startsWith("gpt-")||r.startsWith("gpt5")?"cursor":/^claude[-_]/i.test(r)||/^(?:opus|sonnet|haiku)\b/i.test(r)?"claude":r.startsWith("gemini-")?dr:"cursor"}function hP(e,r){let t=e.trim().toLowerCase(),n=r?.trim();return t==="cursor"?{model:$s,provider:"cursor",rule:n&&n!=="cursor"?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:t==="claude"||t==="anthropic"?{model:Be,provider:"claude",rule:n&&n!=="claude"?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:t==="gemini"||t==="google"?{model:Te(),provider:dr,rule:n&&n!==dr?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:t==="gemini-api"||t==="gemini_api"||t==="google-api"?{model:Te(),provider:pr,rule:n&&n!==pr?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:t==="venice"||t==="venice-ai"||t==="venice_ai"?{model:Jr(),provider:tr,rule:n&&n!==tr?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:null}function og(e,r){return!!(e.includes("deep")&&e.includes("review")||e.includes("security")||e.includes("plan_author")||e.includes("plan-author")||r.includes("deep review")||r.includes("security review")||e.includes("plan")&&!e.includes("review")&&(e.includes("author")||e.includes("strategy")))}var kP=new Set(["report_reviewer","deep_reviewer","plan_reviewer"]);function ig(e,r,t){return kP.has(e)?pt:r.includes("review")||/^review[\s:]/.test(t)||t.includes("critique")?pt:Be}function yP(e){let r=ng(be(e,"executorRef")),t=be(e,"title").toLowerCase(),n=be(e,"priority")||"normal",o=ng(be(e,"roleLane"));if(r.includes("provider:claude")||r.startsWith("claude:")){let i=ig(o,r,t);return{provider:"claude",model:i,rule:i===pt?"factory:claude_review":"factory:claude_implementation"}}if(r.includes("provider:codex")||r.startsWith("codex:"))return{provider:"codex",model:Tr,rule:"lane:codex_orchestration"};if(r.includes("provider:chatgpt")||r.startsWith("chatgpt:")||r.includes("provider:gpt")||r.startsWith("gpt:")){let i=Oe(be(e,"executorRef"));return{provider:"codex",...i?.model?{model:i.model}:{model:Tr},rule:"lane:codex_orchestration"}}if(r.includes("provider:openai")||r.startsWith("openai-compatible:")){let i=Oe(be(e,"executorRef"));return{provider:vt,...i?.model?{model:i.model}:{},rule:"lane:openai_compatible"}}if(r.includes("provider:venice")||r.startsWith("venice:")){let i=Oe(be(e,"executorRef"));return{provider:tr,...i?.model?{model:i.model}:{model:Jr()},rule:"lane:venice"}}if(r.includes("provider:gemini-api")||r.startsWith("gemini-api:")){let i=Oe(be(e,"executorRef"));return{provider:pr,...i?.model?{model:i.model}:{model:Te()},rule:"lane:gemini_api"}}if(r.includes("provider:gemini")||r.startsWith("gemini:")){let i=Oe(be(e,"executorRef"));return{provider:dr,...i?.model?{model:i.model}:{model:Te()},rule:"lane:gemini"}}if(r.includes("cursor")||r.includes("composer")||r.includes("copilot")||o==="implementer"||o==="repair_implementer")return{provider:"cursor",rule:"lane:implementation"};if(r.includes("codex"))return{provider:"codex",model:Tr,rule:"lane:codex_orchestration"};if(r.includes("landing")||t.startsWith("land:")||t.includes(" merge"))return{provider:"cursor",rule:"lane:landing"};if(r.includes("review")||/^review[\s:]/.test(t)||o.includes("review"))return og(r,t)||o==="deep_reviewer"?{provider:"cursor",rule:"lane:deep_review"}:{provider:"cursor",rule:"lane:review"};if(og(r,t)||o==="plan_author")return{provider:"cursor",rule:"lane:planning"};if(n==="critical")return{provider:"cursor",rule:"priority:critical"};if(n==="high")return{provider:"cursor",rule:"priority:high"};if(n==="low")return{provider:"cursor",rule:"priority:low"};let s=Hl();return{model:s,provider:ti(s),rule:"default:global"}}function RP(e){return e?Oe(be(e,"executorRef")):null}function vP(e){switch(lr(e)){case dr:case pr:return Te();case tr:return Jr();case"claude":return Be;case"codex":return Tr;case"cursor":return $s;default:return}}var Kl="explicit:cli_provider",ag="config:worker_provider";function lg(e,r,t){let n=lr(r);return n===e.provider&&e.rule===t?e:{...e,provider:n,model:vP(n)??e.model,rule:t}}function bP(e,r){let t=r?.trim();return!t||e.rule.startsWith("explicit:")&&e.rule!==Kl?e:lg(e,t,Kl)}function SP(e,r){if(r.explicitProvider?.trim()||yl(r.task))return e;let t=r.configuredProvider?.trim();if(!t)return e;let n=lr(t);return n===Or||n===e.provider?e:lg(e,n,ag)}function ni(e){let r,t=RP(e.task),n=e.explicitModel?.trim()?void 0:t?.model?.trim(),o=!e.explicitProvider?.trim()&&t?.provider?.trim()?t.provider.trim():void 0;if(e.explicitModel?.trim()){let l=e.explicitModel.trim(),c=hP(l,e.explicitProvider);c?r=c:r={model:l,provider:e.explicitProvider?.trim()||ti(l),rule:"explicit:cli",requestedModel:l}}else if(n)r={model:n,provider:o||ti(n),rule:t?.rule??"executor_ref:model",requestedModel:n};else if(e.task&&Hs(e.task)){let l=gP(e.task),c,u;if(l)c=l,u="task:provider_override";else{let d=typeof e.task.roleLane=="string"?e.task.roleLane.toLowerCase():"",p=typeof e.task.executorRef=="string"?e.task.executorRef.toLowerCase():"",m=typeof e.task.title=="string"?e.task.title.toLowerCase():"";c=ig(d,p,m),u=c===pt?"factory:claude_review":"factory:claude_implementation"}r={model:c,provider:"claude",rule:u,requestedModel:c}}else if(e.task&&Object.keys(e.task).length>0){let l=yP(e.task);r={...l,requestedModel:l.model}}else{let l=Hl();r={model:l,provider:e.explicitProvider?.trim()||ti(l),rule:"default:global",requestedModel:l}}r=bP(r,e.explicitProvider),r=SP(r,{explicitProvider:e.explicitProvider,task:e.task,configuredProvider:e.configuredProvider});let s=!!e.configuredProvider?.trim()&&lr(e.configuredProvider)!==Or&&r.rule==="config:worker_provider",i=nf({routing:r,task:e.task,explicitProvider:e.explicitProvider??(s?r.provider:void 0),explicitProviderIsOperatorOverride:!!e.explicitProviderIsOperatorOverride||s});if(!e.task||Object.keys(e.task).length===0||i.rule==="explicit:model_provider_alias"||i.rule==="explicit:model_provider_alias_overrode_provider"||i.rule==="explicit:cli"||i.rule===Kl||i.rule===ag||Ir(i.provider)&&(e.explicitProviderIsOperatorOverride||Hs(e.task))||i.provider===vt||i.provider===dr||i.provider===pr||i.provider===tr||i.provider==="codex")return i;let a=_f({task:e.task,explicitProvider:e.explicitProvider??i.provider,explicitModel:i.model,inventory:e.orchestrationInventory??void 0});return{provider:a.provider,model:a.provider==="codex"?a.model??i.model??Tr:i.model,rule:a.rule,requestedModel:i.requestedModel,orchestrationAudit:a.audit}}function cg(e,r,t){return e||r||t||Hl()||Be}function wP(e){let r=e?.executorRef;return typeof r=="string"?r.trim():""}function ug(e){return e?.trim()||void 0}function dg(e){let r=wP(e.task),t=Oe(r),n=e.explicitProvider?.trim().toLowerCase(),o=ug(e.explicitModel??void 0),s=n||t?.provider,i=o||t?.model,a=n||o?"cli":t?.rule??"none";if(!s&&!i)return{ok:!0};!s&&i&&(/^claude[-_]/i.test(i)||/^(?:opus|sonnet|haiku)\b/i.test(i))&&(s="claude");let l=e.routing.provider,c=ug(e.routing.model),u={provider:l,model:c,rule:e.routing.rule};return s&&s!=="cursor"||r&&tf(r)||n&&n!=="cursor"?l==="cursor"?{ok:!1,error:`model_routing_mismatch: requested ${s??"non-cursor"}${i?` model=${i}`:""} (${a}) but routing resolved to cursor (${e.routing.rule})`,requested:{provider:s,model:i,source:a},resolved:u}:i&&c&&i!==c&&!Ir(l)?{ok:!1,error:`model_routing_mismatch: requested model=${i} (${a}) but routing resolved model=${c} (${e.routing.rule})`,requested:{provider:s,model:i,source:a},resolved:u}:{ok:!0,requested:{provider:s,model:i,source:a},resolved:u}:{ok:!0,resolved:u}}function pg(e,r){let t=Number(e);return!Number.isFinite(t)||t<=0?r:Math.floor(t)}function mg(){return{maxTaskAttempts:pg(process.env.KYNVER_MAX_TASK_ATTEMPTS,Math.floor(ia("harness.maxTaskAttempts",4))),dispatchCooldownMs:pg(process.env.KYNVER_DISPATCH_COOLDOWN_MS,Math.floor(ia("harness.dispatchCooldownMs",5e3)))}}H();import EP from"node:path";B();fe();O();var $l="kynver-harness:",fg="@runner:";function jl(e){return e?.trim()?e.trim():null}function xP(e){let r=jl(e);if(!r?.startsWith($l))return null;let t=r.slice($l.length),n=t.indexOf(fg);return n>=0?t.slice(0,n).trim()||null:t.trim()||null}function go(e,r){let t=e.trim(),n=r.trim();return`${$l}${t}${fg}${n}`}function _P(e,r){let t=jl(r);return t?xP(e)===t:!1}function oi(e){let r=jl(e.workerLeaseOwner);return r&&_P(r,e.runId)?r:go(e.runId,e.runnerId)}H();import gg from"node:os";Le();function Nr(e){return e?.trim()?e.trim():null}function He(e={}){let r=e.env??process.env,t=U();return{runnerId:Nr(t.runnerId)??Nr(r.KYNVER_RUNTIME_ID)??Nr(r.OPENCLAW_RUNTIME_ID)??Nr(r.HOSTNAME)??gg.hostname(),hostname:Nr(r.HOSTNAME)??gg.hostname(),profile:Nr(r.KYNVER_RUNNER_PROFILE)??Nr(r.OPENCLAW_RUNNER_PROFILE),harnessRepo:Nr(r.KYNVER_HARNESS_REPO)??Nr(r.KYNVER_DEFAULT_REPO),runId:e.runId??null,instructionBundleVersion:Zu()}}H();async function si(e){let r=new Map,t=e.agentOsId?.trim();if(!t||e.taskIds.length===0)return r;let n=Q(e.baseUrl);try{let o=await ee(e.secret,t,{baseUrl:n}),s=`${n}/api/agent-os/by-id/${encodeURIComponent(t)}/harness/monitor/task-leases`,i=await X(s,o,{taskIds:[...new Set(e.taskIds)]},{agentOsId:t,baseUrl:n});if(!i.ok||!i.response||typeof i.response!="object")return r;let a=i.response.tasks;if(!Array.isArray(a))return r;for(let l of a)l?.taskId&&r.set(l.taskId,l)}catch{}return r}B();async function ii(e){let r=e.worker.leaseOwner?.trim()??null,t=e.worker.leaseToken?.trim()??null;if(t)return{leaseOwner:r,leaseToken:t};let n=e.worker.taskId?.trim();if(!n)return{leaseOwner:r,leaseToken:null};let s=(await si({agentOsId:e.agentOsId,taskIds:[n],baseUrl:e.baseUrl,secret:e.secret})).get(n),i=s?.leaseOwner?.trim()??null,a=s?.leaseToken?.trim()??null;if(!a)return{leaseOwner:r??i,leaseToken:null};let l=r??i;return(!e.worker.leaseToken||e.worker.leaseToken!==a)&&L(e.worker.runId,{...e.worker,...l?{leaseOwner:l}:{},leaseToken:a}),{leaseOwner:l,leaseToken:a}}function hg(e,r){return I(EP.join(N(e),"workers",x(r),"worker.json"),void 0)}async function kg(e,r){let t=q(e),n=String(r.agentOsId||"");if(!n)return{renewed:[],failed:[],skipped:[]};let o=Q(r.baseUrl?String(r.baseUrl):void 0),s=await ee(r.secret?String(r.secret):void 0,n,{baseUrl:o}),i=Number(r.leaseMs)>0?Math.floor(Number(r.leaseMs)):Vl,a=He({runId:e}).runnerId,l=[],c=[],u=[];for(let d of Object.keys(t.workers||{})){let p=hg(e,d);if(!p?.taskId||!p.agentOsId){u.push(d);continue}if(!Y(p.pid)){u.push(d);continue}if(J(p).status==="done"){u.push(d);continue}let f=oi({runId:e,workerLeaseOwner:p.leaseOwner??null,runnerId:a}),y=await ii({worker:p,agentOsId:n,baseUrl:o,secret:s}),k=`${o}/api/agent-os/by-id/${encodeURIComponent(n)}/tasks/${encodeURIComponent(p.taskId)}/renew-lease`,b=await X(k,s,{leaseOwner:y.leaseOwner??f,leaseDurationMs:i,...y.leaseToken?{leaseToken:y.leaseToken}:{}},{agentOsId:n,baseUrl:o});if(b.ok){l.push(d);continue}let g=b.response&&typeof b.response=="object"&&"reason"in b.response?String(b.response.reason??`http ${b.status}`):`http ${b.status}`;c.push({worker:d,reason:g})}return{renewed:l,failed:c,skipped:u}}function yg(e,r){let t=q(e);for(let n of Object.keys(t.workers||{})){let o=hg(e,n);if(!(!o||o.taskId!==r||!Y(o.pid)||J(o).status==="done"))return!0}return!1}import{existsSync as iT,mkdirSync as aT}from"node:fs";import fn from"node:path";B();O();import CP from"node:path";function Rg(e){return typeof e?.noRestartAt=="string"&&e.noRestartAt.trim().length>0}function vg(e,r,t,n){return Rg(r)||(r.noRestartAt=new Date().toISOString(),r.noRestartSource=t,n&&(r.noRestartReason=n),r.steerRestartRequired=!1,L(e,r)),r}function ai(e,r={}){let t=r.isAlive??Y,n=r.kill??Me,o=r.sleep??zo;return!e||!t(e)?null:(n(e,"SIGTERM"),o(1e3),t(e)?(n(e,"SIGKILL"),"SIGKILL"):"SIGTERM")}function Gl(e,r,t,n,o={}){vg(e,r,t,n);let s=ai(r.pid,o),i=ai(r.completionSidecarPid,o);return{workerSignal:s,sidecarSignal:i}}function bg(e,r,t={}){let n=t.isAlive??Y,o=q(e),s=[];for(let i of Object.keys(o.workers||{})){if(t.except&&i===t.except)continue;let a=I(CP.join(N(o.id),"workers",x(i),"worker.json"),void 0);!a||a.taskId!==r||n(a.pid)||!a.completionSidecarPid||!n(a.completionSidecarPid)||(ai(a.completionSidecarPid,t),a.completionSidecarPid=void 0,a.watcherClearedForRelaunchAt=new Date().toISOString(),L(o.id,a),s.push(i))}return s}function PP(e=process.env){let r=String(e.KYNVER_ALLOW_UNWATCHED_WORKER??"").trim().toLowerCase();return r==="1"||r==="true"||r==="yes"}function Sg(e,r,t,n={}){if(!PP(n.env))throw Gl(e,r,"watcher_attach_failed",t,n.deps),r.status="failed",L(e,r),new Error(`watcher_attach_failed: ${t}; worker stopped instead of running unwatched`)}Aa();de();B();B();var wg="unknown";function xg(e){let r=e.baseCommit?.trim()??"",t=[];r&&r!==wg&&t.push({ref:r,source:"baseCommit"});let n=e.base?.trim()??"";n&&n!==wg&&t.push({ref:n,source:"base"}),t.push({ref:"origin/main",source:"origin/main"}),t.push({ref:"origin/HEAD",source:"origin/HEAD"});let o=new Set;for(let s of t)if(!o.has(s.ref)&&(o.add(s.ref),e.verifyRef(s.ref)))return{ref:s.ref,repaired:s.source!=="baseCommit",source:s.source};throw new Error(`worktree base ref unresolvable: baseCommit=${r||"<empty>"} base=${n||"<empty>"} \u2014 origin/main and origin/HEAD also failed verification`)}var AP=/<!--\s*harness-contract:\s*(\{[\s\S]*?\})\s*-->/i,IP="next-action-fix:";function li(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function _g(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`https://github.com/${r[1]}/pull/${r[2]}`:li(e)}function OP(e){let r=(e.title??"").trim().toLowerCase();if(r.startsWith("fix:")||r.startsWith("repair:"))return!0;let t=(e.executorRef??"").toLowerCase();return!!(t.startsWith(IP)||t.includes("repair")||t.includes("unblock"))}function TP(e){let r={repairEnforceOriginalPr:!1,targetPrUrl:null,targetPrBranch:null};if(!e)return r;let t=e.match(AP);if(!t?.[1])return r;try{let n=JSON.parse(t[1]),o=li(String(n.targetPrUrl??n.target_pr_url??"")),s=li(String(n.targetPrBranch??n.target_pr_branch??""));return{repairEnforceOriginalPr:n.repairEnforceOriginalPr===!0||n.repair_enforce_original_pr===!0||!!o,targetPrUrl:o?_g(o):null,targetPrBranch:s}}catch{return r}}function Eg(e){if(!OP(e))return null;let r=TP(e.description),t=e.prUrl?_g(e.prUrl):null,n=r.targetPrUrl??t;return n?{targetPrUrl:n,targetPrBranch:r.targetPrBranch??li(e.branch)}:null}function Cg(e){return["Repair target PR policy:","- Work on the existing target PR branch \u2014 do not open a duplicate repair PR by default.",`- Canonical target PR: ${e.targetPrUrl}`,...e.targetPrBranch?[`- Canonical target branch: \`${e.targetPrBranch}\` (checkout is already on this branch).`]:[],`- Reconcile ${e.targetPrUrl} in structured finalResult.targetPrReconciliation.`,"- Only supersede the original when the branch is inaccessible: set supersedesOriginalTargetPr: true with reason and close/comment on the original PR."]}function Pg(e){let r=e.ownedPaths.length?`Owned paths: ${e.ownedPaths.join(", ")}. Do not edit outside these paths without stopping and reporting why.`:"Owned paths: unrestricted for this worker, but keep edits tightly scoped.",t=!!e.model?.toLowerCase().includes("haiku"),n=t?"compact":"full",o=t?e.planId?`Active planId: ${e.planId}`:"No planId on this worker.":e.planId?`Active planId: ${e.planId}${e.taskId?` \xB7 taskId: ${e.taskId}`:""}`:"No planId on this worker \u2014 still emit progress when you touch plan-scoped work.",s=[...En(`worker.prompt.progress.${n}`).split(`
91
- `),o],i=En(`worker.prompt.merge_gate.${n}`).split(`
92
- `),a=En(`worker.prompt.plan_artifacts.${n}`).split(`
93
- `);return["You are running under the Kynver AgentOS runtime.","Immediately state your plan before editing.",r,`Worktree: ${e.worktreePath}`,`Progress heartbeat file: ${e.heartbeatPath}`,"After each major step, append one JSON line to the heartbeat file with fields: ts, phase, summary, changedFiles, blocker.","Before exiting, append a terminal heartbeat with phase `complete` and a structured finalResult object; if you cannot complete, append blocker plus the recovery next action instead of exiting silently.","Final response must include files changed, verification commands, and unresolved risks.","Also include a JSON code block containing the structured finalResult object itself (not a wrapper): summary, verification (actual commands and observed results), scope, risks, and changedFiles. This is required even if the heartbeat path is read-only or a terminal heartbeat cannot be written. Never invent verification evidence; disclose unverified surfaces and blockers.",...En("worker.prompt.core_rules").split(`
90
+ ${be(e,"executorRef")}`.match(/\[(?:worker-)?model:\s*([^\]\n]+)\]/i)?.[1]?.trim()||void 0}function ng(e){return e.toLowerCase()}function sg(e,r=U(),t=process.env){return e==="explicit:cli"||e==="explicit:spawn"?!0:e==="default:global"?!!(r.defaultModel?.trim()||t.KYNVER_DEFAULT_MODEL?.trim()):!1}function Hl(e=U()){let r=e.defaultModel?.trim();if(r)return r;let t=process.env.KYNVER_DEFAULT_MODEL?.trim();return t||fP}function ti(e){let r=(e??"").toLowerCase();return!r||r.includes("composer")||r.includes("cursor")||r.includes("codex")||r.startsWith("gpt-")||r.startsWith("gpt5")?"cursor":/^claude[-_]/i.test(r)||/^(?:opus|sonnet|haiku)\b/i.test(r)?"claude":r.startsWith("gemini-")?pr:"cursor"}function hP(e,r){let t=e.trim().toLowerCase(),n=r?.trim();return t==="cursor"?{model:js,provider:"cursor",rule:n&&n!=="cursor"?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:t==="claude"||t==="anthropic"?{model:Be,provider:"claude",rule:n&&n!=="claude"?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:t==="gemini"||t==="google"?{model:Te(),provider:pr,rule:n&&n!==pr?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:t==="gemini-api"||t==="gemini_api"||t==="google-api"?{model:Te(),provider:mr,rule:n&&n!==mr?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:t==="venice"||t==="venice-ai"||t==="venice_ai"?{model:zr(),provider:tr,rule:n&&n!==tr?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:null}function og(e,r){return!!(e.includes("deep")&&e.includes("review")||e.includes("security")||e.includes("plan_author")||e.includes("plan-author")||r.includes("deep review")||r.includes("security review")||e.includes("plan")&&!e.includes("review")&&(e.includes("author")||e.includes("strategy")))}var kP=new Set(["report_reviewer","deep_reviewer","plan_reviewer"]);function ig(e,r,t){return kP.has(e)?mt:r.includes("review")||/^review[\s:]/.test(t)||t.includes("critique")?mt:Be}function yP(e){let r=ng(be(e,"executorRef")),t=be(e,"title").toLowerCase(),n=be(e,"priority")||"normal",o=ng(be(e,"roleLane"));if(r.includes("provider:claude")||r.startsWith("claude:")){let i=ig(o,r,t);return{provider:"claude",model:i,rule:i===mt?"factory:claude_review":"factory:claude_implementation"}}if(r.includes("provider:codex")||r.startsWith("codex:"))return{provider:"codex",model:Nr,rule:"lane:codex_orchestration"};if(r.includes("provider:chatgpt")||r.startsWith("chatgpt:")||r.includes("provider:gpt")||r.startsWith("gpt:")){let i=Oe(be(e,"executorRef"));return{provider:"codex",...i?.model?{model:i.model}:{model:Nr},rule:"lane:codex_orchestration"}}if(r.includes("provider:openai")||r.startsWith("openai-compatible:")){let i=Oe(be(e,"executorRef"));return{provider:bt,...i?.model?{model:i.model}:{},rule:"lane:openai_compatible"}}if(r.includes("provider:venice")||r.startsWith("venice:")){let i=Oe(be(e,"executorRef"));return{provider:tr,...i?.model?{model:i.model}:{model:zr()},rule:"lane:venice"}}if(r.includes("provider:gemini-api")||r.startsWith("gemini-api:")){let i=Oe(be(e,"executorRef"));return{provider:mr,...i?.model?{model:i.model}:{model:Te()},rule:"lane:gemini_api"}}if(r.includes("provider:gemini")||r.startsWith("gemini:")){let i=Oe(be(e,"executorRef"));return{provider:pr,...i?.model?{model:i.model}:{model:Te()},rule:"lane:gemini"}}if(r.includes("cursor")||r.includes("composer")||r.includes("copilot")||o==="implementer"||o==="repair_implementer")return{provider:"cursor",rule:"lane:implementation"};if(r.includes("codex"))return{provider:"codex",model:Nr,rule:"lane:codex_orchestration"};if(r.includes("landing")||t.startsWith("land:")||t.includes(" merge"))return{provider:"cursor",rule:"lane:landing"};if(r.includes("review")||/^review[\s:]/.test(t)||o.includes("review"))return og(r,t)||o==="deep_reviewer"?{provider:"cursor",rule:"lane:deep_review"}:{provider:"cursor",rule:"lane:review"};if(og(r,t)||o==="plan_author")return{provider:"cursor",rule:"lane:planning"};if(n==="critical")return{provider:"cursor",rule:"priority:critical"};if(n==="high")return{provider:"cursor",rule:"priority:high"};if(n==="low")return{provider:"cursor",rule:"priority:low"};let s=Hl();return{model:s,provider:ti(s),rule:"default:global"}}function RP(e){return e?Oe(be(e,"executorRef")):null}function vP(e){switch(lr(e)){case pr:case mr:return Te();case tr:return zr();case"claude":return Be;case"codex":return Nr;case"cursor":return js;default:return}}var Kl="explicit:cli_provider",ag="config:worker_provider";function lg(e,r,t){let n=lr(r);return n===e.provider&&e.rule===t?e:{...e,provider:n,model:vP(n)??e.model,rule:t}}function bP(e,r){let t=r?.trim();return!t||e.rule.startsWith("explicit:")&&e.rule!==Kl?e:lg(e,t,Kl)}function SP(e,r){if(r.explicitProvider?.trim()||yl(r.task))return e;let t=r.configuredProvider?.trim();if(!t)return e;let n=lr(t);return n===Tr||n===e.provider?e:lg(e,n,ag)}function ni(e){let r,t=RP(e.task),n=e.explicitModel?.trim()?void 0:t?.model?.trim(),o=!e.explicitProvider?.trim()&&t?.provider?.trim()?t.provider.trim():void 0;if(e.explicitModel?.trim()){let l=e.explicitModel.trim(),c=hP(l,e.explicitProvider);c?r=c:r={model:l,provider:e.explicitProvider?.trim()||ti(l),rule:"explicit:cli",requestedModel:l}}else if(n)r={model:n,provider:o||ti(n),rule:t?.rule??"executor_ref:model",requestedModel:n};else if(e.task&&$s(e.task)){let l=gP(e.task),c,u;if(l)c=l,u="task:provider_override";else{let d=typeof e.task.roleLane=="string"?e.task.roleLane.toLowerCase():"",p=typeof e.task.executorRef=="string"?e.task.executorRef.toLowerCase():"",m=typeof e.task.title=="string"?e.task.title.toLowerCase():"";c=ig(d,p,m),u=c===mt?"factory:claude_review":"factory:claude_implementation"}r={model:c,provider:"claude",rule:u,requestedModel:c}}else if(e.task&&Object.keys(e.task).length>0){let l=yP(e.task);r={...l,requestedModel:l.model}}else{let l=Hl();r={model:l,provider:e.explicitProvider?.trim()||ti(l),rule:"default:global",requestedModel:l}}r=bP(r,e.explicitProvider),r=SP(r,{explicitProvider:e.explicitProvider,task:e.task,configuredProvider:e.configuredProvider});let s=!!e.configuredProvider?.trim()&&lr(e.configuredProvider)!==Tr&&r.rule==="config:worker_provider",i=nf({routing:r,task:e.task,explicitProvider:e.explicitProvider??(s?r.provider:void 0),explicitProviderIsOperatorOverride:!!e.explicitProviderIsOperatorOverride||s});if(!e.task||Object.keys(e.task).length===0||i.rule==="explicit:model_provider_alias"||i.rule==="explicit:model_provider_alias_overrode_provider"||i.rule==="explicit:cli"||i.rule===Kl||i.rule===ag||Or(i.provider)&&(e.explicitProviderIsOperatorOverride||$s(e.task))||i.provider===bt||i.provider===pr||i.provider===mr||i.provider===tr||i.provider==="codex")return i;let a=_f({task:e.task,explicitProvider:e.explicitProvider??i.provider,explicitModel:i.model,inventory:e.orchestrationInventory??void 0});return{provider:a.provider,model:a.provider==="codex"?a.model??i.model??Nr:i.model,rule:a.rule,requestedModel:i.requestedModel,orchestrationAudit:a.audit}}function cg(e,r,t){return e||r||t||Hl()||Be}function wP(e){let r=e?.executorRef;return typeof r=="string"?r.trim():""}function ug(e){return e?.trim()||void 0}function dg(e){let r=wP(e.task),t=Oe(r),n=e.explicitProvider?.trim().toLowerCase(),o=ug(e.explicitModel??void 0),s=n||t?.provider,i=o||t?.model,a=n||o?"cli":t?.rule??"none";if(!s&&!i)return{ok:!0};!s&&i&&(/^claude[-_]/i.test(i)||/^(?:opus|sonnet|haiku)\b/i.test(i))&&(s="claude");let l=e.routing.provider,c=ug(e.routing.model),u={provider:l,model:c,rule:e.routing.rule};return s&&s!=="cursor"||r&&tf(r)||n&&n!=="cursor"?l==="cursor"?{ok:!1,error:`model_routing_mismatch: requested ${s??"non-cursor"}${i?` model=${i}`:""} (${a}) but routing resolved to cursor (${e.routing.rule})`,requested:{provider:s,model:i,source:a},resolved:u}:i&&c&&i!==c&&!Or(l)?{ok:!1,error:`model_routing_mismatch: requested model=${i} (${a}) but routing resolved model=${c} (${e.routing.rule})`,requested:{provider:s,model:i,source:a},resolved:u}:{ok:!0,requested:{provider:s,model:i,source:a},resolved:u}:{ok:!0,resolved:u}}function pg(e,r){let t=Number(e);return!Number.isFinite(t)||t<=0?r:Math.floor(t)}function mg(){return{maxTaskAttempts:pg(process.env.KYNVER_MAX_TASK_ATTEMPTS,Math.floor(ia("harness.maxTaskAttempts",4))),dispatchCooldownMs:pg(process.env.KYNVER_DISPATCH_COOLDOWN_MS,Math.floor(ia("harness.dispatchCooldownMs",5e3)))}}H();import EP from"node:path";B();fe();O();var $l="kynver-harness:",fg="@runner:";function jl(e){return e?.trim()?e.trim():null}function xP(e){let r=jl(e);if(!r?.startsWith($l))return null;let t=r.slice($l.length),n=t.indexOf(fg);return n>=0?t.slice(0,n).trim()||null:t.trim()||null}function ho(e,r){let t=e.trim(),n=r.trim();return`${$l}${t}${fg}${n}`}function _P(e,r){let t=jl(r);return t?xP(e)===t:!1}function oi(e){let r=jl(e.workerLeaseOwner);return r&&_P(r,e.runId)?r:ho(e.runId,e.runnerId)}H();import gg from"node:os";Le();function Dr(e){return e?.trim()?e.trim():null}function He(e={}){let r=e.env??process.env,t=U();return{runnerId:Dr(t.runnerId)??Dr(r.KYNVER_RUNTIME_ID)??Dr(r.OPENCLAW_RUNTIME_ID)??Dr(r.HOSTNAME)??gg.hostname(),hostname:Dr(r.HOSTNAME)??gg.hostname(),profile:Dr(r.KYNVER_RUNNER_PROFILE)??Dr(r.OPENCLAW_RUNNER_PROFILE),harnessRepo:Dr(r.KYNVER_HARNESS_REPO)??Dr(r.KYNVER_DEFAULT_REPO),runId:e.runId??null,instructionBundleVersion:Zu()}}H();async function si(e){let r=new Map,t=e.agentOsId?.trim();if(!t||e.taskIds.length===0)return r;let n=Q(e.baseUrl);try{let o=await ee(e.secret,t,{baseUrl:n}),s=`${n}/api/agent-os/by-id/${encodeURIComponent(t)}/harness/monitor/task-leases`,i=await X(s,o,{taskIds:[...new Set(e.taskIds)]},{agentOsId:t,baseUrl:n});if(!i.ok||!i.response||typeof i.response!="object")return r;let a=i.response.tasks;if(!Array.isArray(a))return r;for(let l of a)l?.taskId&&r.set(l.taskId,l)}catch{}return r}B();async function ii(e){let r=e.worker.leaseOwner?.trim()??null,t=e.worker.leaseToken?.trim()??null;if(t)return{leaseOwner:r,leaseToken:t};let n=e.worker.taskId?.trim();if(!n)return{leaseOwner:r,leaseToken:null};let s=(await si({agentOsId:e.agentOsId,taskIds:[n],baseUrl:e.baseUrl,secret:e.secret})).get(n),i=s?.leaseOwner?.trim()??null,a=s?.leaseToken?.trim()??null;if(!a)return{leaseOwner:r??i,leaseToken:null};let l=r??i;return(!e.worker.leaseToken||e.worker.leaseToken!==a)&&L(e.worker.runId,{...e.worker,...l?{leaseOwner:l}:{},leaseToken:a}),{leaseOwner:l,leaseToken:a}}function hg(e,r){return I(EP.join(N(e),"workers",x(r),"worker.json"),void 0)}async function kg(e,r){let t=q(e),n=String(r.agentOsId||"");if(!n)return{renewed:[],failed:[],skipped:[]};let o=Q(r.baseUrl?String(r.baseUrl):void 0),s=await ee(r.secret?String(r.secret):void 0,n,{baseUrl:o}),i=Number(r.leaseMs)>0?Math.floor(Number(r.leaseMs)):Vl,a=He({runId:e}).runnerId,l=[],c=[],u=[];for(let d of Object.keys(t.workers||{})){let p=hg(e,d);if(!p?.taskId||!p.agentOsId){u.push(d);continue}if(!Y(p.pid)){u.push(d);continue}if(J(p).status==="done"){u.push(d);continue}let f=oi({runId:e,workerLeaseOwner:p.leaseOwner??null,runnerId:a}),y=await ii({worker:p,agentOsId:n,baseUrl:o,secret:s}),k=`${o}/api/agent-os/by-id/${encodeURIComponent(n)}/tasks/${encodeURIComponent(p.taskId)}/renew-lease`,b=await X(k,s,{leaseOwner:y.leaseOwner??f,leaseDurationMs:i,...y.leaseToken?{leaseToken:y.leaseToken}:{}},{agentOsId:n,baseUrl:o});if(b.ok){l.push(d);continue}let g=b.response&&typeof b.response=="object"&&"reason"in b.response?String(b.response.reason??`http ${b.status}`):`http ${b.status}`;c.push({worker:d,reason:g})}return{renewed:l,failed:c,skipped:u}}function yg(e,r){let t=q(e);for(let n of Object.keys(t.workers||{})){let o=hg(e,n);if(!(!o||o.taskId!==r||!Y(o.pid)||J(o).status==="done"))return!0}return!1}import{existsSync as iT,mkdirSync as aT}from"node:fs";import gn from"node:path";B();O();import CP from"node:path";function Rg(e){return typeof e?.noRestartAt=="string"&&e.noRestartAt.trim().length>0}function vg(e,r,t,n){return Rg(r)||(r.noRestartAt=new Date().toISOString(),r.noRestartSource=t,n&&(r.noRestartReason=n),r.steerRestartRequired=!1,L(e,r)),r}function ai(e,r={}){let t=r.isAlive??Y,n=r.kill??Me,o=r.sleep??Xo;return!e||!t(e)?null:(n(e,"SIGTERM"),o(1e3),t(e)?(n(e,"SIGKILL"),"SIGKILL"):"SIGTERM")}function Gl(e,r,t,n,o={}){vg(e,r,t,n);let s=ai(r.pid,o),i=ai(r.completionSidecarPid,o);return{workerSignal:s,sidecarSignal:i}}function bg(e,r,t={}){let n=t.isAlive??Y,o=q(e),s=[];for(let i of Object.keys(o.workers||{})){if(t.except&&i===t.except)continue;let a=I(CP.join(N(o.id),"workers",x(i),"worker.json"),void 0);!a||a.taskId!==r||n(a.pid)||!a.completionSidecarPid||!n(a.completionSidecarPid)||(ai(a.completionSidecarPid,t),a.completionSidecarPid=void 0,a.watcherClearedForRelaunchAt=new Date().toISOString(),L(o.id,a),s.push(i))}return s}function PP(e=process.env){let r=String(e.KYNVER_ALLOW_UNWATCHED_WORKER??"").trim().toLowerCase();return r==="1"||r==="true"||r==="yes"}function Sg(e,r,t,n={}){if(!PP(n.env))throw Gl(e,r,"watcher_attach_failed",t,n.deps),r.status="failed",L(e,r),new Error(`watcher_attach_failed: ${t}; worker stopped instead of running unwatched`)}Aa();de();B();B();var wg="unknown";function xg(e){let r=e.baseCommit?.trim()??"",t=[];r&&r!==wg&&t.push({ref:r,source:"baseCommit"});let n=e.base?.trim()??"";n&&n!==wg&&t.push({ref:n,source:"base"}),t.push({ref:"origin/main",source:"origin/main"}),t.push({ref:"origin/HEAD",source:"origin/HEAD"});let o=new Set;for(let s of t)if(!o.has(s.ref)&&(o.add(s.ref),e.verifyRef(s.ref)))return{ref:s.ref,repaired:s.source!=="baseCommit",source:s.source};throw new Error(`worktree base ref unresolvable: baseCommit=${r||"<empty>"} base=${n||"<empty>"} \u2014 origin/main and origin/HEAD also failed verification`)}var AP=/<!--\s*harness-contract:\s*(\{[\s\S]*?\})\s*-->/i,IP="next-action-fix:";function li(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function _g(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`https://github.com/${r[1]}/pull/${r[2]}`:li(e)}function OP(e){let r=(e.title??"").trim().toLowerCase();if(r.startsWith("fix:")||r.startsWith("repair:"))return!0;let t=(e.executorRef??"").toLowerCase();return!!(t.startsWith(IP)||t.includes("repair")||t.includes("unblock"))}function TP(e){let r={repairEnforceOriginalPr:!1,targetPrUrl:null,targetPrBranch:null};if(!e)return r;let t=e.match(AP);if(!t?.[1])return r;try{let n=JSON.parse(t[1]),o=li(String(n.targetPrUrl??n.target_pr_url??"")),s=li(String(n.targetPrBranch??n.target_pr_branch??""));return{repairEnforceOriginalPr:n.repairEnforceOriginalPr===!0||n.repair_enforce_original_pr===!0||!!o,targetPrUrl:o?_g(o):null,targetPrBranch:s}}catch{return r}}function Eg(e){if(!OP(e))return null;let r=TP(e.description),t=e.prUrl?_g(e.prUrl):null,n=r.targetPrUrl??t;return n?{targetPrUrl:n,targetPrBranch:r.targetPrBranch??li(e.branch)}:null}function Cg(e){return["Repair target PR policy:","- Work on the existing target PR branch \u2014 do not open a duplicate repair PR by default.",`- Canonical target PR: ${e.targetPrUrl}`,...e.targetPrBranch?[`- Canonical target branch: \`${e.targetPrBranch}\` (checkout is already on this branch).`]:[],`- Reconcile ${e.targetPrUrl} in structured finalResult.targetPrReconciliation.`,"- Only supersede the original when the branch is inaccessible: set supersedesOriginalTargetPr: true with reason and close/comment on the original PR."]}function Pg(e){let r=e.ownedPaths.length?`Owned paths: ${e.ownedPaths.join(", ")}. Do not edit outside these paths without stopping and reporting why.`:"Owned paths: unrestricted for this worker, but keep edits tightly scoped.",t=!!e.model?.toLowerCase().includes("haiku"),n=t?"compact":"full",o=t?e.planId?`Active planId: ${e.planId}`:"No planId on this worker.":e.planId?`Active planId: ${e.planId}${e.taskId?` \xB7 taskId: ${e.taskId}`:""}`:"No planId on this worker \u2014 still emit progress when you touch plan-scoped work.",s=[...Cn(`worker.prompt.progress.${n}`).split(`
91
+ `),o],i=Cn(`worker.prompt.merge_gate.${n}`).split(`
92
+ `),a=Cn(`worker.prompt.plan_artifacts.${n}`).split(`
93
+ `);return["You are running under the Kynver AgentOS runtime.","Immediately state your plan before editing.",r,`Worktree: ${e.worktreePath}`,`Progress heartbeat file: ${e.heartbeatPath}`,"After each major step, append one JSON line to the heartbeat file with fields: ts, phase, summary, changedFiles, blocker.","Before exiting, append a terminal heartbeat with phase `complete` and a structured finalResult object; if you cannot complete, append blocker plus the recovery next action instead of exiting silently.","Final response must include files changed, verification commands, and unresolved risks.","Also include a JSON code block containing the structured finalResult object itself (not a wrapper): summary, verification (actual commands and observed results), scope, risks, and changedFiles. This is required even if the heartbeat path is read-only or a terminal heartbeat cannot be written. Never invent verification evidence; disclose unverified surfaces and blockers.",...Cn("worker.prompt.core_rules").split(`
94
94
  `),"",...s,"",...i,"",...a,"",...e.runtimeEnvelopeMarkdown?.trim()?[e.runtimeEnvelopeMarkdown.trim(),""]:[],...e.contextEnvelopeMarkdown?.trim()?[e.contextEnvelopeMarkdown.trim(),""]:[],...e.personaMarkdown?.trim()?[e.personaMarkdown.trim(),""]:[],...e.instructionPolicyMarkdown?.trim()?["Operating rules (from AgentOS memory policy):",e.instructionPolicyMarkdown.trim(),""]:[],...e.memoryQualityMarkdown?.trim()?[e.memoryQualityMarkdown.trim(),""]:[],...e.repairTargetPrUrl?[...Cg({targetPrUrl:e.repairTargetPrUrl,targetPrBranch:e.repairTargetBranch??null}),""]:[],"Task:",e.task].join(`
95
- `)}O();H();var NP=600*1e3,ho=class extends Error{};function DP(e=process.env){let r=eg(e);if(!r)throw new ho('the "venice" worker provider requires KYNVER_VENICE_API_KEY (or VENICE_API_KEY) on the daemon host \u2014 create a key at https://venice.ai/settings/api.');let t=rg(e),n;try{n=new URL(t)}catch{throw new ho(`KYNVER_VENICE_BASE_URL is not a valid URL: "${t}" \u2014 expected e.g. ${Fl}`)}if(n.protocol!=="http:"&&n.protocol!=="https:")throw new ho(`KYNVER_VENICE_BASE_URL must be http(s), got "${n.protocol}//"`);let o=Number(e.KYNVER_WORKER_TIMEOUT_MS??""),s=Number.isFinite(o)&&o>0?Math.floor(o):NP;return{baseUrl:t,apiKey:r,timeoutMs:s}}function MP(e,r,t){let n=e.workerToolGrant,o=n?sn(n.capabilities):void 0,s=po(r,t,e.prompt,o);return s.headers=tg(r.apiKey??""),{provider:tr,model:t,request:s,timeoutMs:r.timeoutMs,heartbeatPath:e.heartbeatPath,endpointOrigin:new URL(r.baseUrl).origin,...n&&o&&o.length?{workerTools:n}:{}}}var Ag={name:tr,get defaultModel(){return Jr()},preflightModel(e){return rn(e,Jr())},start(e){let r=rn(e.model,Jr());if(!r.ok)throw new Error(`venice provider model preflight failed: ${r.note}`);let t=DP(process.env);return mo(e,MP(e,t,r.model),r.model)}};var ci={claude:Nf,codex:Kf,cursor:bf,[dr]:Xf,[pr]:Zf,[vt]:jf,[tr]:Ag},Ig=null;function Og(e){if(Ig)return Ig;let r=e?.trim();if(r){let o=ci[lr(r)];if(!o)throw new Error(`unknown worker provider "${r}" \u2014 supported: ${Object.keys(ci).join(", ")}`);return o}let t=of(U().workerProvider),n=ci[t];if(!n)throw new Error(`unknown worker provider "${t}" \u2014 supported: ${Object.keys(ci).join(", ")}`);return n}O();import{spawn as YO}from"node:child_process";import{existsSync as qO,openSync as JO,closeSync as Dk}from"node:fs";import zO from"node:path";B();function Tg(e){return!!e.completionReportedAt?.trim()}function ui(e,r,t){e.completionReportedAt=t.completionReportedAt,e.completionOutcome=t.completionOutcome,t.completionResponse!==void 0&&(e.completionResponse=t.completionResponse),L(r,e)}function WP(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function Yl(e){return!!(WP(e.completionBlocker)||e.completionOutcome==="rejected")}function ko(e){return Tg(e)&&!Yl(e)}B();fe();H();import Mi from"node:path";function ql(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function yo(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}var LP=new Set(["review_scheduled","review_already_scheduled","closed","dispatched","dispatch_already_done","steer_restart_required"]),Ng=new Set(["done","failed","cancelled"]);function Dg(e){let r=ql(e);if(!r)return{routeOutcome:null,taskAdvanced:!1,detail:null};let t=yo(r.outcome),n=yo(r.detail)??yo(r.error),o=ql(r.task),s=ql(r.closedTask),i=o?yo(o.status):null,a=s?yo(s.status):null,c=t==="skipped_terminal_task"&&(i!==null&&Ng.has(i)||a!==null&&Ng.has(a))||t!==null&&LP.has(t)||i==="awaiting_review"||i==="done"||a==="done";return{routeOutcome:t,taskAdvanced:c,detail:n}}function Mg(e){return e.taskAdvanced}B();ds();var BP="expert-lane-pr-review:",UP="plan-review-task",FP="scheduledjob:",di=new Set(["lorentz","dalton","rhea","sentinel"]);function KP(e){if(!e)return null;let r=e.trim().toLowerCase();return r.length?r:null}function Jl(e){return/\b(deep[- ]?review|plan review|review .*plan|security review|red[- ]team|lb\d+|runtime verification)\b/.test(e)}function HP(e,r){return e.startsWith("factory:")?e.includes("lb")||Jl(r):!1}function pi(e){let r=(e.executorRef??"").toLowerCase(),t=(e.title??"").toLowerCase(),n=(e.description??"").toLowerCase(),o=`${t}
95
+ `)}O();H();var NP=600*1e3,ko=class extends Error{};function DP(e=process.env){let r=eg(e);if(!r)throw new ko('the "venice" worker provider requires KYNVER_VENICE_API_KEY (or VENICE_API_KEY) on the daemon host \u2014 create a key at https://venice.ai/settings/api.');let t=rg(e),n;try{n=new URL(t)}catch{throw new ko(`KYNVER_VENICE_BASE_URL is not a valid URL: "${t}" \u2014 expected e.g. ${Fl}`)}if(n.protocol!=="http:"&&n.protocol!=="https:")throw new ko(`KYNVER_VENICE_BASE_URL must be http(s), got "${n.protocol}//"`);let o=Number(e.KYNVER_WORKER_TIMEOUT_MS??""),s=Number.isFinite(o)&&o>0?Math.floor(o):NP;return{baseUrl:t,apiKey:r,timeoutMs:s}}function MP(e,r,t){let n=e.workerToolGrant,o=n?an(n.capabilities):void 0,s=mo(r,t,e.prompt,o);return s.headers=tg(r.apiKey??""),{provider:tr,model:t,request:s,timeoutMs:r.timeoutMs,heartbeatPath:e.heartbeatPath,endpointOrigin:new URL(r.baseUrl).origin,...n&&o&&o.length?{workerTools:n}:{}}}var Ag={name:tr,get defaultModel(){return zr()},preflightModel(e){return tn(e,zr())},start(e){let r=tn(e.model,zr());if(!r.ok)throw new Error(`venice provider model preflight failed: ${r.note}`);let t=DP(process.env);return fo(e,MP(e,t,r.model),r.model)}};var ci={claude:Nf,codex:Kf,cursor:bf,[pr]:Xf,[mr]:Zf,[bt]:jf,[tr]:Ag},Ig=null;function Og(e){if(Ig)return Ig;let r=e?.trim();if(r){let o=ci[lr(r)];if(!o)throw new Error(`unknown worker provider "${r}" \u2014 supported: ${Object.keys(ci).join(", ")}`);return o}let t=of(U().workerProvider),n=ci[t];if(!n)throw new Error(`unknown worker provider "${t}" \u2014 supported: ${Object.keys(ci).join(", ")}`);return n}O();import{spawn as YO}from"node:child_process";import{existsSync as qO,openSync as JO,closeSync as Dk}from"node:fs";import zO from"node:path";B();function Tg(e){return!!e.completionReportedAt?.trim()}function ui(e,r,t){e.completionReportedAt=t.completionReportedAt,e.completionOutcome=t.completionOutcome,t.completionResponse!==void 0&&(e.completionResponse=t.completionResponse),L(r,e)}function WP(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function Yl(e){return!!(WP(e.completionBlocker)||e.completionOutcome==="rejected")}function yo(e){return Tg(e)&&!Yl(e)}B();fe();H();import Mi from"node:path";function ql(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function Ro(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}var LP=new Set(["review_scheduled","review_already_scheduled","closed","dispatched","dispatch_already_done","steer_restart_required"]),Ng=new Set(["done","failed","cancelled"]);function Dg(e){let r=ql(e);if(!r)return{routeOutcome:null,taskAdvanced:!1,detail:null};let t=Ro(r.outcome),n=Ro(r.detail)??Ro(r.error),o=ql(r.task),s=ql(r.closedTask),i=o?Ro(o.status):null,a=s?Ro(s.status):null,c=t==="skipped_terminal_task"&&(i!==null&&Ng.has(i)||a!==null&&Ng.has(a))||t!==null&&LP.has(t)||i==="awaiting_review"||i==="done"||a==="done";return{routeOutcome:t,taskAdvanced:c,detail:n}}function Mg(e){return e.taskAdvanced}B();ps();var BP="expert-lane-pr-review:",UP="plan-review-task",FP="scheduledjob:",di=new Set(["lorentz","dalton","rhea","sentinel"]);function KP(e){if(!e)return null;let r=e.trim().toLowerCase();return r.length?r:null}function Jl(e){return/\b(deep[- ]?review|plan review|review .*plan|security review|red[- ]team|lb\d+|runtime verification)\b/.test(e)}function HP(e,r){return e.startsWith("factory:")?e.includes("lb")||Jl(r):!1}function pi(e){let r=(e.executorRef??"").toLowerCase(),t=(e.title??"").toLowerCase(),n=(e.description??"").toLowerCase(),o=`${t}
96
96
  ${n}`,s=KP(e.personaSlug);return r.startsWith("harness-lane:blocked-lane-unblock:")||r==="lane:over_attempt_recovery"||r.startsWith("next-action-fix:")||r.startsWith("next-action-landing:")||r.startsWith("code-work-lane-chain:release:")?!1:!!(r.startsWith(BP)||r===UP||r.startsWith("daemon-review:")||s&&di.has(s)&&(r.includes("evidence")||r.includes("validate")||r.includes("review")||HP(r,o)||Jl(o))||r.startsWith(FP)&&e.parentTaskId&&s&&di.has(s)||e.planId&&!e.parentTaskId&&s&&di.has(s)&&Jl(o)||t.includes("expert pr review")||e.parentTaskId&&(t.startsWith("review:")||t.includes("review required")||t.includes("runtime review"))&&s&&di.has(s))}var Wg=/^(lane:)?(review|deep_review|planning|landing)(:|$)/i,$P=new Set(qm()),jP=/no commits between/i;function Lg(e){return!!(e&&jP.test(e))}function Se(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function Bg(e){return!e?.checked||e.headIsAncestorOfBase!==!1?null:Se(e.head)}function Ug(e){if(e==null)return null;let t=(typeof e=="string"?e:typeof e=="object"&&e!==null&&"summary"in e?String(e.summary??""):JSON.stringify(e)).match(/https?:\/\/[^\s)>"]+\/(?:pull|pulls|merge_requests|pull-requests)\/\d+/i);return t?Se(t[0]):null}function VP(e,r,t){let n=r.trim();if(!n)return null;let o=t.git(e,["rev-list","--count",`${n}..HEAD`]);if(o.status!==0)return null;let s=Number.parseInt(o.stdout.trim(),10);return Number.isFinite(s)?s:null}function GP(e,r){if(r.changedFiles.length>0)return!1;let t=Se(e.personaSlug)?.toLowerCase();if(t&&$P.has(t))return!0;let n=Se(e.routingRule)??"";return!!(n&&Wg.test(n))}function YP(e,r){if(e.changedFiles.length>0)return!0;let t=Se(r?.baseRef);if(t&&r?.exec&&r.worktreePath){let n=VP(r.worktreePath,t,r.exec);if(n===0)return!1;if(n!==null&&n>0)return!0}return!!(Se(e.headCommit)||Bg(e.gitAncestry))}function Fg(e){if(!e.dispatched)return{required:!1,reason:"not_dispatched"};if(pi({title:e.taskTitle??void 0,personaSlug:e.personaSlug,parentTaskId:e.parentTaskId,executorRef:e.executorRef}))return{required:!1,reason:"expert_review_task"};let r=Se(e.routingRule)??"";if(r&&Wg.test(r))return{required:!1,reason:"review_lane"};let t=e.worker??{personaSlug:e.personaSlug,routingRule:e.routingRule};if(GP(t,e.snapshot))return{required:!1,reason:"review_artifact"};if(Se(e.patchPath)||Se(e.artifactBundlePath))return{required:!1,reason:"patch_or_bundle"};if(Se(e.repairTargetPrUrl))return{required:!1,reason:"repair_target_pr"};if(Se(e.prUrl)??Se(e.taskPrUrl)??Se(e.snapshot.prUrl))return{required:!1,reason:"already_has_pr"};let s=e.exec&&e.baseRef?{baseRef:e.baseRef,exec:e.exec,worktreePath:e.snapshot.worktreePath}:void 0;return YP(e.snapshot,s)?{required:!0,snapshot:e.snapshot}:{required:!1,reason:"no_work_product"}}function Kg(e,r){return{changedFiles:e.changedFiles,branch:e.branch,worktreePath:e.worktreePath,gitAncestry:e.gitAncestry,finalResult:e.finalResult,headCommit:Se(r?.headCommit)??Bg(e.gitAncestry),prUrl:Se(r?.prUrl)??null}}import{spawnSync as qP}from"node:child_process";function $g(e){let r=e.trim();if(!r)return null;let t=r.match(/^git@github\.com:([^/]+\/[^/\s]+?)(?:\.git)?$/i);if(t)return Hg(t[1]);let n=r.match(/^ssh:\/\/git@github\.com\/([^/]+\/[^/\s]+?)(?:\.git)?$/i);if(n)return Hg(n[1]);try{let o=new URL(r.includes("://")?r:`https://${r}`);if(o.hostname.toLowerCase()!=="github.com")return null;let s=o.pathname.replace(/^\/+|\/+$/g,"").split("/");if(s.length<2)return null;let[i,a]=s;return!i||!a?null:`${i}/${a.replace(/\.git$/i,"")}`}catch{return null}}function Hg(e){let r=e.split("/").filter(Boolean);if(r.length<2)return null;let t=r[0],n=r[1].replace(/\.git$/i,"");return t&&n?`${t}/${n}`:null}de();function JP(e,r,t){try{let n=qP(e,t,{windowsHide:!0,cwd:r,encoding:"utf8"});return{status:n.status,stdout:(n.stdout||"").trim(),stderr:(n.stderr||"").trim(),error:n.error?n.error.message:null}}catch(n){return{status:null,stdout:"",stderr:"",error:n.message}}}var fi={git:(e,r)=>ne(e,r),gh:(e,r)=>JP("gh",e,r)};function zP(e){return e.split(`
97
- `).map(r=>r.trim()).find(Boolean)??""}function Vg(e,r){let t=r.git(e,["remote","get-url","origin"]);return t.status!==0?null:$g(t.stdout)}function bt(e,r){let t=r.git(e,["rev-parse","HEAD"]);return t.status!==0?null:t.stdout.trim()||null}function mi(e,r,t,n){let o=n.gh(e,["pr","list","--repo",r,"--head",t,"--state","open","--json","url","--limit","1"]);if(o.status!==0)return null;try{return JSON.parse(o.stdout)[0]?.url?.trim()||null}catch{return null}}var jg="Kynver-Task";function XP(e,r){let t=r?.trim();return!t||!/^[\w.-]{1,128}$/.test(t)||new RegExp(`^${jg}:`,"m").test(e)?e:`${e.trimEnd()}
97
+ `).map(r=>r.trim()).find(Boolean)??""}function Vg(e,r){let t=r.git(e,["remote","get-url","origin"]);return t.status!==0?null:$g(t.stdout)}function St(e,r){let t=r.git(e,["rev-parse","HEAD"]);return t.status!==0?null:t.stdout.trim()||null}function mi(e,r,t,n){let o=n.gh(e,["pr","list","--repo",r,"--head",t,"--state","open","--json","url","--limit","1"]);if(o.status!==0)return null;try{return JSON.parse(o.stdout)[0]?.url?.trim()||null}catch{return null}}var jg="Kynver-Task";function XP(e,r){let t=r?.trim();return!t||!/^[\w.-]{1,128}$/.test(t)||new RegExp(`^${jg}:`,"m").test(e)?e:`${e.trimEnd()}
98
98
 
99
- ${jg}: ${t}`}function Ro(e){let{worktreePath:r,branch:t,commitMessage:n,hasDirtyFiles:o,exec:s}=e;if(o){let l=s.git(r,["add","-A"]);if(l.status!==0)return{ok:!1,committed:!1,pushed:!1,detail:l.stderr||l.stdout||l.error||"git add failed"};let c=s.git(r,["commit","-m",XP(n,e.taskId)]);if(c.status!==0)return{ok:!1,committed:!1,pushed:!1,detail:c.stderr||c.stdout||c.error||"git commit failed"}}let i=s.git(r,["push","-u","origin",t]);if(i.status!==0)return{ok:!1,committed:o,pushed:!1,detail:i.stderr||i.stdout||i.error||"git push failed"};let a=bt(r,s)??void 0;return{ok:!0,committed:o,pushed:!0,headCommit:a}}function Gg(e){let r=e.remoteBranch.trim();if(!r)return{ok:!1,detail:"missing remote branch"};let t=e.exec.git(e.worktreePath,["push","-u","origin",`HEAD:refs/heads/${r}`]);return t.status!==0&&!/already up to date/i.test(t.stderr||t.stdout)?{ok:!1,detail:t.stderr||t.stdout||t.error||"git push to PR branch failed"}:{ok:!0}}function Yg(e){let r=mi(e.worktreePath,e.repo,e.branch,e.exec);if(r)return{ok:!0,prUrl:r,created:!1};let t=e.exec.gh(e.worktreePath,["pr","create","--repo",e.repo,"--base",e.base,"--head",e.branch,"--title",e.title,"--body",e.body,"--draft"]);if(t.status!==0)return{ok:!1,detail:t.stderr||t.stdout||t.error||"gh pr create failed"};let n=QP(t.stdout)??mi(e.worktreePath,e.repo,e.branch,e.exec);return n?{ok:!0,prUrl:n,created:!0}:{ok:!1,detail:"gh pr create succeeded but no PR URL was parsed"}}function QP(e){let t=zP(e).match(/https?:\/\/[^\s]+\/pull\/\d+/i);return t?t[0]:null}O();function qg(e){return`t-${x(e)}-a`}function Jg(e,r){let t=qg(r);if(e.headRefName.toLowerCase().includes(t))return!0;let n=r.trim();if(!n)return!1;let o=e.body??"",s=e.title??"";return o.includes(n)||o.includes(`\`${n}\``)||s.includes(n)}function vo(e){return e.trim().toLowerCase()}function zg(e,r){if(!e.length)return null;if(r){let t=vo(r),n=e.find(o=>vo(o.url)===t);if(n)return n}return[...e].sort((t,n)=>n.number-t.number)[0]??null}function Xg(e,r){let t=vo(r);return e.filter(n=>vo(n.url)!==t).map(n=>n.url)}function Qg(e){try{let r=JSON.parse(e);return Array.isArray(r)?r.map(t=>({url:t.url?.trim()??"",number:Number(t.number)||0,headRefName:t.headRefName?.trim()??"",createdAt:t.createdAt?.trim()??"",body:t.body,title:t.title})).filter(t=>t.url&&t.number>0&&t.headRefName):[]}catch{return[]}}function ZP(e){let r=new Set,t=[];for(let n of e){let o=vo(n.url);r.has(o)||(r.add(o),t.push(n))}return t}function eA(e,r,t,n){let o=n.gh(e,["search","prs",t,"--repo",r,"--state","open","--json","url,number,headRefName,createdAt,body,title","--limit","20"]);return o.status!==0?[]:Qg(o.stdout).filter(s=>Jg(s,t))}function rA(e,r,t,n){let o=n.gh(e,["pr","list","--repo",r,"--state","open","--json","url,number,headRefName,createdAt,body,title","--limit","100"]);if(o.status!==0)return[];let s=qg(t);return Qg(o.stdout).filter(i=>i.headRefName.toLowerCase().includes(s)||Jg(i,t))}function zl(e,r,t,n){let o=t.trim();if(!o)return[];let s=eA(e,r,o,n),i=rA(e,r,o,n);return ZP([...s,...i])}function tA(e){let r=e.trim().match(/\/pull\/(\d+)(?:$|[?#])/i);if(!r)return null;let t=Number.parseInt(r[1],10);return Number.isFinite(t)?t:null}function Xl(e){let r=Xg(e.rows,e.canonicalPrUrl),t=[],n=[];for(let o of r){let s=tA(o);if(!s){n.push({prUrl:o,detail:"could not parse PR number from URL"});continue}let i=`Superseded by ${e.canonicalPrUrl} (harness task retry dedupe).`,a=e.exec.gh(e.worktreePath,["pr","close",String(s),"--repo",e.repo,"--comment",i]);a.status===0?t.push(o):n.push({prUrl:o,detail:a.stderr||a.stdout||a.error||"gh pr close failed"})}return{closed:t,failed:n}}function Zg(e,r,t,n){let o=t.trim();if(!o||!r.trim())return null;let s=n.gh(e,["api",`repos/${r}/commits/${o}/pulls`]);if(s.status!==0||!s.stdout)return null;try{let l=JSON.parse(s.stdout).filter(c=>c.merged_at&&c.html_url?.trim()).sort((c,u)=>(typeof c.number=="number"?c.number:Number.MAX_SAFE_INTEGER)-(typeof u.number=="number"?u.number:Number.MAX_SAFE_INTEGER))[0];return l?.html_url?.trim()?{prUrl:l.html_url.trim(),number:typeof l.number=="number"?l.number:null}:null}catch{return null}}function nA(e){return e.gh(process.cwd(),["--version"]).status===0}function oA(e,r){return`AgentOS harness: ${e} (${r})`}function sA(e,r,t){return["Automated PR-ready handoff from the Kynver harness runtime.","",e?`AgentOS task: \`${e}\``:"",`Harness worker: \`${r}\` \xB7 run \`${t}\``,"","Opened by orchestrator completion enforcement so production review receives a reviewable artifact."].filter(Boolean).join(`
100
- `)}function zr(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function iA(e){return zr(e.prUrlHint)??Ug(e.status.finalResult)??zr(e.worker.taskPrUrl)??null}function aA(e){let{snapshot:r,canonical:t,workerName:n,exec:o}=e,s=!1,i=!1,a=r.headCommit??bt(r.worktreePath,o)??void 0;if(r.changedFiles.length>0){let l=Ro({worktreePath:r.worktreePath,branch:r.branch,commitMessage:`chore(harness): update PR handoff for ${n}`,taskId:e.taskId,hasDirtyFiles:!0,exec:o});if(!l.ok)return{ok:!1,reason:`PR-ready handoff blocked: ${l.detail??"git commit/push failed"}`,nextAction:"Commit and push the dirty worker changes to the existing PR branch, then rerun `kynver worker complete`."};s=l.committed,i=l.pushed,a=l.headCommit??a}if(t.headRefName!==r.branch){let l=Gg({worktreePath:r.worktreePath,remoteBranch:t.headRefName,exec:o});if(!l.ok)return{ok:!1,reason:`PR-ready handoff blocked: ${l.detail??"git push to canonical PR branch failed"}`,nextAction:"Push worker commits to the canonical PR branch, then rerun `kynver worker complete`."};i=!0,a=bt(r.worktreePath,o)??a}return{ok:!0,prUrl:t.url,headCommit:a,committed:s,pushed:i}}function Ql(e){if(e.snapshot.changedFiles.length===0)return{ok:!0,prUrl:e.prUrl,headCommit:e.snapshot.headCommit??bt(e.snapshot.worktreePath,e.exec)??void 0};let r=Ro({worktreePath:e.snapshot.worktreePath,branch:e.snapshot.branch,commitMessage:e.commitMessage,taskId:e.taskId,hasDirtyFiles:!0,exec:e.exec});return r.ok?{ok:!0,prUrl:e.prUrl,headCommit:r.headCommit??e.snapshot.headCommit??void 0,committed:r.committed,pushed:r.pushed}:{ok:!1,reason:`PR-ready handoff blocked: ${r.detail??"git commit/push failed"}`,nextAction:"Commit and push the dirty worker changes to the existing PR branch, then rerun `kynver worker complete`."}}function Zl(e,r=fi){let t=iA(e),n=Kg(e.status,{prUrl:t,headCommit:null}),o=e.run.baseCommit?.trim()||e.run.base?.trim()||"origin/main";if(!Fg({dispatched:e.worker.dispatched,routingRule:e.worker.routingRule,personaSlug:e.worker.personaSlug,prUrl:t,taskTitle:e.worker.taskTitle,executorRef:e.worker.executorRef,parentTaskId:e.worker.parentTaskId,taskPrUrl:e.worker.taskPrUrl,repairTargetPrUrl:e.worker.repairTargetPrUrl,baseRef:o,exec:r,worker:e.worker,snapshot:n}).required)return t?Ql({snapshot:n,prUrl:t,commitMessage:`chore(harness): update PR handoff for ${e.worker.name}`,taskId:zr(e.worker.taskId),exec:r}):{ok:!0};if(t)return Ql({snapshot:n,prUrl:t,commitMessage:`chore(harness): update PR handoff for ${e.worker.name}`,taskId:zr(e.worker.taskId),exec:r});if(!nA(r)){let h=n.changedFiles.length;return{ok:!1,reason:`PR-ready handoff blocked: ${h?`${h} uncommitted change(s) with no PR URL`:"committed branch with no PR URL"}`,nextAction:"Install and authenticate GitHub CLI (`gh auth login`), then commit, push, and run `gh pr create` (or rerun `kynver worker complete` after the PR exists)."}}let i=Vg(n.worktreePath,r);if(!i)return{ok:!1,reason:"PR-ready handoff blocked: could not resolve github.com origin for the worktree",nextAction:"Ensure `origin` points at GitHub, push the branch, open a PR, and rerun `kynver worker complete`."};let a=e.worker.repairTargetPrUrl?.trim();if(a){let h=!1,w=!1,E=n.headCommit??bt(n.worktreePath,r)??void 0;if(n.changedFiles.length>0){let S=Ro({worktreePath:n.worktreePath,branch:n.branch,commitMessage:`fix(harness): repair target PR ${a}`,taskId:zr(e.worker.taskId),hasDirtyFiles:!0,exec:r});if(!S.ok)return{ok:!1,reason:`PR-ready handoff blocked: ${S.detail??"git commit/push failed"}`,nextAction:"Commit and push to the target PR branch, then rerun `kynver worker complete`."};h=S.committed,w=S.pushed,E=S.headCommit??E}else{let S=r.git(n.worktreePath,["push","-u","origin",n.branch]);if(S.status!==0&&!/already up to date/i.test(S.stderr||S.stdout))return{ok:!1,reason:`PR-ready handoff blocked: ${S.stderr||S.stdout||"git push failed"}`,nextAction:"Push the target branch to origin, then rerun `kynver worker complete`."};w=S.status===0}return{ok:!0,prUrl:a,headCommit:E,committed:h,pushed:w}}let l=zr(e.worker.taskId),c=[];if(l){c=zl(n.worktreePath,i,l,r);let h=zg(c);if(h){let w=aA({snapshot:n,canonical:h,workerName:e.worker.name,taskId:l,exec:r});return w.ok&&w.prUrl&&Xl({worktreePath:n.worktreePath,repo:i,rows:c,canonicalPrUrl:w.prUrl,exec:r}),w}}let u=mi(n.worktreePath,i,n.branch,r);if(u)return Ql({snapshot:n,prUrl:u,commitMessage:`chore(harness): update PR handoff for ${e.worker.name}`,taskId:zr(e.worker.taskId),exec:r});let d=n.changedFiles.length>0,p=!1,m=!1,f=n.headCommit??void 0,y=Ro({worktreePath:n.worktreePath,branch:n.branch,commitMessage:`chore(harness): PR-ready handoff for ${e.worker.name}`,taskId:zr(e.worker.taskId),hasDirtyFiles:d,exec:r});if(d&&!y.ok)return{ok:!1,reason:`PR-ready handoff blocked: ${y.detail??"git commit/push failed"}`,nextAction:"Commit and push the branch, run `gh pr create`, then rerun `kynver worker complete`."};if(d){if(p=y.committed,m=y.pushed,!y.ok)return{ok:!1,reason:`PR-ready handoff blocked: ${y.detail??"git push failed"}`,nextAction:"Fix git auth or merge conflicts, push the branch, run `gh pr create`, then rerun `kynver worker complete`."}}else{let h=r.git(n.worktreePath,["push","-u","origin",n.branch]);if(h.status!==0&&!/already up to date/i.test(h.stderr||h.stdout))return{ok:!1,reason:`PR-ready handoff blocked: ${h.stderr||h.stdout||h.error||"git push failed"}`,nextAction:"Push the branch to origin, run `gh pr create`, then rerun `kynver worker complete`."};m=h.status===0}f=y.headCommit??f??bt(n.worktreePath,r)??void 0;let k=f?Zg(n.worktreePath,i,f,r):null;if(k)return{ok:!0,prUrl:k.prUrl,headCommit:f,committed:p,pushed:m,created:!1};let b=e.run.base?.trim()||"main",g=Yg({worktreePath:n.worktreePath,repo:i,branch:n.branch,base:b.replace(/^origin\//,""),title:oA(e.worker.name,e.worker.runId),body:sA(e.worker.taskId,e.worker.name,e.worker.runId),exec:r});if(!g.ok||!g.prUrl){if(Lg(g.detail))return{ok:!0,headCommit:f??void 0,committed:p,pushed:m};let h=n.changedFiles.length;return{ok:!1,reason:`PR-ready handoff blocked: ${h?`${h} uncommitted change(s) and no PR URL after handoff attempt`:"no PR URL after handoff attempt"}${g.detail?` (${g.detail})`:""}`,nextAction:"Run `gh pr create` on the worker branch (or fix `gh` auth), attach the PR URL to the task, then rerun `kynver worker complete`."}}if(l&&g.prUrl){let w=[...c.length>0?c:zl(n.worktreePath,i,l,r),{url:g.prUrl,number:Number.parseInt(g.prUrl.match(/\/pull\/(\d+)/)?.[1]??"",10)||0,headRefName:n.branch,createdAt:""}];Xl({worktreePath:n.worktreePath,repo:i,rows:w,canonicalPrUrl:g.prUrl,exec:r})}return{ok:!0,prUrl:g.prUrl,headCommit:f??void 0,committed:p,pushed:m,created:g.created}}fe();dt();Ia();B();fe();O();import YA from"node:path";O();import lA from"node:path";var bo=new Map,ec=new Map;function rc(e){clearInterval(ec.get(e)),ec.delete(e)}function tc(e,r){if(rc(e),!bo.has(e))return;let t=setInterval(()=>{(I(lA.join(e,"worker.json"),null)?.completionReportedAt||!Y(r))&&an(e)},1e3);t.unref(),ec.set(e,t)}function nc(e,r){rc(e);let t=bo.get(e);t&&t.close(),bo.set(e,r)}async function Xr(e){rc(e);let r=bo.get(e);return r?(bo.delete(e),await r.close(),!0):!1}function an(e){Xr(e).catch(()=>{})}de();import{appendFileSync as cA,existsSync as rh,mkdirSync as th,readFileSync as uA,rmSync as eh,writeFileSync as dA}from"node:fs";import Dr from"node:path";var nh=Dr.join(".cursor","mcp.json");function oh(e){return Dr.join(e,nh)}function pA(e){return Z(e,["ls-files","--error-unmatch",nh.split(Dr.sep).join("/")],{allowFailure:!0}).trim().length>0}function mA(e){let r=Z(e,["rev-parse","--git-common-dir"],{allowFailure:!0}).trim();if(!r)return;let t=Dr.isAbsolute(r)?r:Dr.join(e,r),n=Dr.join(t,"info","exclude"),o=".cursor/mcp.json";try{th(Dr.dirname(n),{recursive:!0});let s=rh(n)?uA(n,"utf8"):"";if(s.split(/\r?\n/).some(i=>i.trim()===o))return;cA(n,`${s.endsWith(`
99
+ ${jg}: ${t}`}function vo(e){let{worktreePath:r,branch:t,commitMessage:n,hasDirtyFiles:o,exec:s}=e;if(o){let l=s.git(r,["add","-A"]);if(l.status!==0)return{ok:!1,committed:!1,pushed:!1,detail:l.stderr||l.stdout||l.error||"git add failed"};let c=s.git(r,["commit","-m",XP(n,e.taskId)]);if(c.status!==0)return{ok:!1,committed:!1,pushed:!1,detail:c.stderr||c.stdout||c.error||"git commit failed"}}let i=s.git(r,["push","-u","origin",t]);if(i.status!==0)return{ok:!1,committed:o,pushed:!1,detail:i.stderr||i.stdout||i.error||"git push failed"};let a=St(r,s)??void 0;return{ok:!0,committed:o,pushed:!0,headCommit:a}}function Gg(e){let r=e.remoteBranch.trim();if(!r)return{ok:!1,detail:"missing remote branch"};let t=e.exec.git(e.worktreePath,["push","-u","origin",`HEAD:refs/heads/${r}`]);return t.status!==0&&!/already up to date/i.test(t.stderr||t.stdout)?{ok:!1,detail:t.stderr||t.stdout||t.error||"git push to PR branch failed"}:{ok:!0}}function Yg(e){let r=mi(e.worktreePath,e.repo,e.branch,e.exec);if(r)return{ok:!0,prUrl:r,created:!1};let t=e.exec.gh(e.worktreePath,["pr","create","--repo",e.repo,"--base",e.base,"--head",e.branch,"--title",e.title,"--body",e.body,"--draft"]);if(t.status!==0)return{ok:!1,detail:t.stderr||t.stdout||t.error||"gh pr create failed"};let n=QP(t.stdout)??mi(e.worktreePath,e.repo,e.branch,e.exec);return n?{ok:!0,prUrl:n,created:!0}:{ok:!1,detail:"gh pr create succeeded but no PR URL was parsed"}}function QP(e){let t=zP(e).match(/https?:\/\/[^\s]+\/pull\/\d+/i);return t?t[0]:null}O();function qg(e){return`t-${x(e)}-a`}function Jg(e,r){let t=qg(r);if(e.headRefName.toLowerCase().includes(t))return!0;let n=r.trim();if(!n)return!1;let o=e.body??"",s=e.title??"";return o.includes(n)||o.includes(`\`${n}\``)||s.includes(n)}function bo(e){return e.trim().toLowerCase()}function zg(e,r){if(!e.length)return null;if(r){let t=bo(r),n=e.find(o=>bo(o.url)===t);if(n)return n}return[...e].sort((t,n)=>n.number-t.number)[0]??null}function Xg(e,r){let t=bo(r);return e.filter(n=>bo(n.url)!==t).map(n=>n.url)}function Qg(e){try{let r=JSON.parse(e);return Array.isArray(r)?r.map(t=>({url:t.url?.trim()??"",number:Number(t.number)||0,headRefName:t.headRefName?.trim()??"",createdAt:t.createdAt?.trim()??"",body:t.body,title:t.title})).filter(t=>t.url&&t.number>0&&t.headRefName):[]}catch{return[]}}function ZP(e){let r=new Set,t=[];for(let n of e){let o=bo(n.url);r.has(o)||(r.add(o),t.push(n))}return t}function eA(e,r,t,n){let o=n.gh(e,["search","prs",t,"--repo",r,"--state","open","--json","url,number,headRefName,createdAt,body,title","--limit","20"]);return o.status!==0?[]:Qg(o.stdout).filter(s=>Jg(s,t))}function rA(e,r,t,n){let o=n.gh(e,["pr","list","--repo",r,"--state","open","--json","url,number,headRefName,createdAt,body,title","--limit","100"]);if(o.status!==0)return[];let s=qg(t);return Qg(o.stdout).filter(i=>i.headRefName.toLowerCase().includes(s)||Jg(i,t))}function zl(e,r,t,n){let o=t.trim();if(!o)return[];let s=eA(e,r,o,n),i=rA(e,r,o,n);return ZP([...s,...i])}function tA(e){let r=e.trim().match(/\/pull\/(\d+)(?:$|[?#])/i);if(!r)return null;let t=Number.parseInt(r[1],10);return Number.isFinite(t)?t:null}function Xl(e){let r=Xg(e.rows,e.canonicalPrUrl),t=[],n=[];for(let o of r){let s=tA(o);if(!s){n.push({prUrl:o,detail:"could not parse PR number from URL"});continue}let i=`Superseded by ${e.canonicalPrUrl} (harness task retry dedupe).`,a=e.exec.gh(e.worktreePath,["pr","close",String(s),"--repo",e.repo,"--comment",i]);a.status===0?t.push(o):n.push({prUrl:o,detail:a.stderr||a.stdout||a.error||"gh pr close failed"})}return{closed:t,failed:n}}function Zg(e,r,t,n){let o=t.trim();if(!o||!r.trim())return null;let s=n.gh(e,["api",`repos/${r}/commits/${o}/pulls`]);if(s.status!==0||!s.stdout)return null;try{let l=JSON.parse(s.stdout).filter(c=>c.merged_at&&c.html_url?.trim()).sort((c,u)=>(typeof c.number=="number"?c.number:Number.MAX_SAFE_INTEGER)-(typeof u.number=="number"?u.number:Number.MAX_SAFE_INTEGER))[0];return l?.html_url?.trim()?{prUrl:l.html_url.trim(),number:typeof l.number=="number"?l.number:null}:null}catch{return null}}function nA(e){return e.gh(process.cwd(),["--version"]).status===0}function oA(e,r){return`AgentOS harness: ${e} (${r})`}function sA(e,r,t){return["Automated PR-ready handoff from the Kynver harness runtime.","",e?`AgentOS task: \`${e}\``:"",`Harness worker: \`${r}\` \xB7 run \`${t}\``,"","Opened by orchestrator completion enforcement so production review receives a reviewable artifact."].filter(Boolean).join(`
100
+ `)}function Xr(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function iA(e){return Xr(e.prUrlHint)??Ug(e.status.finalResult)??Xr(e.worker.taskPrUrl)??null}function aA(e){let{snapshot:r,canonical:t,workerName:n,exec:o}=e,s=!1,i=!1,a=r.headCommit??St(r.worktreePath,o)??void 0;if(r.changedFiles.length>0){let l=vo({worktreePath:r.worktreePath,branch:r.branch,commitMessage:`chore(harness): update PR handoff for ${n}`,taskId:e.taskId,hasDirtyFiles:!0,exec:o});if(!l.ok)return{ok:!1,reason:`PR-ready handoff blocked: ${l.detail??"git commit/push failed"}`,nextAction:"Commit and push the dirty worker changes to the existing PR branch, then rerun `kynver worker complete`."};s=l.committed,i=l.pushed,a=l.headCommit??a}if(t.headRefName!==r.branch){let l=Gg({worktreePath:r.worktreePath,remoteBranch:t.headRefName,exec:o});if(!l.ok)return{ok:!1,reason:`PR-ready handoff blocked: ${l.detail??"git push to canonical PR branch failed"}`,nextAction:"Push worker commits to the canonical PR branch, then rerun `kynver worker complete`."};i=!0,a=St(r.worktreePath,o)??a}return{ok:!0,prUrl:t.url,headCommit:a,committed:s,pushed:i}}function Ql(e){if(e.snapshot.changedFiles.length===0)return{ok:!0,prUrl:e.prUrl,headCommit:e.snapshot.headCommit??St(e.snapshot.worktreePath,e.exec)??void 0};let r=vo({worktreePath:e.snapshot.worktreePath,branch:e.snapshot.branch,commitMessage:e.commitMessage,taskId:e.taskId,hasDirtyFiles:!0,exec:e.exec});return r.ok?{ok:!0,prUrl:e.prUrl,headCommit:r.headCommit??e.snapshot.headCommit??void 0,committed:r.committed,pushed:r.pushed}:{ok:!1,reason:`PR-ready handoff blocked: ${r.detail??"git commit/push failed"}`,nextAction:"Commit and push the dirty worker changes to the existing PR branch, then rerun `kynver worker complete`."}}function Zl(e,r=fi){let t=iA(e),n=Kg(e.status,{prUrl:t,headCommit:null}),o=e.run.baseCommit?.trim()||e.run.base?.trim()||"origin/main";if(!Fg({dispatched:e.worker.dispatched,routingRule:e.worker.routingRule,personaSlug:e.worker.personaSlug,prUrl:t,taskTitle:e.worker.taskTitle,executorRef:e.worker.executorRef,parentTaskId:e.worker.parentTaskId,taskPrUrl:e.worker.taskPrUrl,repairTargetPrUrl:e.worker.repairTargetPrUrl,baseRef:o,exec:r,worker:e.worker,snapshot:n}).required)return t?Ql({snapshot:n,prUrl:t,commitMessage:`chore(harness): update PR handoff for ${e.worker.name}`,taskId:Xr(e.worker.taskId),exec:r}):{ok:!0};if(t)return Ql({snapshot:n,prUrl:t,commitMessage:`chore(harness): update PR handoff for ${e.worker.name}`,taskId:Xr(e.worker.taskId),exec:r});if(!nA(r)){let h=n.changedFiles.length;return{ok:!1,reason:`PR-ready handoff blocked: ${h?`${h} uncommitted change(s) with no PR URL`:"committed branch with no PR URL"}`,nextAction:"Install and authenticate GitHub CLI (`gh auth login`), then commit, push, and run `gh pr create` (or rerun `kynver worker complete` after the PR exists)."}}let i=Vg(n.worktreePath,r);if(!i)return{ok:!1,reason:"PR-ready handoff blocked: could not resolve github.com origin for the worktree",nextAction:"Ensure `origin` points at GitHub, push the branch, open a PR, and rerun `kynver worker complete`."};let a=e.worker.repairTargetPrUrl?.trim();if(a){let h=!1,w=!1,E=n.headCommit??St(n.worktreePath,r)??void 0;if(n.changedFiles.length>0){let S=vo({worktreePath:n.worktreePath,branch:n.branch,commitMessage:`fix(harness): repair target PR ${a}`,taskId:Xr(e.worker.taskId),hasDirtyFiles:!0,exec:r});if(!S.ok)return{ok:!1,reason:`PR-ready handoff blocked: ${S.detail??"git commit/push failed"}`,nextAction:"Commit and push to the target PR branch, then rerun `kynver worker complete`."};h=S.committed,w=S.pushed,E=S.headCommit??E}else{let S=r.git(n.worktreePath,["push","-u","origin",n.branch]);if(S.status!==0&&!/already up to date/i.test(S.stderr||S.stdout))return{ok:!1,reason:`PR-ready handoff blocked: ${S.stderr||S.stdout||"git push failed"}`,nextAction:"Push the target branch to origin, then rerun `kynver worker complete`."};w=S.status===0}return{ok:!0,prUrl:a,headCommit:E,committed:h,pushed:w}}let l=Xr(e.worker.taskId),c=[];if(l){c=zl(n.worktreePath,i,l,r);let h=zg(c);if(h){let w=aA({snapshot:n,canonical:h,workerName:e.worker.name,taskId:l,exec:r});return w.ok&&w.prUrl&&Xl({worktreePath:n.worktreePath,repo:i,rows:c,canonicalPrUrl:w.prUrl,exec:r}),w}}let u=mi(n.worktreePath,i,n.branch,r);if(u)return Ql({snapshot:n,prUrl:u,commitMessage:`chore(harness): update PR handoff for ${e.worker.name}`,taskId:Xr(e.worker.taskId),exec:r});let d=n.changedFiles.length>0,p=!1,m=!1,f=n.headCommit??void 0,y=vo({worktreePath:n.worktreePath,branch:n.branch,commitMessage:`chore(harness): PR-ready handoff for ${e.worker.name}`,taskId:Xr(e.worker.taskId),hasDirtyFiles:d,exec:r});if(d&&!y.ok)return{ok:!1,reason:`PR-ready handoff blocked: ${y.detail??"git commit/push failed"}`,nextAction:"Commit and push the branch, run `gh pr create`, then rerun `kynver worker complete`."};if(d){if(p=y.committed,m=y.pushed,!y.ok)return{ok:!1,reason:`PR-ready handoff blocked: ${y.detail??"git push failed"}`,nextAction:"Fix git auth or merge conflicts, push the branch, run `gh pr create`, then rerun `kynver worker complete`."}}else{let h=r.git(n.worktreePath,["push","-u","origin",n.branch]);if(h.status!==0&&!/already up to date/i.test(h.stderr||h.stdout))return{ok:!1,reason:`PR-ready handoff blocked: ${h.stderr||h.stdout||h.error||"git push failed"}`,nextAction:"Push the branch to origin, run `gh pr create`, then rerun `kynver worker complete`."};m=h.status===0}f=y.headCommit??f??St(n.worktreePath,r)??void 0;let k=f?Zg(n.worktreePath,i,f,r):null;if(k)return{ok:!0,prUrl:k.prUrl,headCommit:f,committed:p,pushed:m,created:!1};let b=e.run.base?.trim()||"main",g=Yg({worktreePath:n.worktreePath,repo:i,branch:n.branch,base:b.replace(/^origin\//,""),title:oA(e.worker.name,e.worker.runId),body:sA(e.worker.taskId,e.worker.name,e.worker.runId),exec:r});if(!g.ok||!g.prUrl){if(Lg(g.detail))return{ok:!0,headCommit:f??void 0,committed:p,pushed:m};let h=n.changedFiles.length;return{ok:!1,reason:`PR-ready handoff blocked: ${h?`${h} uncommitted change(s) and no PR URL after handoff attempt`:"no PR URL after handoff attempt"}${g.detail?` (${g.detail})`:""}`,nextAction:"Run `gh pr create` on the worker branch (or fix `gh` auth), attach the PR URL to the task, then rerun `kynver worker complete`."}}if(l&&g.prUrl){let w=[...c.length>0?c:zl(n.worktreePath,i,l,r),{url:g.prUrl,number:Number.parseInt(g.prUrl.match(/\/pull\/(\d+)/)?.[1]??"",10)||0,headRefName:n.branch,createdAt:""}];Xl({worktreePath:n.worktreePath,repo:i,rows:w,canonicalPrUrl:g.prUrl,exec:r})}return{ok:!0,prUrl:g.prUrl,headCommit:f??void 0,committed:p,pushed:m,created:g.created}}fe();pt();Ia();B();fe();O();import YA from"node:path";O();import lA from"node:path";var So=new Map,ec=new Map;function rc(e){clearInterval(ec.get(e)),ec.delete(e)}function tc(e,r){if(rc(e),!So.has(e))return;let t=setInterval(()=>{(I(lA.join(e,"worker.json"),null)?.completionReportedAt||!Y(r))&&ln(e)},1e3);t.unref(),ec.set(e,t)}function nc(e,r){rc(e);let t=So.get(e);t&&t.close(),So.set(e,r)}async function Qr(e){rc(e);let r=So.get(e);return r?(So.delete(e),await r.close(),!0):!1}function ln(e){Qr(e).catch(()=>{})}de();import{appendFileSync as cA,existsSync as rh,mkdirSync as th,readFileSync as uA,rmSync as eh,writeFileSync as dA}from"node:fs";import Mr from"node:path";var nh=Mr.join(".cursor","mcp.json");function oh(e){return Mr.join(e,nh)}function pA(e){return Z(e,["ls-files","--error-unmatch",nh.split(Mr.sep).join("/")],{allowFailure:!0}).trim().length>0}function mA(e){let r=Z(e,["rev-parse","--git-common-dir"],{allowFailure:!0}).trim();if(!r)return;let t=Mr.isAbsolute(r)?r:Mr.join(e,r),n=Mr.join(t,"info","exclude"),o=".cursor/mcp.json";try{th(Mr.dirname(n),{recursive:!0});let s=rh(n)?uA(n,"utf8"):"";if(s.split(/\r?\n/).some(i=>i.trim()===o))return;cA(n,`${s.endsWith(`
101
101
  `)||!s?"":`
102
102
  `}${o}
103
- `)}catch{}}function sh(e){if(pA(e.worktreePath))return{ok:!1,reason:"repo_owns_config",detail:"the repository tracks .cursor/mcp.json \u2014 refusing to modify a tracked file in the worker's worktree"};let r=oh(e.worktreePath);th(Dr.dirname(r),{recursive:!0});let t={mcpServers:{[oe]:{command:"npx",args:["-y","-p","@kynver-app/mcp-agent-os","kynver-worker-mcp"],env:{[rr]:e.brokerSocketPath}}}};return dA(r,`${JSON.stringify(t,null,2)}
104
- `,{mode:384}),mA(e.worktreePath),{ok:!0,configPath:r}}function gi(e){let r=oh(e);if(!rh(r))return!1;try{eh(r,{force:!0});let t=Dr.dirname(r);return eh(t,{recursive:!1}),!0}catch{return!0}}vr();import{copyFileSync as fA,existsSync as hi,mkdirSync as gA,readFileSync as hA,rmSync as kA,symlinkSync as yA,writeFileSync as RA}from"node:fs";import{spawnSync as vA}from"node:child_process";import{homedir as bA}from"node:os";import Qr from"node:path";var SA="codex-home";function ih(e){return Qr.join(e,SA)}function wA(e=process.env){let r=e.CODEX_HOME?.trim();if(r)return Qr.resolve(r);let t=bA();for(let n of[Qr.join(t,".codex"),Qr.join(t,".config","codex")])if(hi(n))return n;return null}function xA(e){return["","# Added per task by the Kynver harness. Carries a broker socket path, never a credential.",`[mcp_servers.${oe}]`,'command = "npx"','args = ["-y", "-p", "@kynver-app/mcp-agent-os", "kynver-worker-mcp"]',"",`[mcp_servers.${oe}.env]`,`${rr} = ${JSON.stringify(e)}`,""].join(`
105
- `)}function _A(e){return new RegExp(String.raw`^\s*\[\s*mcp_servers\s*\.\s*"?${oe}"?\s*[\].]`,"m").test(e)}function ah(e){let r=wA(e.env??process.env),t=r?Qr.join(r,"config.toml"):null,n=t&&hi(t)?hA(t,"utf8"):"";if(n&&_A(n))return{ok:!1,reason:"user_config_owns_server",detail:`the Codex config already declares an "${oe}" MCP server \u2014 refusing to write a duplicate stanza`};let o=ih(e.workerDir);gA(o,{recursive:!0,mode:448});let s=!n||n.endsWith(`
103
+ `)}catch{}}function sh(e){if(pA(e.worktreePath))return{ok:!1,reason:"repo_owns_config",detail:"the repository tracks .cursor/mcp.json \u2014 refusing to modify a tracked file in the worker's worktree"};let r=oh(e.worktreePath);th(Mr.dirname(r),{recursive:!0});let t={mcpServers:{[oe]:{command:"npx",args:["-y","-p","@kynver-app/mcp-agent-os","kynver-worker-mcp"],env:{[rr]:e.brokerSocketPath}}}};return dA(r,`${JSON.stringify(t,null,2)}
104
+ `,{mode:384}),mA(e.worktreePath),{ok:!0,configPath:r}}function gi(e){let r=oh(e);if(!rh(r))return!1;try{eh(r,{force:!0});let t=Mr.dirname(r);return eh(t,{recursive:!1}),!0}catch{return!0}}br();import{copyFileSync as fA,existsSync as hi,mkdirSync as gA,readFileSync as hA,rmSync as kA,symlinkSync as yA,writeFileSync as RA}from"node:fs";import{spawnSync as vA}from"node:child_process";import{homedir as bA}from"node:os";import Zr from"node:path";var SA="codex-home";function ih(e){return Zr.join(e,SA)}function wA(e=process.env){let r=e.CODEX_HOME?.trim();if(r)return Zr.resolve(r);let t=bA();for(let n of[Zr.join(t,".codex"),Zr.join(t,".config","codex")])if(hi(n))return n;return null}function xA(e){return["","# Added per task by the Kynver harness. Carries a broker socket path, never a credential.",`[mcp_servers.${oe}]`,'command = "npx"','args = ["-y", "-p", "@kynver-app/mcp-agent-os", "kynver-worker-mcp"]',"",`[mcp_servers.${oe}.env]`,`${rr} = ${JSON.stringify(e)}`,""].join(`
105
+ `)}function _A(e){return new RegExp(String.raw`^\s*\[\s*mcp_servers\s*\.\s*"?${oe}"?\s*[\].]`,"m").test(e)}function ah(e){let r=wA(e.env??process.env),t=r?Zr.join(r,"config.toml"):null,n=t&&hi(t)?hA(t,"utf8"):"";if(n&&_A(n))return{ok:!1,reason:"user_config_owns_server",detail:`the Codex config already declares an "${oe}" MCP server \u2014 refusing to write a duplicate stanza`};let o=ih(e.workerDir);gA(o,{recursive:!0,mode:448});let s=!n||n.endsWith(`
106
106
  `)?"":`
107
- `;return RA(Qr.join(o,"config.toml"),`${n}${s}${xA(e.brokerSocketPath)}`,{mode:384}),{ok:!0,codexHome:o,authMode:EA(r,o)}}function EA(e,r){let t=e?Qr.join(e,"auth.json"):null;if(!t||!hi(t))return"none";let n=Qr.join(r,"auth.json");try{return yA(t,n,"file"),"symlink"}catch{try{return fA(t,n),"copy"}catch{return"none"}}}function So(e){let r=ih(e);if(!hi(r))return!1;try{return kA(r,{recursive:!0,force:!0}),!0}catch{return!1}}function lh(e,r,t=1e4){try{let[n,o]=pe(r,["--version"]),s=vA(n,o,{env:{...process.env,CODEX_HOME:e},encoding:"utf8",timeout:t,windowsHide:!0});return s.error&&s.error.code==="ENOENT"?{ok:!0}:s.status===0?{ok:!0}:{ok:!1,detail:(s.stderr||s.stdout||`exit ${s.status??"unknown"}`).toString().replace(/\s+/g," ").trim().slice(0,200)}}catch{return{ok:!0}}}de();import{appendFileSync as CA,existsSync as oc,mkdirSync as uh,readFileSync as dh,rmSync as ch,writeFileSync as PA}from"node:fs";import Mr from"node:path";var ph=Mr.join(".agents","mcp_config.json");function mh(e){return Mr.join(e,ph)}function AA(e){return Z(e,["ls-files","--error-unmatch",ph.split(Mr.sep).join("/")],{allowFailure:!0}).trim().length>0}function IA(e){if(!oc(e))return{};try{let r=JSON.parse(dh(e,"utf8"));if(!r||typeof r!="object"||Array.isArray(r))return{};let t=r.mcpServers;return!t||typeof t!="object"||Array.isArray(t)?{}:t}catch{return{}}}function OA(e){let r=Z(e,["rev-parse","--git-common-dir"],{allowFailure:!0}).trim();if(!r)return;let t=Mr.isAbsolute(r)?r:Mr.join(e,r),n=Mr.join(t,"info","exclude"),o=".agents/mcp_config.json";try{uh(Mr.dirname(n),{recursive:!0});let s=oc(n)?dh(n,"utf8"):"";if(s.split(/\r?\n/).some(i=>i.trim()===o))return;CA(n,`${s.endsWith(`
107
+ `;return RA(Zr.join(o,"config.toml"),`${n}${s}${xA(e.brokerSocketPath)}`,{mode:384}),{ok:!0,codexHome:o,authMode:EA(r,o)}}function EA(e,r){let t=e?Zr.join(e,"auth.json"):null;if(!t||!hi(t))return"none";let n=Zr.join(r,"auth.json");try{return yA(t,n,"file"),"symlink"}catch{try{return fA(t,n),"copy"}catch{return"none"}}}function wo(e){let r=ih(e);if(!hi(r))return!1;try{return kA(r,{recursive:!0,force:!0}),!0}catch{return!1}}function lh(e,r,t=1e4){try{let[n,o]=pe(r,["--version"]),s=vA(n,o,{env:{...process.env,CODEX_HOME:e},encoding:"utf8",timeout:t,windowsHide:!0});return s.error&&s.error.code==="ENOENT"?{ok:!0}:s.status===0?{ok:!0}:{ok:!1,detail:(s.stderr||s.stdout||`exit ${s.status??"unknown"}`).toString().replace(/\s+/g," ").trim().slice(0,200)}}catch{return{ok:!0}}}de();import{appendFileSync as CA,existsSync as oc,mkdirSync as uh,readFileSync as dh,rmSync as ch,writeFileSync as PA}from"node:fs";import Wr from"node:path";var ph=Wr.join(".agents","mcp_config.json");function mh(e){return Wr.join(e,ph)}function AA(e){return Z(e,["ls-files","--error-unmatch",ph.split(Wr.sep).join("/")],{allowFailure:!0}).trim().length>0}function IA(e){if(!oc(e))return{};try{let r=JSON.parse(dh(e,"utf8"));if(!r||typeof r!="object"||Array.isArray(r))return{};let t=r.mcpServers;return!t||typeof t!="object"||Array.isArray(t)?{}:t}catch{return{}}}function OA(e){let r=Z(e,["rev-parse","--git-common-dir"],{allowFailure:!0}).trim();if(!r)return;let t=Wr.isAbsolute(r)?r:Wr.join(e,r),n=Wr.join(t,"info","exclude"),o=".agents/mcp_config.json";try{uh(Wr.dirname(n),{recursive:!0});let s=oc(n)?dh(n,"utf8"):"";if(s.split(/\r?\n/).some(i=>i.trim()===o))return;CA(n,`${s.endsWith(`
108
108
  `)||!s?"":`
109
109
  `}${o}
110
- `)}catch{}}function fh(e){if(AA(e.worktreePath))return{ok:!1,reason:"repo_owns_config",detail:"the repository tracks .agents/mcp_config.json \u2014 refusing to modify a tracked file in the worker's worktree"};let r=mh(e.worktreePath),t=IA(r);if(oe in t)return{ok:!1,reason:"user_config_owns_server",detail:`the workspace MCP config already declares an "${oe}" server \u2014 refusing to overwrite it`};uh(Mr.dirname(r),{recursive:!0});let n={mcpServers:{...t,[oe]:{command:"npx",args:["-y","-p","@kynver-app/mcp-agent-os","kynver-worker-mcp"],env:{[rr]:e.brokerSocketPath}}}};return PA(r,`${JSON.stringify(n,null,2)}
111
- `,{mode:384}),OA(e.worktreePath),{ok:!0,configPath:r}}function ki(e){let r=mh(e);if(!oc(r))return!1;try{return ch(r,{force:!0}),ch(Mr.dirname(r),{recursive:!1}),!0}catch{return!0}}import{copyFileSync as TA,existsSync as sc,mkdirSync as NA,readFileSync as DA,rmSync as MA,symlinkSync as WA,writeFileSync as LA}from"node:fs";import{homedir as BA}from"node:os";import Wr from"node:path";var UA="gemini-home";function gh(e){return Wr.join(e,UA)}function FA(e){return e.HOME?.trim()||e.USERPROFILE?.trim()||BA()}function KA(e=process.env){let r=e.GEMINI_CLI_HOME?.trim();return r?Wr.join(Wr.resolve(r),".gemini"):Wr.join(FA(e),".gemini")}function HA(e){if(!sc(e))return{};try{let r=JSON.parse(DA(e,"utf8"));return r&&typeof r=="object"&&!Array.isArray(r)?r:{}}catch{return{}}}function $A(e){let r=e.mcpServers;return!r||typeof r!="object"||Array.isArray(r)?!1:oe in r}function jA(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:{}}function VA(e){return{command:"npx",args:["-y","-p","@kynver-app/mcp-agent-os","kynver-worker-mcp"],env:{[rr]:e},trust:!0}}function hh(e){let r=e.env??process.env,t=KA(r),n=HA(Wr.join(t,"settings.json"));if($A(n))return{ok:!1,reason:"user_config_owns_server",detail:`the Gemini CLI settings already declare an "${oe}" MCP server \u2014 refusing to write a duplicate stanza`};let o=gh(e.workerDir),s=Wr.join(o,".gemini");NA(s,{recursive:!0,mode:448});let i=n.mcpServers&&typeof n.mcpServers=="object"&&!Array.isArray(n.mcpServers)?n.mcpServers:{},a={...n,mcp:{...jA(n.mcp),autoAllowInHeadless:!0},mcpServers:{...i,[oe]:VA(e.brokerSocketPath)}};return LA(Wr.join(s,"settings.json"),`${JSON.stringify(a,null,2)}
112
- `,{mode:384}),{ok:!0,geminiCliHome:o,authMode:GA(t,s)}}function GA(e,r){let t=["oauth_creds.json","google_accounts.json"],n="none";for(let o of t){let s=Wr.join(e,o);if(!sc(s))continue;let i=Wr.join(r,o);try{WA(s,i,"file"),n==="none"&&(n="symlink")}catch{try{TA(s,i),n="copy"}catch{}}}return n}function yi(e){let r=gh(e);if(!sc(r))return!1;try{return MA(r,{recursive:!0,force:!0}),!0}catch{return!1}}var qA=new Set(["awaiting_review","blocked","done","needs_input","waiting","scheduled","ready","cancelled","failed"]);function kh(e){return!!(typeof e.completionReportedAt=="string"&&e.completionReportedAt.trim())}function JA(e){if(typeof e=="string"){let r=e.trim();return r.length?r:null}if(e&&typeof e=="object"&&!Array.isArray(e)){let r=e,t=r.summary??r.finalSummary??r.message;if(typeof t=="string"&&t.trim())return t.trim();try{return JSON.stringify(e)}catch{return null}}return null}function Zr(e){let r=e.finalResult??null,t=typeof e.lastHeartbeatSummary=="string"?e.lastHeartbeatSummary:JA(r);return{finalResult:r??t??"completed",summary:t}}function Ri(e,r,t){if(kh(e)&&e.status==="done"&&e.completionSnapshot!=null)return;let n=new Date().toISOString(),o=Zr(r),s=t?.source?.trim();e.completionReportedAt=n,e.completionSnapshot=o,e.status="done",s&&(e.completionAckSource=s),L(e.runId,e),e.workerDir&&(an(e.workerDir),Js(e.workerDir),So(e.workerDir),yi(e.workerDir)),e.worktreePath&&(gi(e.worktreePath),ki(e.worktreePath))}function zA(e){let r=new Map,n=e.response?.tick?.filteredItems;if(!Array.isArray(n))return r;for(let o of n){if(o.kind!=="task"||typeof o.id!="string")continue;let s=typeof o.taskStatus=="string"?o.taskStatus.trim():"";s&&r.set(o.id,s)}return r}function yh(e,r,t={}){let n=zA(r);if(n.size===0)return[];let o=q(e),s=[];for(let i of Object.keys(o.workers||{})){let a=I(YA.join(N(o.id),"workers",x(i),"worker.json"),void 0);if(!a?.taskId||kh(a))continue;let l=n.get(a.taskId);if(!l||l==="running"||!qA.has(l))continue;let c=J(a,{base:o.base,baseCommit:o.baseCommit}),u;if(l==="cancelled"){let d=Gl(o.id,a,"board_task_cancelled","board task cancelled",t);u=!!(d.workerSignal||d.sidecarSignal)}Ri(a,c,{source:`board-task-${l}`}),s.push({worker:i,taskId:a.taskId,taskStatus:l,...u?{stopped:u}:{}})}return s}Hn();function vi(e){return e==null?!1:typeof e=="string"?e.trim().length>0:typeof e=="object"&&!Array.isArray(e)?Object.keys(e).length>0:!0}function XA(e){let r=e.lastHeartbeatPhase?.trim();if(!r||r==="complete")return null;let t=e.lastHeartbeatSummary?.trim();return t?{summary:t,handoffState:"exited_without_complete_heartbeat",lastHeartbeatPhase:r,...e.heartbeatBlocker?{blocker:e.heartbeatBlocker}:{}}:null}function QA(e){let r=$n(e);return r?{summary:r.reason,handoffState:"exit_failure",blocked:r.blocked}:null}function ZA(e){let r=e.status.attention.reason?.trim()||e.status.error?.trim()||"process exited without a final result";return{summary:`Worker exited with an error: ${r}`,handoffState:"exited_without_final_result",blocked:!0,attentionState:e.status.attention.state,attentionReason:r,...e.heartbeat.lastHeartbeatPhase?{lastHeartbeatPhase:e.heartbeat.lastHeartbeatPhase}:{},...e.heartbeat.lastHeartbeatSummary?{lastHeartbeatSummary:e.heartbeat.lastHeartbeatSummary}:{},...e.heartbeat.heartbeatBlocker?{blocker:e.heartbeat.heartbeatBlocker}:{}}}function bi(e){let{worker:r,status:t}=e;if(vi(t.finalResult)){let u=me(r.heartbeatPath),d=wr(u),p=vi(d)&&JSON.stringify(d)===JSON.stringify(t.finalResult)?"heartbeat_complete":"stdout_stream";return{finalResult:t.finalResult,source:p,snapshot:Zr(t)}}if(t.alive)return null;let n=mt(r.stdoutPath);if(vi(n.finalResult)){let u={...t,finalResult:n.finalResult};return{finalResult:n.finalResult,source:"stdout_stream",snapshot:Zr(u)}}let o=me(r.heartbeatPath),s=wr(o);if(vi(s)){let u={...t,finalResult:s,lastHeartbeatPhase:o.lastHeartbeatPhase,lastHeartbeatSummary:o.lastHeartbeatSummary};return{finalResult:s,source:"heartbeat_complete",snapshot:Zr(u)}}let i=QA(t.error??n.error);if(i){let u={...t,finalResult:i};return{finalResult:i,source:"exit_failure",snapshot:Zr(u)}}let a=XA(o);if(a){let u={...t,finalResult:a,lastHeartbeatPhase:o.lastHeartbeatPhase,lastHeartbeatSummary:o.lastHeartbeatSummary};return{finalResult:a,source:"heartbeat_summary",snapshot:Zr(u)}}let l=ZA({status:t,heartbeat:o}),c={...t,finalResult:l,lastHeartbeatPhase:o.lastHeartbeatPhase,lastHeartbeatSummary:o.lastHeartbeatSummary};return{finalResult:l,source:"exit_no_final_result",snapshot:Zr(c)}}function Si(e,r){return e.completionSnapshot?.finalResult!=null?!1:(e.completionSnapshot=r.snapshot,e.completionHandoffSource=r.source,!0)}Hn();function wi(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 n!=="node_modules"&&!n.startsWith("node_modules/")})}function Rh(e){let r=e.trim();return r.startsWith("??")?r.slice(2).trim():r.length>3&&/^[ MADRCU?!]{2} /.test(r.slice(0,3))?r.slice(3).trim():r}function vh(e){return Array.isArray(e)?e.map(r=>typeof r=="string"?r.trim():"").filter(Boolean):[]}function bh(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function wh(e){let r=bh(e);if(!r)return[];let t=bh(r.worktreeHandoff),n=vh(t?.disposableArtifactsRemoved);return n.length?n:vh(r.disposableArtifactsRemoved)}function Sh(e){return e.replace(/\\/g,"/").replace(/^\.\//,"").replace(/\/+$/,"")}function xh(e,r){let t=wi(e);if(t.length===0)return!0;if(r.length===0)return!1;let n=new Set(r.map(o=>Sh(o)));return t.every(o=>{let s=Sh(Rh(o));return n.has(s)})}function xi(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function _h(e){return Array.isArray(e)?e.map(r=>typeof r=="string"?r.trim():"").filter(Boolean):[]}function eI(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 rI(e){let r=_h(e.disposableArtifactsRemoved),t=wh(e.finalResult);return[...new Set([...r,...t])]}function Eh(e){let r=_h(e.changedFiles),t=wi(r),n=rI(e),o=t.length===0||xh(r,n);return xi(e.prUrl)?o?{allowed:!0,state:"pr_handoff",materialDirtyCount:0}:{allowed:!1,state:"dirty_worktree",materialDirtyCount:t.length,detail:`Worktree has ${t.length} uncommitted change(s) with a PR attached; commit or discard before completing`}:xi(e.headCommit)?o?{allowed:!0,state:"commit_handoff",materialDirtyCount:0}:{allowed:!1,state:"dirty_worktree",materialDirtyCount:t.length,detail:`Worktree has ${t.length} uncommitted change(s) on top of a commit; commit or discard before completing`}:xi(e.artifactBundlePath)||xi(e.patchPath)?o?{allowed:!0,state:"commit_handoff",materialDirtyCount:0}:{allowed:!1,state:"dirty_worktree",materialDirtyCount:t.length,detail:`Worktree has ${t.length} uncommitted change(s) with a patch/bundle handoff; clean the tree before completing`}:o?{allowed:!0,state:"clean",materialDirtyCount:0}:eI(e.finalResult)?{allowed:!1,state:"dirty_worktree_no_pr",materialDirtyCount:t.length,detail:`Worktree has ${t.length} uncommitted change(s) with no commit or PR; commit, open a PR, discard, or remove one-off files via \`kynver worker discard-disposable\` before completing`}:{allowed:!1,state:"dirty_worktree",materialDirtyCount:t.length,detail:`Worktree has ${t.length} uncommitted change(s) with no final result`}}Ze();import{existsSync as vI,renameSync as bI}from"node:fs";import{mkdirSync as gI}from"node:fs";import hI from"node:path";import{DatabaseSync as kI}from"node:sqlite";var ic=class extends Error{constructor(r,t){super(`local-run-store schema version ${r} is newer than this runtime supports (${t}); refusing to open. Upgrade the runtime or quarantine the database deliberately.`),this.name="SchemaDowngradeRefusedError"}},tI=[`CREATE TABLE IF NOT EXISTS local_meta (
110
+ `)}catch{}}function fh(e){if(AA(e.worktreePath))return{ok:!1,reason:"repo_owns_config",detail:"the repository tracks .agents/mcp_config.json \u2014 refusing to modify a tracked file in the worker's worktree"};let r=mh(e.worktreePath),t=IA(r);if(oe in t)return{ok:!1,reason:"user_config_owns_server",detail:`the workspace MCP config already declares an "${oe}" server \u2014 refusing to overwrite it`};uh(Wr.dirname(r),{recursive:!0});let n={mcpServers:{...t,[oe]:{command:"npx",args:["-y","-p","@kynver-app/mcp-agent-os","kynver-worker-mcp"],env:{[rr]:e.brokerSocketPath}}}};return PA(r,`${JSON.stringify(n,null,2)}
111
+ `,{mode:384}),OA(e.worktreePath),{ok:!0,configPath:r}}function ki(e){let r=mh(e);if(!oc(r))return!1;try{return ch(r,{force:!0}),ch(Wr.dirname(r),{recursive:!1}),!0}catch{return!0}}import{copyFileSync as TA,existsSync as sc,mkdirSync as NA,readFileSync as DA,rmSync as MA,symlinkSync as WA,writeFileSync as LA}from"node:fs";import{homedir as BA}from"node:os";import Lr from"node:path";var UA="gemini-home";function gh(e){return Lr.join(e,UA)}function FA(e){return e.HOME?.trim()||e.USERPROFILE?.trim()||BA()}function KA(e=process.env){let r=e.GEMINI_CLI_HOME?.trim();return r?Lr.join(Lr.resolve(r),".gemini"):Lr.join(FA(e),".gemini")}function HA(e){if(!sc(e))return{};try{let r=JSON.parse(DA(e,"utf8"));return r&&typeof r=="object"&&!Array.isArray(r)?r:{}}catch{return{}}}function $A(e){let r=e.mcpServers;return!r||typeof r!="object"||Array.isArray(r)?!1:oe in r}function jA(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:{}}function VA(e){return{command:"npx",args:["-y","-p","@kynver-app/mcp-agent-os","kynver-worker-mcp"],env:{[rr]:e},trust:!0}}function hh(e){let r=e.env??process.env,t=KA(r),n=HA(Lr.join(t,"settings.json"));if($A(n))return{ok:!1,reason:"user_config_owns_server",detail:`the Gemini CLI settings already declare an "${oe}" MCP server \u2014 refusing to write a duplicate stanza`};let o=gh(e.workerDir),s=Lr.join(o,".gemini");NA(s,{recursive:!0,mode:448});let i=n.mcpServers&&typeof n.mcpServers=="object"&&!Array.isArray(n.mcpServers)?n.mcpServers:{},a={...n,mcp:{...jA(n.mcp),autoAllowInHeadless:!0},mcpServers:{...i,[oe]:VA(e.brokerSocketPath)}};return LA(Lr.join(s,"settings.json"),`${JSON.stringify(a,null,2)}
112
+ `,{mode:384}),{ok:!0,geminiCliHome:o,authMode:GA(t,s)}}function GA(e,r){let t=["oauth_creds.json","google_accounts.json"],n="none";for(let o of t){let s=Lr.join(e,o);if(!sc(s))continue;let i=Lr.join(r,o);try{WA(s,i,"file"),n==="none"&&(n="symlink")}catch{try{TA(s,i),n="copy"}catch{}}}return n}function yi(e){let r=gh(e);if(!sc(r))return!1;try{return MA(r,{recursive:!0,force:!0}),!0}catch{return!1}}var qA=new Set(["awaiting_review","blocked","done","needs_input","waiting","scheduled","ready","cancelled","failed"]);function kh(e){return!!(typeof e.completionReportedAt=="string"&&e.completionReportedAt.trim())}function JA(e){if(typeof e=="string"){let r=e.trim();return r.length?r:null}if(e&&typeof e=="object"&&!Array.isArray(e)){let r=e,t=r.summary??r.finalSummary??r.message;if(typeof t=="string"&&t.trim())return t.trim();try{return JSON.stringify(e)}catch{return null}}return null}function et(e){let r=e.finalResult??null,t=typeof e.lastHeartbeatSummary=="string"?e.lastHeartbeatSummary:JA(r);return{finalResult:r??t??"completed",summary:t}}function Ri(e,r,t){if(kh(e)&&e.status==="done"&&e.completionSnapshot!=null)return;let n=new Date().toISOString(),o=et(r),s=t?.source?.trim();e.completionReportedAt=n,e.completionSnapshot=o,e.status="done",s&&(e.completionAckSource=s),L(e.runId,e),e.workerDir&&(ln(e.workerDir),Js(e.workerDir),wo(e.workerDir),yi(e.workerDir)),e.worktreePath&&(gi(e.worktreePath),ki(e.worktreePath))}function zA(e){let r=new Map,n=e.response?.tick?.filteredItems;if(!Array.isArray(n))return r;for(let o of n){if(o.kind!=="task"||typeof o.id!="string")continue;let s=typeof o.taskStatus=="string"?o.taskStatus.trim():"";s&&r.set(o.id,s)}return r}function yh(e,r,t={}){let n=zA(r);if(n.size===0)return[];let o=q(e),s=[];for(let i of Object.keys(o.workers||{})){let a=I(YA.join(N(o.id),"workers",x(i),"worker.json"),void 0);if(!a?.taskId||kh(a))continue;let l=n.get(a.taskId);if(!l||l==="running"||!qA.has(l))continue;let c=J(a,{base:o.base,baseCommit:o.baseCommit}),u;if(l==="cancelled"){let d=Gl(o.id,a,"board_task_cancelled","board task cancelled",t);u=!!(d.workerSignal||d.sidecarSignal)}Ri(a,c,{source:`board-task-${l}`}),s.push({worker:i,taskId:a.taskId,taskStatus:l,...u?{stopped:u}:{}})}return s}$n();function vi(e){return e==null?!1:typeof e=="string"?e.trim().length>0:typeof e=="object"&&!Array.isArray(e)?Object.keys(e).length>0:!0}function XA(e){let r=e.lastHeartbeatPhase?.trim();if(!r||r==="complete")return null;let t=e.lastHeartbeatSummary?.trim();return t?{summary:t,handoffState:"exited_without_complete_heartbeat",lastHeartbeatPhase:r,...e.heartbeatBlocker?{blocker:e.heartbeatBlocker}:{}}:null}function QA(e){let r=jn(e);return r?{summary:r.reason,handoffState:"exit_failure",blocked:r.blocked}:null}function ZA(e){let r=e.status.attention.reason?.trim()||e.status.error?.trim()||"process exited without a final result";return{summary:`Worker exited with an error: ${r}`,handoffState:"exited_without_final_result",blocked:!0,attentionState:e.status.attention.state,attentionReason:r,...e.heartbeat.lastHeartbeatPhase?{lastHeartbeatPhase:e.heartbeat.lastHeartbeatPhase}:{},...e.heartbeat.lastHeartbeatSummary?{lastHeartbeatSummary:e.heartbeat.lastHeartbeatSummary}:{},...e.heartbeat.heartbeatBlocker?{blocker:e.heartbeat.heartbeatBlocker}:{}}}function bi(e){let{worker:r,status:t}=e;if(vi(t.finalResult)){let u=me(r.heartbeatPath),d=xr(u),p=vi(d)&&JSON.stringify(d)===JSON.stringify(t.finalResult)?"heartbeat_complete":"stdout_stream";return{finalResult:t.finalResult,source:p,snapshot:et(t)}}if(t.alive)return null;let n=ft(r.stdoutPath);if(vi(n.finalResult)){let u={...t,finalResult:n.finalResult};return{finalResult:n.finalResult,source:"stdout_stream",snapshot:et(u)}}let o=me(r.heartbeatPath),s=xr(o);if(vi(s)){let u={...t,finalResult:s,lastHeartbeatPhase:o.lastHeartbeatPhase,lastHeartbeatSummary:o.lastHeartbeatSummary};return{finalResult:s,source:"heartbeat_complete",snapshot:et(u)}}let i=QA(t.error??n.error);if(i){let u={...t,finalResult:i};return{finalResult:i,source:"exit_failure",snapshot:et(u)}}let a=XA(o);if(a){let u={...t,finalResult:a,lastHeartbeatPhase:o.lastHeartbeatPhase,lastHeartbeatSummary:o.lastHeartbeatSummary};return{finalResult:a,source:"heartbeat_summary",snapshot:et(u)}}let l=ZA({status:t,heartbeat:o}),c={...t,finalResult:l,lastHeartbeatPhase:o.lastHeartbeatPhase,lastHeartbeatSummary:o.lastHeartbeatSummary};return{finalResult:l,source:"exit_no_final_result",snapshot:et(c)}}function Si(e,r){return e.completionSnapshot?.finalResult!=null?!1:(e.completionSnapshot=r.snapshot,e.completionHandoffSource=r.source,!0)}$n();function wi(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 n!=="node_modules"&&!n.startsWith("node_modules/")})}function Rh(e){let r=e.trim();return r.startsWith("??")?r.slice(2).trim():r.length>3&&/^[ MADRCU?!]{2} /.test(r.slice(0,3))?r.slice(3).trim():r}function vh(e){return Array.isArray(e)?e.map(r=>typeof r=="string"?r.trim():"").filter(Boolean):[]}function bh(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function wh(e){let r=bh(e);if(!r)return[];let t=bh(r.worktreeHandoff),n=vh(t?.disposableArtifactsRemoved);return n.length?n:vh(r.disposableArtifactsRemoved)}function Sh(e){return e.replace(/\\/g,"/").replace(/^\.\//,"").replace(/\/+$/,"")}function xh(e,r){let t=wi(e);if(t.length===0)return!0;if(r.length===0)return!1;let n=new Set(r.map(o=>Sh(o)));return t.every(o=>{let s=Sh(Rh(o));return n.has(s)})}function xi(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function _h(e){return Array.isArray(e)?e.map(r=>typeof r=="string"?r.trim():"").filter(Boolean):[]}function eI(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 rI(e){let r=_h(e.disposableArtifactsRemoved),t=wh(e.finalResult);return[...new Set([...r,...t])]}function Eh(e){let r=_h(e.changedFiles),t=wi(r),n=rI(e),o=t.length===0||xh(r,n);return xi(e.prUrl)?o?{allowed:!0,state:"pr_handoff",materialDirtyCount:0}:{allowed:!1,state:"dirty_worktree",materialDirtyCount:t.length,detail:`Worktree has ${t.length} uncommitted change(s) with a PR attached; commit or discard before completing`}:xi(e.headCommit)?o?{allowed:!0,state:"commit_handoff",materialDirtyCount:0}:{allowed:!1,state:"dirty_worktree",materialDirtyCount:t.length,detail:`Worktree has ${t.length} uncommitted change(s) on top of a commit; commit or discard before completing`}:xi(e.artifactBundlePath)||xi(e.patchPath)?o?{allowed:!0,state:"commit_handoff",materialDirtyCount:0}:{allowed:!1,state:"dirty_worktree",materialDirtyCount:t.length,detail:`Worktree has ${t.length} uncommitted change(s) with a patch/bundle handoff; clean the tree before completing`}:o?{allowed:!0,state:"clean",materialDirtyCount:0}:eI(e.finalResult)?{allowed:!1,state:"dirty_worktree_no_pr",materialDirtyCount:t.length,detail:`Worktree has ${t.length} uncommitted change(s) with no commit or PR; commit, open a PR, discard, or remove one-off files via \`kynver worker discard-disposable\` before completing`}:{allowed:!1,state:"dirty_worktree",materialDirtyCount:t.length,detail:`Worktree has ${t.length} uncommitted change(s) with no final result`}}Ze();import{existsSync as vI,renameSync as bI}from"node:fs";import{mkdirSync as gI}from"node:fs";import hI from"node:path";import{DatabaseSync as kI}from"node:sqlite";var ic=class extends Error{constructor(r,t){super(`local-run-store schema version ${r} is newer than this runtime supports (${t}); refusing to open. Upgrade the runtime or quarantine the database deliberately.`),this.name="SchemaDowngradeRefusedError"}},tI=[`CREATE TABLE IF NOT EXISTS local_meta (
113
113
  key TEXT PRIMARY KEY,
114
114
  value TEXT NOT NULL
115
115
  ) STRICT`,`CREATE TABLE IF NOT EXISTS process_identity (
@@ -136,7 +136,7 @@ ${jg}: ${t}`}function Ro(e){let{worktreePath:r,branch:t,commitMessage:n,hasDirty
136
136
  created_at TEXT NOT NULL,
137
137
  PRIMARY KEY (scope, seq)
138
138
  ) STRICT`];function nI(e){if(!e.prepare("SELECT name FROM sqlite_master WHERE type = 'table' AND name = 'local_meta'").get())return null;let t=e.prepare("SELECT value FROM local_meta WHERE key = 'schema_version'").get();if(!t?.value)return null;let n=Number.parseInt(t.value,10);return Number.isFinite(n)?n:null}function Ch(e,r){let t=nI(e);if(t!==null&&t>1)throw new ic(t,1);e.exec("BEGIN IMMEDIATE");try{for(let n of tI)e.exec(n);e.prepare("INSERT INTO local_meta (key, value) VALUES ('schema_version', ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value").run(String(1)),e.prepare("INSERT INTO local_meta (key, value) VALUES ('schema_applied_at', ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value").run(r),e.exec("COMMIT")}catch(n){throw e.exec("ROLLBACK"),n}}import{existsSync as oI,realpathSync as sI,readFileSync as iI}from"node:fs";import Ph from"node:path";var aI=new Set(["ext4","ext3","ext2","btrfs","xfs","f2fs","zfs","tmpfs","overlay","overlayfs"]),lI=new Set(["9p","drvfs","nfs","nfs4","cifs","smb","smbfs","smb3","sshfs","fuse.sshfs","davfs","davfs2","glusterfs","ceph","lustre","afs","vboxsf","prl_fs","virtiofs"]);function cI(){try{return iI("/proc/self/mounts","utf8")}catch{return null}}function uI(e){let r=Ph.resolve(e);for(let t=0;t<64;t+=1){if(oI(r))try{return sI.native(r)}catch{return r}let n=Ph.dirname(r);if(n===r)return r;r=n}return r}function dI(e){return e.replace(/\\(\d{3})/g,(r,t)=>String.fromCharCode(Number.parseInt(t,8)))}function pI(e){let r=[];for(let t of e.split(`
139
- `)){let n=t.trim().split(/\s+/);n.length<3||r.push({mountPoint:dI(n[1]),fsType:n[2]})}return r}function Ah(e,r=process.platform){return r==="win32"?e.replace(/\\/g,"/"):e}function mI(e,r){let t=null,n=Ah(e);for(let o of r){let s=Ah(o.mountPoint),i=s.endsWith("/")?s:`${s}/`;(n===s||`${n}/`.startsWith(i))&&(!t||o.mountPoint.length>t.mountPoint.length)&&(t=o)}return t}function Ih(e,r){let n=(r?.resolveRealPath??uI)(e),o=(r?.mountsSource??cI)();if(o===null)return{verdict:"rejected",reason:"Mount information unavailable \u2014 the filesystem type cannot be established safely, so WAL mode is refused (fail closed).",filesystemType:null,mountPoint:null,resolvedPath:n};let s=mI(n,pI(o));if(!s)return{verdict:"rejected",reason:"No mount entry covers the resolved database path \u2014 refusing WAL mode (fail closed).",filesystemType:null,mountPoint:null,resolvedPath:n};let i=s.fsType.toLowerCase();return lI.has(i)||i.startsWith("fuse.")?{verdict:"rejected",reason:`Filesystem '${i}' is network-like or crosses an OS boundary; SQLite WAL locking is not safe there.`,filesystemType:i,mountPoint:s.mountPoint,resolvedPath:n}:aI.has(i)?{verdict:"accepted",reason:`Local filesystem '${i}' accepted for WAL mode.`,filesystemType:i,mountPoint:s.mountPoint,resolvedPath:n}:{verdict:"rejected",reason:`Filesystem '${i}' is unknown to the qualification policy; WAL mode is refused rather than guessed (fail closed).`,filesystemType:i,mountPoint:s.mountPoint,resolvedPath:n}}var _i=class extends Error{constructor(r){super(`local-run-store refused: ${r}`),this.name="FilesystemPolicyError"}},yI="local-run-store.sqlite",RI=5e3,wo=class e{db;now;databasePath;constructor(r,t,n){this.db=r,this.databasePath=t,this.now=n}static open(r){let t=Ih(r.directory,r.classifyOptions);if(t.verdict!=="accepted")throw new _i(t.reason);gI(r.directory,{recursive:!0,mode:448});let n=hI.join(r.directory,r.filename??yI),o=new kI(n,{timeout:r.busyTimeoutMs??RI}),s=r.now??(()=>new Date);try{o.exec("PRAGMA journal_mode = WAL");let i=o.prepare("PRAGMA journal_mode").get();if(i?.journal_mode?.toLowerCase()!=="wal")throw new _i(`journal_mode did not switch to WAL (got '${i?.journal_mode}') \u2014 filesystem unsuitable.`);o.exec("PRAGMA synchronous = NORMAL"),Ch(o,s().toISOString())}catch(i){throw o.close(),i}return new e(o,n,s)}inImmediateTransaction(r){this.db.exec("BEGIN IMMEDIATE");try{let t=r();return this.db.exec("COMMIT"),t}catch(t){throw this.db.exec("ROLLBACK"),t}}registerProcessIdentity(r){let t=this.now().toISOString();return this.inImmediateTransaction(()=>{this.db.prepare(`INSERT INTO process_identity
139
+ `)){let n=t.trim().split(/\s+/);n.length<3||r.push({mountPoint:dI(n[1]),fsType:n[2]})}return r}function Ah(e,r=process.platform){return r==="win32"?e.replace(/\\/g,"/"):e}function mI(e,r){let t=null,n=Ah(e);for(let o of r){let s=Ah(o.mountPoint),i=s.endsWith("/")?s:`${s}/`;(n===s||`${n}/`.startsWith(i))&&(!t||o.mountPoint.length>t.mountPoint.length)&&(t=o)}return t}function Ih(e,r){let n=(r?.resolveRealPath??uI)(e),o=(r?.mountsSource??cI)();if(o===null)return{verdict:"rejected",reason:"Mount information unavailable \u2014 the filesystem type cannot be established safely, so WAL mode is refused (fail closed).",filesystemType:null,mountPoint:null,resolvedPath:n};let s=mI(n,pI(o));if(!s)return{verdict:"rejected",reason:"No mount entry covers the resolved database path \u2014 refusing WAL mode (fail closed).",filesystemType:null,mountPoint:null,resolvedPath:n};let i=s.fsType.toLowerCase();return lI.has(i)||i.startsWith("fuse.")?{verdict:"rejected",reason:`Filesystem '${i}' is network-like or crosses an OS boundary; SQLite WAL locking is not safe there.`,filesystemType:i,mountPoint:s.mountPoint,resolvedPath:n}:aI.has(i)?{verdict:"accepted",reason:`Local filesystem '${i}' accepted for WAL mode.`,filesystemType:i,mountPoint:s.mountPoint,resolvedPath:n}:{verdict:"rejected",reason:`Filesystem '${i}' is unknown to the qualification policy; WAL mode is refused rather than guessed (fail closed).`,filesystemType:i,mountPoint:s.mountPoint,resolvedPath:n}}var _i=class extends Error{constructor(r){super(`local-run-store refused: ${r}`),this.name="FilesystemPolicyError"}},yI="local-run-store.sqlite",RI=5e3,xo=class e{db;now;databasePath;constructor(r,t,n){this.db=r,this.databasePath=t,this.now=n}static open(r){let t=Ih(r.directory,r.classifyOptions);if(t.verdict!=="accepted")throw new _i(t.reason);gI(r.directory,{recursive:!0,mode:448});let n=hI.join(r.directory,r.filename??yI),o=new kI(n,{timeout:r.busyTimeoutMs??RI}),s=r.now??(()=>new Date);try{o.exec("PRAGMA journal_mode = WAL");let i=o.prepare("PRAGMA journal_mode").get();if(i?.journal_mode?.toLowerCase()!=="wal")throw new _i(`journal_mode did not switch to WAL (got '${i?.journal_mode}') \u2014 filesystem unsuitable.`);o.exec("PRAGMA synchronous = NORMAL"),Ch(o,s().toISOString())}catch(i){throw o.close(),i}return new e(o,n,s)}inImmediateTransaction(r){this.db.exec("BEGIN IMMEDIATE");try{let t=r();return this.db.exec("COMMIT"),t}catch(t){throw this.db.exec("ROLLBACK"),t}}registerProcessIdentity(r){let t=this.now().toISOString();return this.inImmediateTransaction(()=>{this.db.prepare(`INSERT INTO process_identity
140
140
  (process_key, pid, runtime_version, node_version, started_at, registered_at)
141
141
  VALUES (?, ?, ?, ?, ?, ?)
142
142
  ON CONFLICT(process_key) DO UPDATE SET
@@ -160,26 +160,26 @@ ${jg}: ${t}`}function Ro(e){let{worktreePath:r,branch:t,commitMessage:n,hasDirty
160
160
  LIMIT ?`).all(...s,n).map(l=>({idempotencyKey:l.idempotency_key,operation:l.operation,resultJson:l.result_json,recordedAt:l.recorded_at}))}deleteOperationReceiptsByKeys(r){return r.length===0?0:this.inImmediateTransaction(()=>{let t=this.db.prepare("DELETE FROM operation_receipts WHERE idempotency_key = ?"),n=0;for(let o of r)n+=Number(t.run(o).changes);return n})}getOperationReceipt(r){let t=this.db.prepare(`SELECT idempotency_key, operation, result_json, recorded_at
161
161
  FROM operation_receipts WHERE idempotency_key = ?`).get(r);return t?{idempotencyKey:t.idempotency_key,operation:t.operation,resultJson:t.result_json,recordedAt:t.recorded_at}:null}saveRecoveryCheckpoint(r){return this.inImmediateTransaction(()=>{let t=this.db.prepare("SELECT COALESCE(MAX(seq), 0) AS max_seq FROM recovery_checkpoints WHERE scope = ?").get(r.scope),n=Number(t.max_seq)+1;return this.db.prepare(`INSERT INTO recovery_checkpoints (scope, seq, payload_json, created_at)
162
162
  VALUES (?, ?, ?, ?)`).run(r.scope,n,r.payloadJson,this.now().toISOString()),{seq:n}})}latestRecoveryCheckpoint(r){let t=this.db.prepare(`SELECT scope, seq, payload_json, created_at FROM recovery_checkpoints
163
- WHERE scope = ? ORDER BY seq DESC LIMIT 1`).get(r);return t?{scope:t.scope,seq:t.seq,payloadJson:t.payload_json,createdAt:t.created_at}:null}localSchemaVersion(){return 1}checkpointTruncate(){this.db.exec("PRAGMA wal_checkpoint(TRUNCATE)")}integrityCheck(){return this.db.prepare("PRAGMA integrity_check").get()?.integrity_check==="ok"}pragma(r){let t=this.db.prepare(`PRAGMA ${r}`).get();return String(Object.values(t)[0])}close(){this.db.close()}};function SI(e,r){let t=`${e}.quarantine-${r}`;for(let n of["","-wal","-shm"]){let o=`${e}${n}`;vI(o)&&bI(o,`${t}${n}`)}return t}function Oh(e){let r=e.quarantineStamp??(e.now??(()=>new Date))().toISOString().replace(/[:.]/g,"-"),t=null;try{let s=wo.open(e);if(s.integrityCheck())return{store:s,recovered:!1,quarantinedTo:null};s.close()}catch(s){if(s.name==="SchemaDowngradeRefusedError"||s.name==="FilesystemPolicyError")throw s;t=s}let n=`${e.directory}/${e.filename??"local-run-store.sqlite"}`,o=SI(n,r);try{return{store:wo.open(e),recovered:!0,quarantinedTo:o}}catch(s){throw new AggregateError([t,s].filter(Boolean),"local-run-store rebuild after quarantine failed")}}function wI(){if(process.env.KYNVER_LRS_TEST_CLASSIFY_BYPASS==="1")return{mountsSource:()=>"/dev/vda / ext4 rw 0 0",resolveRealPath:()=>"/tmp/kynver-lrs-test/db"}}function xI(){return _I.classifyOptions??wI()}var _I={};var EI=300*1e3,Lr=null,Ei=0;function CI(e,r){Ei+=1;try{let t=xI(),n=Oh({directory:e,...t?{classifyOptions:t}:{}});return{store:n.store,status:{state:"open",harnessRoot:e,databasePath:n.store.databasePath,schemaVersion:n.store.localSchemaVersion(),recovered:n.recovered,quarantinedTo:n.quarantinedTo,reason:null,openAttempts:Ei},failedAtMs:null,permanentRefusal:!1}}catch(t){return{store:null,status:{state:"unavailable",harnessRoot:e,databasePath:null,schemaVersion:null,recovered:!1,quarantinedTo:null,reason:`${t.name}: ${t.message}`,openAttempts:Ei},failedAtMs:r,permanentRefusal:t.name==="FilesystemPolicyError"||t.name==="SchemaDowngradeRefusedError"}}}function PI(e,r){return e.store||e.permanentRefusal?!1:e.failedAtMs===null?!0:r-e.failedAtMs>=EI}function z(e=Date.now()){let r=Ue();return(!Lr||Lr.status.harnessRoot!==r||PI(Lr,e))&&(II(),Lr=CI(r,e)),Lr.store}function AI(){return Lr?Lr.status:{state:"unopened",harnessRoot:null,databasePath:null,schemaVersion:null,recovered:!1,quarantinedTo:null,reason:null,openAttempts:Ei}}function Th(){return z(),AI()}function II(){try{Lr?.store?.close()}catch{}Lr=null}H();O();import{existsSync as OI,readFileSync as TI}from"node:fs";import{homedir as NI}from"node:os";import DI from"node:path";var MI=3e4,nr=null;function Nh(e){let r=e.replace(/[^A-Za-z0-9_-]/g,"_");return DI.join(NI(),".kynver",`local-run-store-flags-${r}.json`)}function ac(e){if(!e||typeof e!="object"||Array.isArray(e))return{};let r=e,t={},n=["dispatchReceipts","admission","planOutbox","keeper","meshLease","quota"];for(let o of n){let s=r[o];(s==="off"||s==="shadow"||s==="enforce")&&(t[o]=s)}return t}function Dh(e){if(!e||typeof e!="object"||Array.isArray(e))return null;let r=e.response;if(!r||typeof r!="object"||Array.isArray(r))return null;let t=r.localRunStoreFlags;return t===void 0?null:ac(t)}function Mh(e,r){try{let t=Nh(e),n={contractVersion:1,agentOsId:e,flags:ac(r),deliveredAt:new Date().toISOString()};ue(t,n),nr={flags:n.flags,loadedAtMs:Date.now(),file:t}}catch{}}function Wh(e=Date.now()){if(process.env.KYNVER_LRS_REMOTE_FLAGS_DISABLED==="1")return{};if(nr&&e-nr.loadedAtMs<MI)return nr.flags;try{let r=U().agentOsId?.trim();if(!r)return nr={flags:{},loadedAtMs:e,file:null},nr.flags;let t=Nh(r);if(!OI(t))return nr={flags:{},loadedAtMs:e,file:t},nr.flags;let n=JSON.parse(TI(t,"utf8")),o=n?.contractVersion===1?ac(n.flags):{};return nr={flags:o,loadedAtMs:e,file:t},o}catch{return nr={flags:{},loadedAtMs:e,file:null},nr.flags}}var WI=[{key:"dispatchReceipts",env:"KYNVER_LRS_DISPATCH_RECEIPTS",milestone:"D1"},{key:"admission",env:"KYNVER_LRS_ADMISSION",milestone:"D2"},{key:"planOutbox",env:"KYNVER_LRS_PLAN_OUTBOX",milestone:"D3"},{key:"keeper",env:"KYNVER_LRS_KEEPER",milestone:"D4"},{key:"meshLease",env:"KYNVER_LRS_MESH_LEASE",milestone:"D4"},{key:"quota",env:"KYNVER_LRS_QUOTA",milestone:"D4"}];function LI(e){let r=e?.trim().toLowerCase()??"";return r===""?{mode:"off",unknown:!1}:r==="off"||r==="shadow"||r==="enforce"?{mode:r,unknown:!1}:{mode:"off",unknown:!0}}function Br(e=process.env){let r={},t={},n=[],o=Wh();for(let s of WI){let i=e[s.env];if(typeof i=="string"&&i.trim()!==""){let c=LI(i);r[s.key]=c.mode,t[s.key]="env",c.unknown&&n.push(`${s.env}='${i}' is not off|shadow|enforce \u2014 treating as off`);continue}let l=o[s.key];if(l){r[s.key]=l,t[s.key]="server";continue}r[s.key]="off",t[s.key]="default"}return{flags:r,sources:t,warnings:n}}var Ne={storeFailures:0,completionReplaysObserved:0,completionReplaysShortCircuited:0,agedReceiptsPruned:0};function Ur(e=process.env){return Br(e).flags.dispatchReceipts}function lc(e){return Ur(e)!=="off"}function cc(e,r){return`dispatch:${e}:${r.taskId}:${r.leaseToken}`}function _o(e,r,t){if(!lc())return;let n=z();if(n)try{n.recordOperationReceipt({idempotencyKey:cc(e,r),operation:`dispatch-${e}`,resultJson:t===void 0?null:JSON.stringify(t)})}catch{Ne.storeFailures+=1}}function Bh(e){_o("claim",e,{runId:e.runId,workerName:e.workerName,provider:e.provider})}function Ci(e){_o("spawned",e)}function ln(e,r){_o("released",e,{reasonClass:r})}function Uh(e){_o("completion-sent",e)}function uc(e,r){_o("completion-acked",e,{outcome:r})}function Fh(e){if(!lc())return!1;let r=z();if(!r)return!1;try{let t=r.getOperationReceipt(cc("completion-acked",e));if(t){let n=null;try{n=t.resultJson?JSON.parse(t.resultJson).outcome??null:null}catch{n=null}if(n==="acknowledged")return Ne.completionReplaysObserved+=1,!0}}catch{Ne.storeFailures+=1}return!1}function dc(e){let r=String(e??"").split(":")[0]?.trim()??"";return r.length>0?r.slice(0,64):"unknown"}function Kh(e){if(Ur()!=="enforce")return!1;let r=z();if(!r)return!1;try{let t=r.getOperationReceipt(cc("completion-acked",e));if(!t)return!1;let n=null;try{n=t.resultJson?JSON.parse(t.resultJson).outcome??null:null}catch{n=null}return n==="acknowledged"?(Ne.completionReplaysShortCircuited+=1,!0):!1}catch{return Ne.storeFailures+=1,!1}}var BI=600*1e3;function Hh(e,r){if(Ur()!=="enforce")return;let t=z();if(t)try{t.recordOperationReceipt({idempotencyKey:`dispatch:start-failed:${e}:${r}`,operation:"dispatch-start-failed",resultJson:JSON.stringify({runId:r})})}catch{Ne.storeFailures+=1}}function $h(e,r){if(Ur()!=="enforce")return[];let t=z();if(!t)return[];let n=r?.nowMs??Date.now(),o=r?.windowMs??BI;try{return t.listOperationReceipts({operation:"dispatch-start-failed",recordedAfter:new Date(n-o).toISOString(),limit:200}).filter(s=>{try{return s.resultJson?JSON.parse(s.resultJson).runId===e:!1}catch{return!1}}).map(s=>{let i=s.idempotencyKey.slice(22);return i.slice(0,i.length-(e.length+1))}).filter(s=>s.length>0)}catch{return Ne.storeFailures+=1,[]}}function xo(e){let r=e.split(":")[0]??"",t=Number(r);return Number.isInteger(t)&&t>=0?t:null}var UI=900*1e3,Lh=10080*60*1e3,FI=1440*60*1e3,KI=500,HI=300;function jh(e){let r={scannedClaims:0,strandedClaimCandidates:0,prunedReceipts:0};if(!lc())return r;let t=z();if(!t)return r;let n=e?.nowMs??Date.now(),o=e?.strandedAfterMs??UI;try{let s=t.listOperationReceipts({operation:"dispatch-claim",recordedAfter:new Date(n-Lh).toISOString(),limit:KI}),i=0,a=[];for(let c of s){let u=c.idempotencyKey.slice(15),d=Date.parse(c.recordedAt);if(!Number.isFinite(d)||n-d<o)continue;let p=t.getOperationReceipt(`dispatch:spawned:${u}`),m=t.getOperationReceipt(`dispatch:released:${u}`);if(p||m){n-d>=FI&&a.length+5<=HI&&a.push(c.idempotencyKey,`dispatch:spawned:${u}`,`dispatch:released:${u}`,`dispatch:completion-sent:${u}`,`dispatch:completion-acked:${u}`);continue}let f=u.split(":")[0]??"",y=xo(u.slice(f.length+1));if((f?t.listOperationReceipts({keyPrefix:`dispatch:completion-acked:${f}:`,limit:10}):[]).some(h=>{if(y===null)return!0;let w=h.idempotencyKey.slice(`dispatch:completion-acked:${f}:`.length),E=xo(w);return E===null||E>=y}))continue;let g=!1;if(e?.hasLiveWorker&&c.resultJson)try{let h=JSON.parse(c.resultJson);h.runId&&h.workerName&&(g=e.hasLiveWorker({runId:h.runId,workerName:h.workerName}))}catch{g=!1}g||(i+=1)}let l=a.length>0?t.deleteOperationReceiptsByKeys(a):0;if(Ur()==="enforce"){let c=t.listOperationReceipts({limit:100}).filter(u=>{let d=Date.parse(u.recordedAt);return Number.isFinite(d)&&n-d>=Lh}).map(u=>u.idempotencyKey);if(c.length>0){let u=t.deleteOperationReceiptsByKeys(c);l+=u,Ne.agedReceiptsPruned+=u}}return{scannedClaims:s.length,strandedClaimCandidates:i,prunedReceipts:l}}catch{return Ne.storeFailures+=1,r}}function Vh(){return{"dispatchReceipts.storeFailures":Ne.storeFailures,"dispatchReceipts.completionReplaysObserved":Ne.completionReplaysObserved,"dispatchReceipts.completionReplaysShortCircuited":Ne.completionReplaysShortCircuited,"dispatchReceipts.agedReceiptsPruned":Ne.agedReceiptsPruned}}var cn=900*1e3,fc="admission-shadow",pc="worker-slot:",et={storeFailures:0,missingForLive:0,deadSlotsReleased:0},mc=!1;function Gh(){mc=!1}function Fr(e=process.env){return Br(e).flags.admission}function Pi(e,r){return`${pc}${e}:${r}`}function Yh(e,r){if(Fr()==="off")return;let t=z();if(t)try{t.tryReserveAdmission(Pi(e,r),fc,cn)}catch{et.storeFailures+=1}}function Eo(e,r){if(Fr()==="off")return;let t=z();if(t)try{t.releaseAdmission(Pi(e,r),fc)}catch{et.storeFailures+=1}}function qh(e){let r={liveReservations:0,refreshed:0,deadReleased:0,missingForLive:0,orphaned:0,adoptionPass:!1};if(Fr()==="off")return r;let t=z();if(!t)return r;try{let n=new Set(e.liveWorkers.map(p=>Pi(p.runId,p.workerName))),o=t.listAdmissionReservations({keyPrefix:pc,limit:500}),s=new Set(o.map(p=>p.key)),i=[...n].filter(p=>!s.has(p)).length,a=o.filter(p=>!n.has(p.key)).length,l=!mc;mc=!0,!l&&i>0&&(et.missingForLive+=i);let c=0;for(let p of e.liveWorkers)t.tryReserveAdmission(Pi(p.runId,p.workerName),fc,cn),c+=1;let u=0;for(let p of o)n.has(p.key)||t.releaseAdmission(p.key,p.owner)&&(u+=1,et.deadSlotsReleased+=1);return{liveReservations:t.listAdmissionReservations({keyPrefix:pc,limit:500}).length,refreshed:c,deadReleased:u,missingForLive:i,orphaned:a,adoptionPass:l}}catch{return et.storeFailures+=1,r}}function Jh(){return{"admission.storeFailures":et.storeFailures,"admission.missingForLive":et.missingForLive,"admission.deadSlotsReleased":et.deadSlotsReleased}}var gc="worker-slot-n:",Ai=64;function zh(e){return`${gc}${e}`}function Ii(e,r){return`${e}:${r}`}var rt={enforceStoreFailures:0,admissionsRefusedSlots:0,admissionsRefusedDiskBackstop:0};function Xh(e){if(Fr()!=="enforce")return{admitted:!0};let r=z();if(!r)return{admitted:!0};let t=Math.max(0,Math.min(Ai,Math.floor(e.maxSlots)));if(e.diskActiveWorkers>=t)return rt.admissionsRefusedDiskBackstop+=1,{admitted:!1,reason:"disk_backstop"};try{let n=Ii(e.runId,e.workerName);for(let o=0;o<t;o+=1)if(r.tryReserveAdmission(zh(o),n,cn).acquired)return{admitted:!0,slot:o};return rt.admissionsRefusedSlots+=1,{admitted:!1,reason:"slots_exhausted"}}catch{return rt.enforceStoreFailures+=1,{admitted:!0}}}function tt(e,r){if(Fr()==="off")return;let t=z();if(t)try{let n=Ii(e,r),o=t.listAdmissionReservations({keyPrefix:gc,limit:Ai});for(let s of o)s.owner===n&&t.releaseAdmission(s.key,n)}catch{rt.enforceStoreFailures+=1}}function Qh(e){let r={refreshed:0,deadReleased:0,adopted:0};if(Fr()!=="enforce")return r;let t=z();if(!t)return r;try{let n=new Set(e.liveWorkers.map(c=>Ii(c.runId,c.workerName))),o=t.listAdmissionReservations({keyPrefix:gc,limit:Ai}),s=0,i=0,a=new Set;for(let c of o)n.has(c.owner)?(t.tryReserveAdmission(c.key,c.owner,cn),a.add(c.owner),s+=1):t.releaseAdmission(c.key,c.owner)&&(i+=1);let l=0;for(let c of e.liveWorkers){let u=Ii(c.runId,c.workerName);if(!a.has(u)){for(let d=0;d<Ai;d+=1)if(t.tryReserveAdmission(zh(d),u,cn).acquired){l+=1;break}}}return{refreshed:s,deadReleased:i,adopted:l}}catch{return rt.enforceStoreFailures+=1,r}}function Zh(){return{"admission.enforceStoreFailures":rt.enforceStoreFailures,"admission.refusedSlotsExhausted":rt.admissionsRefusedSlots,"admission.refusedDiskBackstop":rt.admissionsRefusedDiskBackstop}}O();O();var $I=/^[a-z0-9][a-z0-9._-]{0,127}$/i,jI=/^[a-z0-9][a-z0-9._-]{0,63}$/i,ek=new Set(["undefined","null"]),rk="usage: kynver worker <action> --run RUN_ID --name WORKER_NAME";function VI(e){let r=e.trim();if(!$I.test(r))throw new Error(`invalid run id: ${e}`);return r}function GI(e){let r=e.trim();if(!jI.test(r))throw new Error(`invalid worker name: ${e}`);return r}function tk(e){return typeof e=="string"?e.trim():""}function hc(e){let r=tk(e.run),t=tk(e.name);return(!r||ek.has(r))&&Je(`missing --run RUN_ID (${rk})`),(!t||ek.has(t))&&Je(`missing --name WORKER_NAME (${rk})`),{runId:VI(r),workerName:GI(t)}}import{existsSync as YI,mkdirSync as qI,readFileSync as JI,writeFileSync as zI}from"node:fs";import{homedir as XI}from"node:os";import uk from"node:path";var _e={keeperStoreFailures:0,meshStoreFailures:0,quotaStoreFailures:0,meshLeaseDivergences:0,meshEnforceStaleInversions:0,quotaVerdictDivergences:0};function Co(e){return Br(process.env).flags[e]}var TY=1800*1e3;function kc(e){return`mesh-cron-lease:${e}`}function nk(e,r){if(Co("meshLease")==="off")return;let t=z();if(t)try{let n=t.latestRecoveryCheckpoint(kc(e));if(n){let o=JSON.parse(n.payloadJson);if((o.leaseToken??null)===(r.leaseToken??null)&&(o.holderBoxId??null)===(r.holderBoxId??null)&&o.authorized===r.authorized)return}t.saveRecoveryCheckpoint({scope:kc(e),payloadJson:JSON.stringify(r)})}catch{_e.meshStoreFailures+=1}}function ok(e,r){let t=Co("meshLease");if(t==="off")return null;let n=z();if(!n)return null;try{let o=n.latestRecoveryCheckpoint(kc(e)),s=o?JSON.parse(o.payloadJson):null,i=s!==null&&((s.leaseToken??null)!==(r?.leaseToken??null)||(s.holderBoxId??null)!==(r?.holderBoxId??null)||(s.authorized??null)!==(r?.authorized??null));return i&&(_e.meshLeaseDivergences+=1),t!=="enforce"?null:i&&r?.updatedAt&&s?.updatedAt&&Date.parse(r.updatedAt)>Date.parse(s.updatedAt)?(_e.meshEnforceStaleInversions+=1,null):s}catch{return _e.meshStoreFailures+=1,null}}function Oi(e){return`quota-cooldown:${e}`}var sk="quota-preflight";function ik(e,r){if(Co("quota")==="off")return;let t=z();if(t)try{t.tryReserveAdmission(Oi(e),sk,r)}catch{_e.quotaStoreFailures+=1}}function ak(e){if(Co("quota")==="off")return;let r=z();if(r)try{r.releaseAdmission(Oi(e),sk)}catch{_e.quotaStoreFailures+=1}}function lk(e,r){let t=Co("quota");if(t==="off")return null;let n=z();if(!n)return null;try{let o=n.listAdmissionReservations({keyPrefix:Oi(e),limit:50}).find(i=>i.key===Oi(e)),s=!!o;return s!==r&&(_e.quotaVerdictDivergences+=1),t==="enforce"?{blocked:s,retryAtIso:o?.expiresAt??null}:null}catch{return _e.quotaStoreFailures+=1,null}}function ck(){return{"keeper.storeFailures":_e.keeperStoreFailures,"meshLease.storeFailures":_e.meshStoreFailures,"meshLease.divergences":_e.meshLeaseDivergences,"meshLease.enforceStaleInversions":_e.meshEnforceStaleInversions,"quota.storeFailures":_e.quotaStoreFailures,"quota.verdictDivergences":_e.quotaVerdictDivergences}}var QI=/\b(out of usage|increase limits?|switch to auto|ask your admin to increase your limit|(?:hit|reached|exceeded|over) (?:your |the )?usage limits?|usage limits? (?:hit|reached|exceeded)|exceeded your (?:current )?quota|quota (?:exceeded|exhausted)|insufficient_quota|insufficient (?:credits?|quota)|credits? exhausted|credit balance is too low|billing hard limit|check your plan and billing|402 payment required|provider quota exhausted|provider_quota_exhausted)\b/i,ZI=30,eO=5,rO=240;function tO(e){let r=e?.trim();return!!(r&&QI.test(r))}function nO(){let e=(process.env.KYNVER_PROVIDER_QUOTA_PREFLIGHT??"on").trim().toLowerCase();return e!=="off"&&e!=="0"&&e!=="false"&&e!=="no"}function yc(){let e=Number.parseInt(process.env.KYNVER_PROVIDER_QUOTA_COOLDOWN_MINUTES??"",10);return Number.isFinite(e)?Math.min(rO,Math.max(eO,e)):ZI}function dk(){let e=process.env.KYNVER_PROVIDER_QUOTA_STORE_PATH?.trim();return e||uk.join(XI(),".kynver","provider-quota-cooldowns.json")}function Po(e){return(e??"").trim().toLowerCase()}function Rc(){let e=dk();if(!YI(e))return{};try{let r=JSON.parse(JI(e,"utf8"));if(!r||typeof r!="object"||Array.isArray(r))return{};let t={};for(let[n,o]of Object.entries(r)){if(!o||typeof o!="object")continue;let{lastExhaustedAt:s,reason:i}=o;typeof s!="string"||!Number.isFinite(Date.parse(s))||(t[Po(n)]={lastExhaustedAt:s,reason:typeof i=="string"?i.slice(0,500):""})}return t}catch{return{}}}function vc(e){let r=dk();try{qI(uk.dirname(r),{recursive:!0}),zI(r,`${JSON.stringify(e,null,2)}
164
- `,"utf8")}catch{}}function oO(e,r,t=Date.now()){let n=Po(e);if(!n)return;let o=Rc();o[n]={lastExhaustedAt:new Date(t).toISOString(),reason:r.trim().slice(0,500)},vc(o),ik(n,yc()*6e4)}function sO(e){let r=Po(e);if(!r)return!1;ak(r);let t=Rc();return r in t?(delete t[r],vc(t),!0):!1}function pk(e,r=Date.now()){if(!nO())return{ok:!0};let t=Po(e);if(!t)return{ok:!0};let n=Rc(),o=n[t],s=!!(o&&Number.isFinite(Date.parse(o.lastExhaustedAt))&&Date.parse(o.lastExhaustedAt)+yc()*6e4>r),i=lk(t,s);if(i)return i.blocked?{ok:!1,provider:t,reason:`provider "${t}" is inside its local quota cooldown`+(i.retryAtIso?` \u2014 preflight declines spawn until ${i.retryAtIso}`:""),retryAtIso:i.retryAtIso??new Date(r).toISOString()}:{ok:!0};if(!o)return{ok:!0};let a=Date.parse(o.lastExhaustedAt),l=a+yc()*6e4;if(!Number.isFinite(a)||l<=r)return delete n[t],vc(n),{ok:!0};let c=new Date(l).toISOString();return{ok:!1,provider:t,reason:`provider "${t}" reported quota exhaustion at ${o.lastExhaustedAt} \u2014 local preflight declines spawn until ${c}`+(o.reason?` (${o.reason.slice(0,160)})`:""),retryAtIso:c}}function iO(e){if(typeof e=="string"){let r=e.trim();return r.length?r:null}if(e&&typeof e=="object"&&!Array.isArray(e)){let r=e;for(let t of["result","summary","error"]){let n=r[t];if(typeof n=="string"&&n.trim())return n.trim()}}return null}function mk(e){let r=Po(e.provider);if(!r)return"none";let t=iO(e.finalResult)??(typeof e.error=="string"&&e.error.trim()?e.error.trim():null);return t?tO(t)?(oO(r,t,e.nowMs??Date.now()),"recorded"):sO(r)?"cleared":"none":"none"}function fk(e){let r=e.usage;return!r||r.inputTokens===void 0&&r.outputTokens===void 0?null:{provider:e.provider?.trim()||"unknown",model:r.model?.trim()||e.model?.trim()||null,inputTokens:r.inputTokens??null,outputTokens:r.outputTokens??null}}import{statSync as OO}from"node:fs";import TO from"node:path";Za();import{createECDH as vk,randomBytes as uO}from"node:crypto";import{chmodSync as bk,existsSync as kk,mkdirSync as dO,readFileSync as pO,readdirSync as mO,renameSync as fO,writeFileSync as gO}from"node:fs";import{homedir as hO}from"node:os";import Sk from"node:path";import{createCipheriv as HY,createDecipheriv as $Y,createECDH as jY,createHash as cO,hkdfSync as VY,randomBytes as GY}from"node:crypto";var aO=/^[A-Z][A-Z0-9_]{1,63}$/;var or={maxSecrets:100,maxValueBytes:16384,maxPurposeChars:200,minValueChars:4,minRedactChars:6},lO=new Set(["PATH","HOME","SHELL","USER","LOGNAME","NODE_OPTIONS","LD_PRELOAD","LD_LIBRARY_PATH","DYLD_INSERT_LIBRARIES","DYLD_LIBRARY_PATH","PWD","TMPDIR"]);function gk(e){return typeof e=="string"&&aO.test(e)&&!lO.has(e)&&!e.startsWith("KYNVER_")}function hk(e){return cO("sha256").update(e).digest("hex").slice(0,16).toUpperCase().match(/.{4}/g).join("-")}var yk="secret-store-keys";function un(){return Sk.join(hO(),".kynver","secrets")}function Sc(e){dO(e,{recursive:!0,mode:448});try{bk(e,448)}catch{}}function wc(e,r){let t=`${e}.${process.pid}.tmp`;gO(t,r,{mode:384});try{bk(t,384)}catch{}fO(t,e)}function Rk(e){if(!e)return null;try{let r=JSON.parse(e);if(r.v===1&&typeof r.ecdh=="string"&&typeof r.vault=="string")return{v:1,ecdh:r.ecdh,vault:r.vault}}catch{}return null}function Ti(e,r){let t=Buffer.from(e.ecdh,"base64"),n=Buffer.from(e.vault,"base64");if(t.length!==32||n.length!==32)throw new Error("secret store keys are corrupt");let o=vk("prime256v1");o.setPrivateKey(t);let s=o.getPublicKey();return{ecdhPrivateKey:t,publicKeyRaw:s,fingerprint:hk(s),vaultKey:n,keyStore:r}}var kO=e=>Sk.join(e,"keys.json"),bc=class extends Error{constructor(){super("Saved secrets exist on this computer but their key can't be read (is the OS keyring locked?). Unlock it and try again."),this.name="SecretKeysUnavailableError"}};function wk(e={}){let r=e.root??un(),t=e.keychain??zn(),n=t.available?Rk(t.read(yk)):null;if(n)return Ti(n,"keychain");let o=kO(r),s=kk(o)?Rk(pO(o,"utf8")):null;if(s)return Ti(s,"file");if(kk(r)&&mO(r).some(d=>d.endsWith(".vault.json")))throw new bc;let i=vk("prime256v1");i.generateKeys();let a=Buffer.alloc(32),l=i.getPrivateKey();l.copy(a,32-l.length);let c={v:1,ecdh:a.toString("base64"),vault:uO(32).toString("base64")},u=JSON.stringify(c);return t.write(yk,u)?Ti(c,"keychain"):(Sc(r),wc(o,`${u}
165
- `),Ti(c,"file"))}function yO(e){let r=new Set([e]),t=Buffer.from(e,"utf8").toString("base64");r.add(t),r.add(t.replace(/=+$/,"")),r.add(t.replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,""));let n=encodeURIComponent(e);n!==e&&r.add(n);let o=e.trim();return o&&o!==e&&r.add(o),[...r].filter(s=>s.length>=or.minRedactChars)}function RO(e){return e.length>=or.minValueChars&&e.length<or.minRedactChars}function vO(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function xk(e){let r=[];for(let o of e){let s=`[redacted ${o.name}]`;RO(o.value)&&r.push({needle:o.value,label:s,token:!0});for(let i of yO(o.value))r.push({needle:i,label:s,token:!1})}r.sort((o,s)=>s.needle.length-o.needle.length||Number(o.token)-Number(s.token));let t=new Set,n=r.filter(o=>{let s=`${o.token?"t":"s"}:${o.needle}`;return t.has(s)?!1:(t.add(s),!0)});return{empty:n.length===0,maxLength:n.reduce((o,s)=>Math.max(o,s.needle.length),0),partialSuffixLength(o){let s=0;for(let i of n){let a=i.needle[0];for(let l=Math.min(i.needle.length-1,o.length);l>s;l--)if(o[o.length-l]===a&&o.endsWith(i.needle.slice(0,l))){s=l;break}}return s},redact(o){if(!o||n.length===0)return o;let s=o;for(let i of n)if(i.token){let a=new RegExp(`(^|[^A-Za-z0-9_])${vO(i.needle)}(?=$|[^A-Za-z0-9_])`,"g");s=s.replace(a,`$1${i.label}`)}else s.includes(i.needle)&&(s=s.split(i.needle).join(i.label));return s}}}import{createHash as _O,randomBytes as EO}from"node:crypto";import{existsSync as CO,readFileSync as PO,rmSync as AO}from"node:fs";import IO from"node:path";import{createCipheriv as bO,createDecipheriv as SO,randomBytes as wO,scrypt as sq,timingSafeEqual as iq}from"node:crypto";var xO=32,_k=12,xc=16,aq={N:2**17,r:8,p:1},lq=2**14;var dn=class extends Error{constructor(r="the saved-login vault could not be decrypted"){super(r),this.name="VaultCryptoError"}};function _c(e,r,t){if(e.length!==xO)throw new dn("bad key length");let n=wO(_k),o=bO("aes-256-gcm",e,n);o.setAAD(Buffer.from(t,"utf8"));let s=Buffer.concat([o.update(r),o.final(),o.getAuthTag()]);return{n:n.toString("base64"),c:s.toString("base64")}}function Ec(e,r,t){try{let n=Buffer.from(r.n,"base64"),o=Buffer.from(r.c,"base64");if(n.length!==_k||o.length<xc)throw new dn;let s=SO("aes-256-gcm",e,n);return s.setAAD(Buffer.from(t,"utf8")),s.setAuthTag(o.subarray(o.length-xc)),Buffer.concat([s.update(o.subarray(0,o.length-xc)),s.final()])}catch(n){throw n instanceof dn?n:new dn}}var cq=Buffer.from("kynver-site-login-key-check-v1","utf8");var we=class extends Error{constructor(t,n){super(t);this.code=n;this.name="SecretStoreError"}code};function Cc(e){return`${_O("sha256").update(`kynver-secret:${e}`).digest("hex").slice(0,32)}.vault.json`}var Ni=(e,r,t)=>{for(let n of[e,r,t])if(n.includes(`
163
+ WHERE scope = ? ORDER BY seq DESC LIMIT 1`).get(r);return t?{scope:t.scope,seq:t.seq,payloadJson:t.payload_json,createdAt:t.created_at}:null}localSchemaVersion(){return 1}checkpointTruncate(){this.db.exec("PRAGMA wal_checkpoint(TRUNCATE)")}integrityCheck(){return this.db.prepare("PRAGMA integrity_check").get()?.integrity_check==="ok"}pragma(r){let t=this.db.prepare(`PRAGMA ${r}`).get();return String(Object.values(t)[0])}close(){this.db.close()}};function SI(e,r){let t=`${e}.quarantine-${r}`;for(let n of["","-wal","-shm"]){let o=`${e}${n}`;vI(o)&&bI(o,`${t}${n}`)}return t}function Oh(e){let r=e.quarantineStamp??(e.now??(()=>new Date))().toISOString().replace(/[:.]/g,"-"),t=null;try{let s=xo.open(e);if(s.integrityCheck())return{store:s,recovered:!1,quarantinedTo:null};s.close()}catch(s){if(s.name==="SchemaDowngradeRefusedError"||s.name==="FilesystemPolicyError")throw s;t=s}let n=`${e.directory}/${e.filename??"local-run-store.sqlite"}`,o=SI(n,r);try{return{store:xo.open(e),recovered:!0,quarantinedTo:o}}catch(s){throw new AggregateError([t,s].filter(Boolean),"local-run-store rebuild after quarantine failed")}}function wI(){if(process.env.KYNVER_LRS_TEST_CLASSIFY_BYPASS==="1")return{mountsSource:()=>"/dev/vda / ext4 rw 0 0",resolveRealPath:()=>"/tmp/kynver-lrs-test/db"}}function xI(){return _I.classifyOptions??wI()}var _I={};var EI=300*1e3,Br=null,Ei=0;function CI(e,r){Ei+=1;try{let t=xI(),n=Oh({directory:e,...t?{classifyOptions:t}:{}});return{store:n.store,status:{state:"open",harnessRoot:e,databasePath:n.store.databasePath,schemaVersion:n.store.localSchemaVersion(),recovered:n.recovered,quarantinedTo:n.quarantinedTo,reason:null,openAttempts:Ei},failedAtMs:null,permanentRefusal:!1}}catch(t){return{store:null,status:{state:"unavailable",harnessRoot:e,databasePath:null,schemaVersion:null,recovered:!1,quarantinedTo:null,reason:`${t.name}: ${t.message}`,openAttempts:Ei},failedAtMs:r,permanentRefusal:t.name==="FilesystemPolicyError"||t.name==="SchemaDowngradeRefusedError"}}}function PI(e,r){return e.store||e.permanentRefusal?!1:e.failedAtMs===null?!0:r-e.failedAtMs>=EI}function z(e=Date.now()){let r=Ue();return(!Br||Br.status.harnessRoot!==r||PI(Br,e))&&(II(),Br=CI(r,e)),Br.store}function AI(){return Br?Br.status:{state:"unopened",harnessRoot:null,databasePath:null,schemaVersion:null,recovered:!1,quarantinedTo:null,reason:null,openAttempts:Ei}}function Th(){return z(),AI()}function II(){try{Br?.store?.close()}catch{}Br=null}H();O();import{existsSync as OI,readFileSync as TI}from"node:fs";import{homedir as NI}from"node:os";import DI from"node:path";var MI=3e4,nr=null;function Nh(e){let r=e.replace(/[^A-Za-z0-9_-]/g,"_");return DI.join(NI(),".kynver",`local-run-store-flags-${r}.json`)}function ac(e){if(!e||typeof e!="object"||Array.isArray(e))return{};let r=e,t={},n=["dispatchReceipts","admission","planOutbox","keeper","meshLease","quota"];for(let o of n){let s=r[o];(s==="off"||s==="shadow"||s==="enforce")&&(t[o]=s)}return t}function Dh(e){if(!e||typeof e!="object"||Array.isArray(e))return null;let r=e.response;if(!r||typeof r!="object"||Array.isArray(r))return null;let t=r.localRunStoreFlags;return t===void 0?null:ac(t)}function Mh(e,r){try{let t=Nh(e),n={contractVersion:1,agentOsId:e,flags:ac(r),deliveredAt:new Date().toISOString()};ue(t,n),nr={flags:n.flags,loadedAtMs:Date.now(),file:t}}catch{}}function Wh(e=Date.now()){if(process.env.KYNVER_LRS_REMOTE_FLAGS_DISABLED==="1")return{};if(nr&&e-nr.loadedAtMs<MI)return nr.flags;try{let r=U().agentOsId?.trim();if(!r)return nr={flags:{},loadedAtMs:e,file:null},nr.flags;let t=Nh(r);if(!OI(t))return nr={flags:{},loadedAtMs:e,file:t},nr.flags;let n=JSON.parse(TI(t,"utf8")),o=n?.contractVersion===1?ac(n.flags):{};return nr={flags:o,loadedAtMs:e,file:t},o}catch{return nr={flags:{},loadedAtMs:e,file:null},nr.flags}}var WI=[{key:"dispatchReceipts",env:"KYNVER_LRS_DISPATCH_RECEIPTS",milestone:"D1"},{key:"admission",env:"KYNVER_LRS_ADMISSION",milestone:"D2"},{key:"planOutbox",env:"KYNVER_LRS_PLAN_OUTBOX",milestone:"D3"},{key:"keeper",env:"KYNVER_LRS_KEEPER",milestone:"D4"},{key:"meshLease",env:"KYNVER_LRS_MESH_LEASE",milestone:"D4"},{key:"quota",env:"KYNVER_LRS_QUOTA",milestone:"D4"}];function LI(e){let r=e?.trim().toLowerCase()??"";return r===""?{mode:"off",unknown:!1}:r==="off"||r==="shadow"||r==="enforce"?{mode:r,unknown:!1}:{mode:"off",unknown:!0}}function Ur(e=process.env){let r={},t={},n=[],o=Wh();for(let s of WI){let i=e[s.env];if(typeof i=="string"&&i.trim()!==""){let c=LI(i);r[s.key]=c.mode,t[s.key]="env",c.unknown&&n.push(`${s.env}='${i}' is not off|shadow|enforce \u2014 treating as off`);continue}let l=o[s.key];if(l){r[s.key]=l,t[s.key]="server";continue}r[s.key]="off",t[s.key]="default"}return{flags:r,sources:t,warnings:n}}var Ne={storeFailures:0,completionReplaysObserved:0,completionReplaysShortCircuited:0,agedReceiptsPruned:0};function Fr(e=process.env){return Ur(e).flags.dispatchReceipts}function lc(e){return Fr(e)!=="off"}function cc(e,r){return`dispatch:${e}:${r.taskId}:${r.leaseToken}`}function Eo(e,r,t){if(!lc())return;let n=z();if(n)try{n.recordOperationReceipt({idempotencyKey:cc(e,r),operation:`dispatch-${e}`,resultJson:t===void 0?null:JSON.stringify(t)})}catch{Ne.storeFailures+=1}}function Bh(e){Eo("claim",e,{runId:e.runId,workerName:e.workerName,provider:e.provider})}function Ci(e){Eo("spawned",e)}function cn(e,r){Eo("released",e,{reasonClass:r})}function Uh(e){Eo("completion-sent",e)}function uc(e,r){Eo("completion-acked",e,{outcome:r})}function Fh(e){if(!lc())return!1;let r=z();if(!r)return!1;try{let t=r.getOperationReceipt(cc("completion-acked",e));if(t){let n=null;try{n=t.resultJson?JSON.parse(t.resultJson).outcome??null:null}catch{n=null}if(n==="acknowledged")return Ne.completionReplaysObserved+=1,!0}}catch{Ne.storeFailures+=1}return!1}function dc(e){let r=String(e??"").split(":")[0]?.trim()??"";return r.length>0?r.slice(0,64):"unknown"}function Kh(e){if(Fr()!=="enforce")return!1;let r=z();if(!r)return!1;try{let t=r.getOperationReceipt(cc("completion-acked",e));if(!t)return!1;let n=null;try{n=t.resultJson?JSON.parse(t.resultJson).outcome??null:null}catch{n=null}return n==="acknowledged"?(Ne.completionReplaysShortCircuited+=1,!0):!1}catch{return Ne.storeFailures+=1,!1}}var BI=600*1e3;function Hh(e,r){if(Fr()!=="enforce")return;let t=z();if(t)try{t.recordOperationReceipt({idempotencyKey:`dispatch:start-failed:${e}:${r}`,operation:"dispatch-start-failed",resultJson:JSON.stringify({runId:r})})}catch{Ne.storeFailures+=1}}function $h(e,r){if(Fr()!=="enforce")return[];let t=z();if(!t)return[];let n=r?.nowMs??Date.now(),o=r?.windowMs??BI;try{return t.listOperationReceipts({operation:"dispatch-start-failed",recordedAfter:new Date(n-o).toISOString(),limit:200}).filter(s=>{try{return s.resultJson?JSON.parse(s.resultJson).runId===e:!1}catch{return!1}}).map(s=>{let i=s.idempotencyKey.slice(22);return i.slice(0,i.length-(e.length+1))}).filter(s=>s.length>0)}catch{return Ne.storeFailures+=1,[]}}function _o(e){let r=e.split(":")[0]??"",t=Number(r);return Number.isInteger(t)&&t>=0?t:null}var UI=900*1e3,Lh=10080*60*1e3,FI=1440*60*1e3,KI=500,HI=300;function jh(e){let r={scannedClaims:0,strandedClaimCandidates:0,prunedReceipts:0};if(!lc())return r;let t=z();if(!t)return r;let n=e?.nowMs??Date.now(),o=e?.strandedAfterMs??UI;try{let s=t.listOperationReceipts({operation:"dispatch-claim",recordedAfter:new Date(n-Lh).toISOString(),limit:KI}),i=0,a=[];for(let c of s){let u=c.idempotencyKey.slice(15),d=Date.parse(c.recordedAt);if(!Number.isFinite(d)||n-d<o)continue;let p=t.getOperationReceipt(`dispatch:spawned:${u}`),m=t.getOperationReceipt(`dispatch:released:${u}`);if(p||m){n-d>=FI&&a.length+5<=HI&&a.push(c.idempotencyKey,`dispatch:spawned:${u}`,`dispatch:released:${u}`,`dispatch:completion-sent:${u}`,`dispatch:completion-acked:${u}`);continue}let f=u.split(":")[0]??"",y=_o(u.slice(f.length+1));if((f?t.listOperationReceipts({keyPrefix:`dispatch:completion-acked:${f}:`,limit:10}):[]).some(h=>{if(y===null)return!0;let w=h.idempotencyKey.slice(`dispatch:completion-acked:${f}:`.length),E=_o(w);return E===null||E>=y}))continue;let g=!1;if(e?.hasLiveWorker&&c.resultJson)try{let h=JSON.parse(c.resultJson);h.runId&&h.workerName&&(g=e.hasLiveWorker({runId:h.runId,workerName:h.workerName}))}catch{g=!1}g||(i+=1)}let l=a.length>0?t.deleteOperationReceiptsByKeys(a):0;if(Fr()==="enforce"){let c=t.listOperationReceipts({limit:100}).filter(u=>{let d=Date.parse(u.recordedAt);return Number.isFinite(d)&&n-d>=Lh}).map(u=>u.idempotencyKey);if(c.length>0){let u=t.deleteOperationReceiptsByKeys(c);l+=u,Ne.agedReceiptsPruned+=u}}return{scannedClaims:s.length,strandedClaimCandidates:i,prunedReceipts:l}}catch{return Ne.storeFailures+=1,r}}function Vh(){return{"dispatchReceipts.storeFailures":Ne.storeFailures,"dispatchReceipts.completionReplaysObserved":Ne.completionReplaysObserved,"dispatchReceipts.completionReplaysShortCircuited":Ne.completionReplaysShortCircuited,"dispatchReceipts.agedReceiptsPruned":Ne.agedReceiptsPruned}}var un=900*1e3,fc="admission-shadow",pc="worker-slot:",rt={storeFailures:0,missingForLive:0,deadSlotsReleased:0},mc=!1;function Gh(){mc=!1}function Kr(e=process.env){return Ur(e).flags.admission}function Pi(e,r){return`${pc}${e}:${r}`}function Yh(e,r){if(Kr()==="off")return;let t=z();if(t)try{t.tryReserveAdmission(Pi(e,r),fc,un)}catch{rt.storeFailures+=1}}function Co(e,r){if(Kr()==="off")return;let t=z();if(t)try{t.releaseAdmission(Pi(e,r),fc)}catch{rt.storeFailures+=1}}function qh(e){let r={liveReservations:0,refreshed:0,deadReleased:0,missingForLive:0,orphaned:0,adoptionPass:!1};if(Kr()==="off")return r;let t=z();if(!t)return r;try{let n=new Set(e.liveWorkers.map(p=>Pi(p.runId,p.workerName))),o=t.listAdmissionReservations({keyPrefix:pc,limit:500}),s=new Set(o.map(p=>p.key)),i=[...n].filter(p=>!s.has(p)).length,a=o.filter(p=>!n.has(p.key)).length,l=!mc;mc=!0,!l&&i>0&&(rt.missingForLive+=i);let c=0;for(let p of e.liveWorkers)t.tryReserveAdmission(Pi(p.runId,p.workerName),fc,un),c+=1;let u=0;for(let p of o)n.has(p.key)||t.releaseAdmission(p.key,p.owner)&&(u+=1,rt.deadSlotsReleased+=1);return{liveReservations:t.listAdmissionReservations({keyPrefix:pc,limit:500}).length,refreshed:c,deadReleased:u,missingForLive:i,orphaned:a,adoptionPass:l}}catch{return rt.storeFailures+=1,r}}function Jh(){return{"admission.storeFailures":rt.storeFailures,"admission.missingForLive":rt.missingForLive,"admission.deadSlotsReleased":rt.deadSlotsReleased}}var gc="worker-slot-n:",Ai=64;function zh(e){return`${gc}${e}`}function Ii(e,r){return`${e}:${r}`}var tt={enforceStoreFailures:0,admissionsRefusedSlots:0,admissionsRefusedDiskBackstop:0};function Xh(e){if(Kr()!=="enforce")return{admitted:!0};let r=z();if(!r)return{admitted:!0};let t=Math.max(0,Math.min(Ai,Math.floor(e.maxSlots)));if(e.diskActiveWorkers>=t)return tt.admissionsRefusedDiskBackstop+=1,{admitted:!1,reason:"disk_backstop"};try{let n=Ii(e.runId,e.workerName);for(let o=0;o<t;o+=1)if(r.tryReserveAdmission(zh(o),n,un).acquired)return{admitted:!0,slot:o};return tt.admissionsRefusedSlots+=1,{admitted:!1,reason:"slots_exhausted"}}catch{return tt.enforceStoreFailures+=1,{admitted:!0}}}function nt(e,r){if(Kr()==="off")return;let t=z();if(t)try{let n=Ii(e,r),o=t.listAdmissionReservations({keyPrefix:gc,limit:Ai});for(let s of o)s.owner===n&&t.releaseAdmission(s.key,n)}catch{tt.enforceStoreFailures+=1}}function Qh(e){let r={refreshed:0,deadReleased:0,adopted:0};if(Kr()!=="enforce")return r;let t=z();if(!t)return r;try{let n=new Set(e.liveWorkers.map(c=>Ii(c.runId,c.workerName))),o=t.listAdmissionReservations({keyPrefix:gc,limit:Ai}),s=0,i=0,a=new Set;for(let c of o)n.has(c.owner)?(t.tryReserveAdmission(c.key,c.owner,un),a.add(c.owner),s+=1):t.releaseAdmission(c.key,c.owner)&&(i+=1);let l=0;for(let c of e.liveWorkers){let u=Ii(c.runId,c.workerName);if(!a.has(u)){for(let d=0;d<Ai;d+=1)if(t.tryReserveAdmission(zh(d),u,un).acquired){l+=1;break}}}return{refreshed:s,deadReleased:i,adopted:l}}catch{return tt.enforceStoreFailures+=1,r}}function Zh(){return{"admission.enforceStoreFailures":tt.enforceStoreFailures,"admission.refusedSlotsExhausted":tt.admissionsRefusedSlots,"admission.refusedDiskBackstop":tt.admissionsRefusedDiskBackstop}}O();O();var $I=/^[a-z0-9][a-z0-9._-]{0,127}$/i,jI=/^[a-z0-9][a-z0-9._-]{0,63}$/i,ek=new Set(["undefined","null"]),rk="usage: kynver worker <action> --run RUN_ID --name WORKER_NAME";function VI(e){let r=e.trim();if(!$I.test(r))throw new Error(`invalid run id: ${e}`);return r}function GI(e){let r=e.trim();if(!jI.test(r))throw new Error(`invalid worker name: ${e}`);return r}function tk(e){return typeof e=="string"?e.trim():""}function hc(e){let r=tk(e.run),t=tk(e.name);return(!r||ek.has(r))&&Je(`missing --run RUN_ID (${rk})`),(!t||ek.has(t))&&Je(`missing --name WORKER_NAME (${rk})`),{runId:VI(r),workerName:GI(t)}}import{existsSync as YI,mkdirSync as qI,readFileSync as JI,writeFileSync as zI}from"node:fs";import{homedir as XI}from"node:os";import uk from"node:path";var _e={keeperStoreFailures:0,meshStoreFailures:0,quotaStoreFailures:0,meshLeaseDivergences:0,meshEnforceStaleInversions:0,quotaVerdictDivergences:0};function Po(e){return Ur(process.env).flags[e]}var MY=1800*1e3;function kc(e){return`mesh-cron-lease:${e}`}function nk(e,r){if(Po("meshLease")==="off")return;let t=z();if(t)try{let n=t.latestRecoveryCheckpoint(kc(e));if(n){let o=JSON.parse(n.payloadJson);if((o.leaseToken??null)===(r.leaseToken??null)&&(o.holderBoxId??null)===(r.holderBoxId??null)&&o.authorized===r.authorized)return}t.saveRecoveryCheckpoint({scope:kc(e),payloadJson:JSON.stringify(r)})}catch{_e.meshStoreFailures+=1}}function ok(e,r){let t=Po("meshLease");if(t==="off")return null;let n=z();if(!n)return null;try{let o=n.latestRecoveryCheckpoint(kc(e)),s=o?JSON.parse(o.payloadJson):null,i=s!==null&&((s.leaseToken??null)!==(r?.leaseToken??null)||(s.holderBoxId??null)!==(r?.holderBoxId??null)||(s.authorized??null)!==(r?.authorized??null));return i&&(_e.meshLeaseDivergences+=1),t!=="enforce"?null:i&&r?.updatedAt&&s?.updatedAt&&Date.parse(r.updatedAt)>Date.parse(s.updatedAt)?(_e.meshEnforceStaleInversions+=1,null):s}catch{return _e.meshStoreFailures+=1,null}}function Oi(e){return`quota-cooldown:${e}`}var sk="quota-preflight";function ik(e,r){if(Po("quota")==="off")return;let t=z();if(t)try{t.tryReserveAdmission(Oi(e),sk,r)}catch{_e.quotaStoreFailures+=1}}function ak(e){if(Po("quota")==="off")return;let r=z();if(r)try{r.releaseAdmission(Oi(e),sk)}catch{_e.quotaStoreFailures+=1}}function lk(e,r){let t=Po("quota");if(t==="off")return null;let n=z();if(!n)return null;try{let o=n.listAdmissionReservations({keyPrefix:Oi(e),limit:50}).find(i=>i.key===Oi(e)),s=!!o;return s!==r&&(_e.quotaVerdictDivergences+=1),t==="enforce"?{blocked:s,retryAtIso:o?.expiresAt??null}:null}catch{return _e.quotaStoreFailures+=1,null}}function ck(){return{"keeper.storeFailures":_e.keeperStoreFailures,"meshLease.storeFailures":_e.meshStoreFailures,"meshLease.divergences":_e.meshLeaseDivergences,"meshLease.enforceStaleInversions":_e.meshEnforceStaleInversions,"quota.storeFailures":_e.quotaStoreFailures,"quota.verdictDivergences":_e.quotaVerdictDivergences}}var QI=/\b(out of usage|increase limits?|switch to auto|ask your admin to increase your limit|(?:hit|reached|exceeded|over) (?:your |the )?usage limits?|usage limits? (?:hit|reached|exceeded)|exceeded your (?:current )?quota|quota (?:exceeded|exhausted)|insufficient_quota|insufficient (?:credits?|quota)|credits? exhausted|credit balance is too low|billing hard limit|check your plan and billing|402 payment required|provider quota exhausted|provider_quota_exhausted)\b/i,ZI=30,eO=5,rO=240;function tO(e){let r=e?.trim();return!!(r&&QI.test(r))}function nO(){let e=(process.env.KYNVER_PROVIDER_QUOTA_PREFLIGHT??"on").trim().toLowerCase();return e!=="off"&&e!=="0"&&e!=="false"&&e!=="no"}function yc(){let e=Number.parseInt(process.env.KYNVER_PROVIDER_QUOTA_COOLDOWN_MINUTES??"",10);return Number.isFinite(e)?Math.min(rO,Math.max(eO,e)):ZI}function dk(){let e=process.env.KYNVER_PROVIDER_QUOTA_STORE_PATH?.trim();return e||uk.join(XI(),".kynver","provider-quota-cooldowns.json")}function Ao(e){return(e??"").trim().toLowerCase()}function Rc(){let e=dk();if(!YI(e))return{};try{let r=JSON.parse(JI(e,"utf8"));if(!r||typeof r!="object"||Array.isArray(r))return{};let t={};for(let[n,o]of Object.entries(r)){if(!o||typeof o!="object")continue;let{lastExhaustedAt:s,reason:i}=o;typeof s!="string"||!Number.isFinite(Date.parse(s))||(t[Ao(n)]={lastExhaustedAt:s,reason:typeof i=="string"?i.slice(0,500):""})}return t}catch{return{}}}function vc(e){let r=dk();try{qI(uk.dirname(r),{recursive:!0}),zI(r,`${JSON.stringify(e,null,2)}
164
+ `,"utf8")}catch{}}function oO(e,r,t=Date.now()){let n=Ao(e);if(!n)return;let o=Rc();o[n]={lastExhaustedAt:new Date(t).toISOString(),reason:r.trim().slice(0,500)},vc(o),ik(n,yc()*6e4)}function sO(e){let r=Ao(e);if(!r)return!1;ak(r);let t=Rc();return r in t?(delete t[r],vc(t),!0):!1}function pk(e,r=Date.now()){if(!nO())return{ok:!0};let t=Ao(e);if(!t)return{ok:!0};let n=Rc(),o=n[t],s=!!(o&&Number.isFinite(Date.parse(o.lastExhaustedAt))&&Date.parse(o.lastExhaustedAt)+yc()*6e4>r),i=lk(t,s);if(i)return i.blocked?{ok:!1,provider:t,reason:`provider "${t}" is inside its local quota cooldown`+(i.retryAtIso?` \u2014 preflight declines spawn until ${i.retryAtIso}`:""),retryAtIso:i.retryAtIso??new Date(r).toISOString()}:{ok:!0};if(!o)return{ok:!0};let a=Date.parse(o.lastExhaustedAt),l=a+yc()*6e4;if(!Number.isFinite(a)||l<=r)return delete n[t],vc(n),{ok:!0};let c=new Date(l).toISOString();return{ok:!1,provider:t,reason:`provider "${t}" reported quota exhaustion at ${o.lastExhaustedAt} \u2014 local preflight declines spawn until ${c}`+(o.reason?` (${o.reason.slice(0,160)})`:""),retryAtIso:c}}function iO(e){if(typeof e=="string"){let r=e.trim();return r.length?r:null}if(e&&typeof e=="object"&&!Array.isArray(e)){let r=e;for(let t of["result","summary","error"]){let n=r[t];if(typeof n=="string"&&n.trim())return n.trim()}}return null}function mk(e){let r=Ao(e.provider);if(!r)return"none";let t=iO(e.finalResult)??(typeof e.error=="string"&&e.error.trim()?e.error.trim():null);return t?tO(t)?(oO(r,t,e.nowMs??Date.now()),"recorded"):sO(r)?"cleared":"none":"none"}function fk(e){let r=e.usage;return!r||r.inputTokens===void 0&&r.outputTokens===void 0?null:{provider:e.provider?.trim()||"unknown",model:r.model?.trim()||e.model?.trim()||null,inputTokens:r.inputTokens??null,outputTokens:r.outputTokens??null}}import{statSync as OO}from"node:fs";import TO from"node:path";Za();import{createECDH as vk,randomBytes as uO}from"node:crypto";import{chmodSync as bk,existsSync as kk,mkdirSync as dO,readFileSync as pO,readdirSync as mO,renameSync as fO,writeFileSync as gO}from"node:fs";import{homedir as hO}from"node:os";import Sk from"node:path";import{createCipheriv as VY,createDecipheriv as GY,createECDH as YY,createHash as cO,hkdfSync as qY,randomBytes as JY}from"node:crypto";var aO=/^[A-Z][A-Z0-9_]{1,63}$/;var or={maxSecrets:100,maxValueBytes:16384,maxPurposeChars:200,minValueChars:4,minRedactChars:6},lO=new Set(["PATH","HOME","SHELL","USER","LOGNAME","NODE_OPTIONS","LD_PRELOAD","LD_LIBRARY_PATH","DYLD_INSERT_LIBRARIES","DYLD_LIBRARY_PATH","PWD","TMPDIR"]);function gk(e){return typeof e=="string"&&aO.test(e)&&!lO.has(e)&&!e.startsWith("KYNVER_")}function hk(e){return cO("sha256").update(e).digest("hex").slice(0,16).toUpperCase().match(/.{4}/g).join("-")}var yk="secret-store-keys";function dn(){return Sk.join(hO(),".kynver","secrets")}function Sc(e){dO(e,{recursive:!0,mode:448});try{bk(e,448)}catch{}}function wc(e,r){let t=`${e}.${process.pid}.tmp`;gO(t,r,{mode:384});try{bk(t,384)}catch{}fO(t,e)}function Rk(e){if(!e)return null;try{let r=JSON.parse(e);if(r.v===1&&typeof r.ecdh=="string"&&typeof r.vault=="string")return{v:1,ecdh:r.ecdh,vault:r.vault}}catch{}return null}function Ti(e,r){let t=Buffer.from(e.ecdh,"base64"),n=Buffer.from(e.vault,"base64");if(t.length!==32||n.length!==32)throw new Error("secret store keys are corrupt");let o=vk("prime256v1");o.setPrivateKey(t);let s=o.getPublicKey();return{ecdhPrivateKey:t,publicKeyRaw:s,fingerprint:hk(s),vaultKey:n,keyStore:r}}var kO=e=>Sk.join(e,"keys.json"),bc=class extends Error{constructor(){super("Saved secrets exist on this computer but their key can't be read (is the OS keyring locked?). Unlock it and try again."),this.name="SecretKeysUnavailableError"}};function wk(e={}){let r=e.root??dn(),t=e.keychain??Xn(),n=t.available?Rk(t.read(yk)):null;if(n)return Ti(n,"keychain");let o=kO(r),s=kk(o)?Rk(pO(o,"utf8")):null;if(s)return Ti(s,"file");if(kk(r)&&mO(r).some(d=>d.endsWith(".vault.json")))throw new bc;let i=vk("prime256v1");i.generateKeys();let a=Buffer.alloc(32),l=i.getPrivateKey();l.copy(a,32-l.length);let c={v:1,ecdh:a.toString("base64"),vault:uO(32).toString("base64")},u=JSON.stringify(c);return t.write(yk,u)?Ti(c,"keychain"):(Sc(r),wc(o,`${u}
165
+ `),Ti(c,"file"))}function yO(e){let r=new Set([e]),t=Buffer.from(e,"utf8").toString("base64");r.add(t),r.add(t.replace(/=+$/,"")),r.add(t.replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,""));let n=encodeURIComponent(e);n!==e&&r.add(n);let o=e.trim();return o&&o!==e&&r.add(o),[...r].filter(s=>s.length>=or.minRedactChars)}function RO(e){return e.length>=or.minValueChars&&e.length<or.minRedactChars}function vO(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function xk(e){let r=[];for(let o of e){let s=`[redacted ${o.name}]`;RO(o.value)&&r.push({needle:o.value,label:s,token:!0});for(let i of yO(o.value))r.push({needle:i,label:s,token:!1})}r.sort((o,s)=>s.needle.length-o.needle.length||Number(o.token)-Number(s.token));let t=new Set,n=r.filter(o=>{let s=`${o.token?"t":"s"}:${o.needle}`;return t.has(s)?!1:(t.add(s),!0)});return{empty:n.length===0,maxLength:n.reduce((o,s)=>Math.max(o,s.needle.length),0),partialSuffixLength(o){let s=0;for(let i of n){let a=i.needle[0];for(let l=Math.min(i.needle.length-1,o.length);l>s;l--)if(o[o.length-l]===a&&o.endsWith(i.needle.slice(0,l))){s=l;break}}return s},redact(o){if(!o||n.length===0)return o;let s=o;for(let i of n)if(i.token){let a=new RegExp(`(^|[^A-Za-z0-9_])${vO(i.needle)}(?=$|[^A-Za-z0-9_])`,"g");s=s.replace(a,`$1${i.label}`)}else s.includes(i.needle)&&(s=s.split(i.needle).join(i.label));return s}}}import{createHash as _O,randomBytes as EO}from"node:crypto";import{existsSync as CO,readFileSync as PO,rmSync as AO}from"node:fs";import IO from"node:path";import{createCipheriv as bO,createDecipheriv as SO,randomBytes as wO,scrypt as lq,timingSafeEqual as cq}from"node:crypto";var xO=32,_k=12,xc=16,uq={N:2**17,r:8,p:1},dq=2**14;var pn=class extends Error{constructor(r="the saved-login vault could not be decrypted"){super(r),this.name="VaultCryptoError"}};function _c(e,r,t){if(e.length!==xO)throw new pn("bad key length");let n=wO(_k),o=bO("aes-256-gcm",e,n);o.setAAD(Buffer.from(t,"utf8"));let s=Buffer.concat([o.update(r),o.final(),o.getAuthTag()]);return{n:n.toString("base64"),c:s.toString("base64")}}function Ec(e,r,t){try{let n=Buffer.from(r.n,"base64"),o=Buffer.from(r.c,"base64");if(n.length!==_k||o.length<xc)throw new pn;let s=SO("aes-256-gcm",e,n);return s.setAAD(Buffer.from(t,"utf8")),s.setAuthTag(o.subarray(o.length-xc)),Buffer.concat([s.update(o.subarray(0,o.length-xc)),s.final()])}catch(n){throw n instanceof pn?n:new pn}}var pq=Buffer.from("kynver-site-login-key-check-v1","utf8");var we=class extends Error{constructor(t,n){super(t);this.code=n;this.name="SecretStoreError"}code};function Cc(e){return`${_O("sha256").update(`kynver-secret:${e}`).digest("hex").slice(0,32)}.vault.json`}var Ni=(e,r,t)=>{for(let n of[e,r,t])if(n.includes(`
166
166
  `))throw new we("invalid field","invalid");return["kynver-secret/v1/value",e,r,t].join(`
167
- `)},pn=e=>({handle:e.handle,name:e.name,purpose:e.purpose,createdAt:e.createdAt,updatedAt:e.updatedAt,lastUsedAt:e.lastUsedAt,useCount:e.useCount}),Di=class{constructor(r){this.opts=r;if(!r.agentOsId.trim())throw new we("workspace is required","invalid");this.root=r.root??un(),this.file=IO.join(this.root,Cc(r.agentOsId)),this.now=r.now??(()=>new Date)}opts;file;root;now;read(){if(!CO(this.file))return{v:1,agentOsId:this.opts.agentOsId,secrets:[]};let r;try{r=JSON.parse(PO(this.file,"utf8"))}catch{throw new we("The saved-secrets file is damaged.","corrupt")}if(r.v!==1||!Array.isArray(r.secrets))throw new we("The saved-secrets file is damaged.","corrupt");if(r.agentOsId!==this.opts.agentOsId)throw new we("This saved-secrets file belongs to another workspace.","corrupt");return{v:1,agentOsId:r.agentOsId,secrets:r.secrets}}write(r){Sc(this.root),wc(this.file,`${JSON.stringify(r)}
168
- `)}list(){return this.read().secrets.map(pn)}find(r){let t=this.read().secrets.find(n=>r.handle?n.handle===r.handle:n.name===r.name);return t?pn(t):null}put(r){if(!gk(r.name))throw new we("That secret name isn't allowed.","invalid");let t=Buffer.byteLength(r.value,"utf8");if(t===0)throw new we("The secret is empty.","invalid");if(r.value.trim().length<or.minValueChars)throw new we(`The secret is too short \u2014 use at least ${or.minValueChars} characters.`,"invalid");if(t>or.maxValueBytes)throw new we("The secret is too long.","invalid");let n=(r.purpose??"").replace(/[\u0000-\u001f\u007f]/g," ").trim().slice(0,or.maxPurposeChars),o=this.read(),s=this.now().toISOString(),i=o.secrets.find(c=>c.name===r.name);if(i)return i.value=_c(this.opts.vaultKey,Buffer.from(r.value,"utf8"),Ni(this.opts.agentOsId,i.handle,i.name)),i.updatedAt=s,n&&(i.purpose=n),this.write(o),{summary:pn(i),replaced:!0};if(o.secrets.length>=or.maxSecrets)throw new we("This computer already holds the most secrets allowed.","full");let a=`sec_${EO(10).toString("hex")}`,l={handle:a,name:r.name,purpose:n,createdAt:s,updatedAt:s,lastUsedAt:null,useCount:0,value:_c(this.opts.vaultKey,Buffer.from(r.value,"utf8"),Ni(this.opts.agentOsId,a,r.name))};return o.secrets.push(l),this.write(o),{summary:pn(l),replaced:!1}}reveal(r){let t=this.read().secrets.find(n=>r.handle?n.handle===r.handle:n.name===r.name);if(!t)throw new we("No saved secret by that name.","not_found");try{let n=Ec(this.opts.vaultKey,t.value,Ni(this.opts.agentOsId,t.handle,t.name)).toString("utf8");return{summary:pn(t),value:n}}catch{throw new we(`The saved value for ${t.name} can't be read on this computer. Save it again.`,"unreadable")}}revealAllForRedaction(){let r=[];for(let t of this.read().secrets)try{r.push({name:t.name,value:Ec(this.opts.vaultKey,t.value,Ni(this.opts.agentOsId,t.handle,t.name)).toString("utf8")})}catch{}return r}touch(r){if(r.length===0)return;let t=this.read(),n=this.now().toISOString();for(let o of t.secrets)r.includes(o.handle)&&(o.lastUsedAt=n,o.useCount+=1);this.write(t)}remove(r){let t=this.read(),n=t.secrets.findIndex(s=>r.handle?s.handle===r.handle:s.name===r.name);if(n<0)throw new we("No saved secret by that name.","not_found");let[o]=t.secrets.splice(n,1);return t.secrets.length===0?AO(this.file,{force:!0}):this.write(t),pn(o)}};var NO=64,Pc=new Map;function DO(e,r){return`${r}\0${e}`}function MO(e){try{let r=OO(e);return r.isFile()?`${r.mtimeMs}:${r.size}`:null}catch{return null}}function WO(e,r=un()){if(!e)return null;let t=TO.join(r,Cc(e)),n=MO(t),o=DO(e,r);if(!n)return Pc.delete(o),null;let s=Pc.get(o);if(s&&s.stamp===n)return s.redactor;try{let i=wk({root:r}),a=xk(new Di({agentOsId:e,vaultKey:i.vaultKey,root:r}).revealAllForRedaction());return Pc.set(o,{stamp:n,redactor:a}),a}catch{return null}}function Ac(e,r,t){if(typeof e=="string")return r.redact(e);if(t>NO||e===null||typeof e!="object")return e;if(Array.isArray(e))return e.map(o=>Ac(o,r,t+1));let n={};for(let[o,s]of Object.entries(e))n[o]=Ac(s,r,t+1);return n}function Ek(e,r,t=un()){let n=WO(e,t);return!n||n.empty?r:Ac(r,n,0)}async function Ck(e,r,t){let n=await fetch(e,{method:"POST",headers:Zn(r),body:JSON.stringify(t)}),o=null;try{o=await n.json()}catch{o=null}return{ok:n.ok,status:n.status,parsed:o}}function LO(e){if(e&&typeof e=="object"){let r=e.error;if(typeof r=="string"&&r.trim())return r.trim()}}function Pk(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function Ao(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function BO(e){return e.completionBlocker?`blocked:${e.completionBlocker}`:e.completionOutcome?e.completionOutcome:e.completionReportedAt?"completion_acknowledged":e.finished?"worker_finished":"in_progress"}function UO(e){return e.completionBlocker?"Resolve completion blocker, then rerun `kynver worker complete`.":e.completionOutcome==="review_scheduled"||e.completionOutcome==="review_already_scheduled"?"Await review lane and landing decision in Command Center.":e.completionOutcome==="needs_attention"?"Inspect blocker/attention reason in Command Center and dispatch a repair task.":e.finished&&!e.completionReportedAt?"Post completion acknowledgement to AgentOS (`kynver worker complete`).":null}function Ik(e){let r=e?.trim();return r?/completion acknowledged but board not advanced/i.test(r)&&/task already terminal/i.test(r):!1}function FO(e){return e.prUrl?"pr_handoff":e.headCommit?"commit_handoff":e.changedFiles.length>0?"dirty_worktree":"none"}function mn(e,r){(e.completionBlocker??void 0)!==(r??void 0)&&(r?e.completionBlocker=r:delete e.completionBlocker,L(e.runId,e))}function KO(e){e.completionBlocker&&(delete e.completionBlocker,L(e.runId,e))}function Ic(e){return e?{base:e.base,baseCommit:e.baseCommit}:{}}function HO(e,r){return{...e,...r.prUrl?{prUrl:r.prUrl}:{},...r.headCommit?{headCommit:r.headCommit}:{}}}async function Oo(e){let{runId:r,workerName:t}=hc(e),n=zt(r,t),o=q(n.runId),s=J(n,Ic(o)),i=(e.agentOsId?String(e.agentOsId):n.agentOsId)||"",a=(e.taskId?String(e.taskId):n.taskId)||null;if(!xe(s))return{ok:!0,skipped:!0,reason:"worker-not-finished"};if(n.localOnly)return{ok:!0,skipped:!0,reason:"local-only-worker"};if(!i)return{ok:!1,reason:"missing agentOsId"};let l=e.force===!0||e.force==="true";if(!l&&ko(n))return{ok:!0,skipped:!0,reason:"completion-already-acknowledged",httpStatus:200};if(!l&&Yl(n)&&KO(n),!s.finalResult&&s.alive===!1){let _=bi({worker:n,status:s});_&&Si(n,_)&&(L(n.runId,n),n=zt(r,t),s=J(n,Ic(o)))}if(!(e.skipPrHandoff===!0||e.skipPrHandoff==="true")&&!n.steerRestartRequired&&n.dispatched&&a){let _=Zl({worker:n,run:o,status:s});if(!_.ok)return mn(n,_.reason),{ok:!1,reason:_.reason,nextAction:_.nextAction,completionBlocked:!0};(_.prUrl||_.headCommit)&&(s=J(n,Ic(o)),s=HO(s,_))}let u=s.gitAncestry.headIsAncestorOfBase===!1&&s.gitAncestry.head?s.gitAncestry.head:s.headCommit;if(n.dispatched&&!n.steerRestartRequired){let _=Eh({changedFiles:s.changedFiles,finalResult:s.finalResult,prUrl:s.prUrl,headCommit:u,disposableArtifactsRemoved:n.disposableArtifactsRemoved});if(!_.allowed){let K=_.detail??`worktree completion blocked (${_.state})`;return mn(n,K),{ok:!1,reason:K,nextAction:"Clean the worktree (commit, open a PR, or `kynver worker discard-disposable --path <file>`), then rerun `kynver worker complete`.",completionBlocked:!0}}}try{mk({provider:n.provider??s.provider??null,finalResult:s.finalResult})}catch{}let d=Q(e.baseUrl?String(e.baseUrl):void 0),p=e.secret?String(e.secret):void 0,m=await ee(p,i,{baseUrl:d});a&&(await ii({worker:n,agentOsId:i,baseUrl:d,secret:m}),n=zt(r,t));let f=`${d}/api/agent-os/by-id/${encodeURIComponent(i)}/harness/completion`,y={...s};n.disposableArtifactsRemoved?.length&&(y.disposableArtifactsRemoved=n.disposableArtifactsRemoved),n.steerRestartRequired&&(y.steerRestartRequired=!0,y.pendingSteerEventIds=n.pendingSteerEventIds??[],n.dispatchSteerFenceEventId!=null&&(y.dispatchSteerFenceEventId=n.dispatchSteerFenceEventId));let k=fk({usage:s.usage,provider:n.provider??s.provider??null,model:typeof n.model=="string"?n.model:s.model??null}),b=Ek(i,{source:"kynver-harness",agentOsId:i,runId:n.runId,workerName:n.name,taskId:a,leaseToken:n.leaseToken??null,startedAt:n.startedAt,finishedAt:s.lastActivityAt||new Date().toISOString(),...k?{workerUsage:k}:{},status:n.leaseToken?{...y,leaseToken:n.leaseToken}:y,workerInjection:{instructionPolicyFingerprint:n.instructionPolicyFingerprint??null,instructionPolicyEvidence:n.instructionPolicyEvidence??null,memoryQualityCapture:n.memoryQualityCapture??null,policyAt:n.instructionPolicyEvidence&&typeof n.instructionPolicyEvidence=="object"&&"policyAt"in n.instructionPolicyEvidence&&typeof n.instructionPolicyEvidence.policyAt=="string"?n.instructionPolicyEvidence.policyAt:null,personaSlug:n.personaSlug??null,personaEvidence:n.personaEvidence??null,contextEnvelopeEvidence:n.contextEnvelopeEvidence??null}}),g=a&&n.leaseToken?{taskId:a,leaseToken:n.leaseToken}:null;if(g){if(Fh(g),Kh(g)){let _={completionReportedAt:new Date().toISOString(),completionOutcome:"acknowledged",completionResponse:{replayShortCircuited:!0}};return ui(n,n.runId,_),Ri(n,s,{source:"harness-completion"}),mn(n,void 0),Eo(n.runId,n.name),tt(n.runId,n.name),{ok:!0,httpStatus:200,response:{ok:!0,replayShortCircuited:!0},reason:"completion_replay_short_circuited",...s.prUrl?{prHandoff:{prUrl:s.prUrl}}:{}}}Uh(g)}let h=await Ck(f,m,b);if((h.status===401||h.status===403)&&!p){let _=await wm(i,{baseUrl:d});_&&_!==m&&(m=_,h=await Ck(f,m,b))}if(h.ok){let _=Dg(h.parsed);if(!Mg(_)){let ke=`completion acknowledged but board not advanced: ${_.detail??(_.routeOutcome?`harness completion returned ${_.routeOutcome}`:"harness completion did not advance the linked task")}`;mn(n,ke);let Ye={completionReportedAt:new Date().toISOString(),completionOutcome:"rejected",completionResponse:h.parsed};return ui(n,n.runId,Ye),g&&uc(g,"rejected"),{ok:!1,httpStatus:h.status,response:h.parsed,reason:ke,completionBlocked:!0}}mn(n,void 0);let K=_.routeOutcome??"acknowledged",$={completionReportedAt:new Date().toISOString(),completionOutcome:"acknowledged",completionResponse:h.parsed};ui(n,n.runId,$),Ri(n,s,{source:"harness-completion"}),g&&uc(g,"acknowledged"),Eo(n.runId,n.name),tt(n.runId,n.name);let C=s.prUrl;return{ok:!0,httpStatus:h.status,response:h.parsed,reason:K,...C?{prHandoff:{prUrl:C}}:{}}}let w=h.status===401||h.status===403,E=LO(h.parsed)??(w?"runner token unauthorized":"non-2xx response"),S=w?`completion replay rejected (${h.status}): ${E}`:`completion replay failed (${h.status}): ${E}`;return mn(n,S),{ok:!1,httpStatus:h.status,response:h.parsed,completionBlocked:!0}}function Ok(e){let{run:r,workerName:t,worker:n}=e,o=J(n,{base:r.base,baseCommit:r.baseCommit}),s=o.gitAncestry.headIsAncestorOfBase===!1&&o.gitAncestry.head?o.gitAncestry.head:void 0,i=Kt({alive:o.alive,finalResult:o.finalResult,changedFiles:o.changedFiles,gitAncestry:o.gitAncestry,headCommit:s}),a=n.completionBlocker,l=typeof a=="string"&&a?a:void 0,c=Ik(l)?void 0:l,u=c?"blocked":o.status,d=c?"blocked":o.attention.state,p=Pk(n.completionResponse),m=Pk(p?.task),f=Ao(p?.outcome),y=Ao(p?.status),k=Array.isArray(p?.warnings)?p.warnings.filter(S=>typeof S=="string"&&S.trim().length>0):[],b=Ao(m?.prUrl)??Ao(p?.prUrl),g=Ao(n.completionReportedAt),h=BO({finished:xe(o),completionBlocker:c,completionOutcome:f,completionReportedAt:g}),w=UO({completionBlocker:c,completionOutcome:f,completionReportedAt:g,finished:xe(o)}),E=FO({changedFiles:o.changedFiles,headCommit:s,prUrl:b??void 0});return{worker:o.worker,status:u,attention:d,attentionReason:c??o.attention.reason,landingBlocked:o.finalResult?d==="needs_attention"||d==="blocked":!1,exitedWithoutFinalResult:!o.finalResult&&!o.alive,salvageState:i?.salvageable?"review_needed":"none",salvageReason:i?.salvageable?i.attentionReason:void 0,pid:o.pid,alive:o.alive,currentTool:o.currentTool,lastActivityAt:o.lastActivityAt,lastHeartbeatPhase:o.lastHeartbeatPhase,lastHeartbeatSummary:o.lastHeartbeatSummary,heartbeatBlocker:o.heartbeatBlocker,changedFileCount:o.changedFiles.length,changedFiles:o.changedFiles,branch:o.branch,taskId:n.taskId??null,planId:n.planId??null,instructionPolicyFingerprint:typeof n.instructionPolicyFingerprint=="string"?n.instructionPolicyFingerprint:null,instructionPolicyRuleCount:(()=>{let S=n.instructionPolicyEvidence;if(!S||typeof S!="object")return null;let _=S.ruleSlugs;return Array.isArray(_)?_.length:null})(),leaseOwner:n.leaseOwner??null,model:typeof n.model=="string"?n.model:void 0,routingRule:typeof n.routingRule=="string"?n.routingRule:void 0,requestedModel:typeof n.requestedModel=="string"?n.requestedModel:void 0,headCommit:s,prUrl:b,handoffState:E,gitAncestry:o.gitAncestry,finalResult:o.finalResult,lifecycleStage:h,completionReportedAt:g,completionOutcome:n.completionOutcome??null,completionRouteStatus:y,completionRouteOutcome:f,completionWarnings:k,completionBlocker:c??null,checkpoint:{phase:o.lastHeartbeatPhase,summary:o.lastHeartbeatSummary,blocker:o.heartbeatBlocker},lastCommandHint:o.currentTool??o.lastHeartbeatSummary,failureReason:c??o.error??null,nextAction:w,ancestry:o.gitAncestry.relation,ancestryChecked:o.gitAncestry.checked}}function $O(e){let r=typeof e.status=="string"?e.status:"",t=typeof e.completionBlocker=="string"&&e.completionBlocker.trim().length>0?e.completionBlocker:void 0;return t&&!Ik(t)?!1:typeof e.completionReportedAt=="string"&&e.completionReportedAt.trim()||e.completionOutcome==="acknowledged"?!0:r==="done"}function jO(e,r){return{worker:e,status:"done",attention:"done",attentionReason:"metadata terminal worker; full status skipped in compact snapshot",alive:!1,pid:typeof r.pid=="number"?r.pid:void 0,branch:typeof r.branch=="string"?r.branch:void 0,taskId:r.taskId??null,planId:r.planId??null,model:typeof r.model=="string"?r.model:void 0,routingRule:typeof r.routingRule=="string"?r.routingRule:void 0,requestedModel:typeof r.requestedModel=="string"?r.requestedModel:void 0,lifecycleStage:r.completionReportedAt?"completion_acknowledged":"worker_finished",completionReportedAt:typeof r.completionReportedAt=="string"?r.completionReportedAt:null,completionOutcome:r.completionOutcome??null,localOnly:r.localOnly===!0,compactStatus:!0}}function Io(e,r){let t={};for(let n of e){let o=n[r],s=typeof o=="string"&&o.trim()?o:"unknown";t[s]=(t[s]??0)+1}return t}function Ak(e){if(e.attention!=="blocked")return!1;let r=typeof e.attentionReason=="string"?e.attentionReason:"";return r.includes("cli-config.json.tmp")||r.includes("Invalid authentication credentials")||r.includes("provider CLI is missing or not on PATH")||r.includes("unknown command:")}function VO(e){let r=e.filter(Ak),t=e.filter(n=>{if(Ak(n))return!1;let o=n.attention;return o==="needs_attention"||o==="blocked"||o==="stale"||n.status==="running"});return{actionableCount:t.length,runningCount:e.filter(n=>n.status==="running").length,blockedCount:e.filter(n=>n.attention==="blocked").length,staleCount:e.filter(n=>n.attention==="stale").length,needsAttentionCount:e.filter(n=>n.attention==="needs_attention").length,doneCount:e.filter(n=>n.status==="done").length,systemHealthBlockerCount:r.length,systemHealthBlockers:r.slice(0,10).map(n=>({worker:n.worker,status:n.status,attention:n.attention,attentionReason:n.attentionReason,model:n.model,routingRule:n.routingRule,lastActivityAt:n.lastActivityAt})),actionableWorkers:t.slice(0,25).map(n=>({worker:n.worker,status:n.status,attention:n.attention,attentionReason:n.attentionReason,taskId:n.taskId,planId:n.planId,model:n.model,routingRule:n.routingRule,lastActivityAt:n.lastActivityAt,nextAction:n.nextAction}))}}function Tk(e,r,t){let n={runId:e.id,name:e.name,status:Da(e.status,r),repo:e.repo,workerCount:r.length,needsAttention:r.filter(o=>o.attention&&o.attention!=="ok"&&o.attention!=="done").map(o=>o.worker),workers:r};return t&&(n.summary={statusCounts:Io(r,"status"),attentionCounts:Io(r,"attention"),lifecycleCounts:Io(r,"lifecycleStage")},n.controller=VO(r)),n}function GO(e){return e.status==="done"&&e.attention==="done"}function Oc(e){let r=q(e),n=Object.keys(r.workers||{}).map(s=>{let i=I(Mi.join(N(r.id),"workers",x(s),"worker.json"),void 0);return i?Ok({run:r,workerName:s,worker:i}):{worker:s,status:"missing",attention:"needs_attention",attentionReason:"worker.json not found"}}),o=Tk(r,n,!1);return ue(Mi.join(N(r.id),"last-board.json"),o),o}function Tc(e){let r=q(e),n=Object.keys(r.workers||{}).map(i=>{let a=I(Mi.join(N(r.id),"workers",x(i),"worker.json"),void 0);return a?$O(a)?jO(i,a):Ok({run:r,workerName:i,worker:a}):{worker:i,status:"missing",attention:"needs_attention",attentionReason:"worker.json not found"}}),o=n.filter(i=>!GO(i)),s=Tk(r,o,!0);return s.status=Da(r.status,n),s.summary={...s.summary??{},totalWorkerCount:n.length,shownWorkerCount:o.length,omittedTerminalDoneWorkerCount:n.length-o.length,allStatusCounts:Io(n,"status"),allAttentionCounts:Io(n,"attention")},ue(Mi.join(N(r.id),"last-board-compact.json"),s),s}async function Nk(e,r){let t=String(e.run||""),n=String(e.agentOsId||"");if(!t||!n)return null;let o=Oc(t),s=Q(e.baseUrl?String(e.baseUrl):void 0),i=await ee(e.secret?String(e.secret):void 0,n,{baseUrl:s}),a=`${s}/api/agent-os/by-id/${encodeURIComponent(n)}/harness/snapshot`,l=await X(a,i,{agentOsId:n,runId:t,source:r,snapshot:o},{agentOsId:n,baseUrl:s});return{ok:l.ok,httpStatus:l.status,response:l.response,authRefreshed:l.refreshedAuth,authRefreshFailure:l.authRefreshFailure}}O();H();B();O();var kJ=360*60*1e3;function Mk(e){let r=e.nodeExecutable??process.execPath,t=Qs({importMetaUrl:import.meta.url,explicitCliPath:e.cliPath,nodeExecutable:r});if(!t)return;let n=t.cliPath;if(!qO(n))return;let o=zO.join(e.workerDir,"auto-complete.log"),s;try{s=JO(o,"a")}catch{s=void 0}let i=["ignore",s??"ignore",s??"ignore"],a=[...t.argsPrefix,"worker","auto-complete","--run",e.runId,"--name",e.workerName];e.agentOsId&&a.push("--agent-os-id",e.agentOsId),e.baseUrl&&a.push("--base-url",e.baseUrl),e.secret&&a.push("--secret",e.secret);try{let l=YO(t.command,a,ae({detached:ce(),stdio:i,env:process.env}));return s!==void 0&&Dk(s),l.unref(),{pid:l.pid,logPath:o,cliPath:n}}catch{if(s!==void 0)try{Dk(s)}catch{}return}}de();function Wk(e,r,t){Z(e,["fetch","origin",t,"--prune"],{allowFailure:!0});let n=`origin/${t}`,o=ne(e,["worktree","add","-B",t,r,n]);if(o.status===0)return;let s=ne(e,["worktree","add","-b",t,r,"HEAD"]);if(s.status!==0){let i=o.stderr||o.stdout||s.stderr||s.stdout||"git worktree add failed for repair target branch";throw new Error(i)}}Le();_s();H();import nT from"node:net";import{chmodSync as oT,unlinkSync as sT}from"node:fs";import{createHash as XO}from"node:crypto";import{chmodSync as QO,mkdirSync as ZO}from"node:fs";import Lk from"node:os";import eT from"node:path";var rT=100,tT="\\\\.\\pipe\\";function Bk(e,r){return XO("sha256").update(e).digest("hex").slice(0,r)}function Nc(e){let r=e.platform??process.platform,t=Bk(e.agentOsId,12),n=Bk(e.workerKey,16);if(r==="win32")return{socketPath:`${tT}kynver-worker-${t}-${n}`,socketDir:null,isNamedPipe:!0,relocated:!1};let o=eT.posix,s=e.homeDir??Lk.homedir(),i=o.join(s,".kynver","brokers",t),a=o.join(i,`${n}.sock`);if(Buffer.byteLength(a,"utf8")<=rT)return{socketPath:a,socketDir:i,isNamedPipe:!1,relocated:!1};let l=o.join(e.tmpDir??Lk.tmpdir(),`kynver-brokers-${t}`);return{socketPath:o.join(l,`${n}.sock`),socketDir:l,isNamedPipe:!1,relocated:!0}}function Dc(e){e.socketDir&&(ZO(e.socketDir,{recursive:!0,mode:448}),QO(e.socketDir,448))}var To=class e{server;opts;now;fetchImpl;grantedTools;connections=new Set;sockets=new Set;revoked=!1;closed=!1;constructor(r){if(typeof r.identity?.verify!="function")throw new Error("WorkerBroker requires an explicit identity posture (S11) \u2014 see worker-broker/identity.ts");this.opts=r,this.now=r.now??Date.now,this.fetchImpl=r.fetchImpl??fetch,this.grantedTools=so(r.capabilities),this.server=nT.createServer(t=>{this.handleConnection(t)}),this.server.on("error",()=>{})}static async start(r){let t=new e(r);if(Dc(r.address),await new Promise((n,o)=>{t.server.once("error",o),t.server.listen(r.address.socketPath,()=>{t.server.removeListener("error",o),n()})}),!r.address.isNamedPipe)try{oT(r.address.socketPath,384)}catch{}return t}get identitySummary(){return this.opts.identity.summary}get toolDescriptors(){return this.grantedTools.filter(on).map(r=>co[r])}async revoke(){this.revoked=!0,await this.close()}async close(){if(!this.closed){this.closed=!0;for(let r of this.sockets)r.destroy();if(this.sockets.clear(),this.connections.clear(),await new Promise(r=>this.server.close(()=>r())),!this.opts.address.isNamedPipe)try{sT(this.opts.address.socketPath)}catch{}}}refuse(r,t){this.opts.onRefusal?.(r,t)}async handleConnection(r){this.sockets.add(r),r.on("close",()=>{this.sockets.delete(r),this.connections.delete(r)});for(let o of this.connections)(o.destroyed||o.readableEnded)&&this.connections.delete(o);if(this.connections.size>=1){this.refuse("concurrent_connection","a second concurrent connection was attempted while the worker's own connection was open"),this.write(r,{id:"",ok:!1,reason:"concurrent_connection",error:"worker tools are already in use for this task"}),r.end();return}this.connections.add(r);let t=await this.opts.identity.verify({socket:r,workerPid:this.opts.workerPid});if(!t.ok){this.refuse("identity_refused",t.detail),this.write(r,{id:"",ok:!1,reason:"identity_refused",error:"caller could not be identified as this worker"}),r.end();return}let n="";r.setEncoding("utf8"),r.on("data",o=>{if(n+=o,Buffer.byteLength(n,"utf8")>1048576){this.refuse("request_too_large","request exceeded the line cap"),this.write(r,{id:"",ok:!1,reason:"request_too_large",error:"request exceeded the maximum size"}),r.end();return}let s=n.indexOf(`
167
+ `)},mn=e=>({handle:e.handle,name:e.name,purpose:e.purpose,createdAt:e.createdAt,updatedAt:e.updatedAt,lastUsedAt:e.lastUsedAt,useCount:e.useCount}),Di=class{constructor(r){this.opts=r;if(!r.agentOsId.trim())throw new we("workspace is required","invalid");this.root=r.root??dn(),this.file=IO.join(this.root,Cc(r.agentOsId)),this.now=r.now??(()=>new Date)}opts;file;root;now;read(){if(!CO(this.file))return{v:1,agentOsId:this.opts.agentOsId,secrets:[]};let r;try{r=JSON.parse(PO(this.file,"utf8"))}catch{throw new we("The saved-secrets file is damaged.","corrupt")}if(r.v!==1||!Array.isArray(r.secrets))throw new we("The saved-secrets file is damaged.","corrupt");if(r.agentOsId!==this.opts.agentOsId)throw new we("This saved-secrets file belongs to another workspace.","corrupt");return{v:1,agentOsId:r.agentOsId,secrets:r.secrets}}write(r){Sc(this.root),wc(this.file,`${JSON.stringify(r)}
168
+ `)}list(){return this.read().secrets.map(mn)}find(r){let t=this.read().secrets.find(n=>r.handle?n.handle===r.handle:n.name===r.name);return t?mn(t):null}put(r){if(!gk(r.name))throw new we("That secret name isn't allowed.","invalid");let t=Buffer.byteLength(r.value,"utf8");if(t===0)throw new we("The secret is empty.","invalid");if(r.value.trim().length<or.minValueChars)throw new we(`The secret is too short \u2014 use at least ${or.minValueChars} characters.`,"invalid");if(t>or.maxValueBytes)throw new we("The secret is too long.","invalid");let n=(r.purpose??"").replace(/[\u0000-\u001f\u007f]/g," ").trim().slice(0,or.maxPurposeChars),o=this.read(),s=this.now().toISOString(),i=o.secrets.find(c=>c.name===r.name);if(i)return i.value=_c(this.opts.vaultKey,Buffer.from(r.value,"utf8"),Ni(this.opts.agentOsId,i.handle,i.name)),i.updatedAt=s,n&&(i.purpose=n),this.write(o),{summary:mn(i),replaced:!0};if(o.secrets.length>=or.maxSecrets)throw new we("This computer already holds the most secrets allowed.","full");let a=`sec_${EO(10).toString("hex")}`,l={handle:a,name:r.name,purpose:n,createdAt:s,updatedAt:s,lastUsedAt:null,useCount:0,value:_c(this.opts.vaultKey,Buffer.from(r.value,"utf8"),Ni(this.opts.agentOsId,a,r.name))};return o.secrets.push(l),this.write(o),{summary:mn(l),replaced:!1}}reveal(r){let t=this.read().secrets.find(n=>r.handle?n.handle===r.handle:n.name===r.name);if(!t)throw new we("No saved secret by that name.","not_found");try{let n=Ec(this.opts.vaultKey,t.value,Ni(this.opts.agentOsId,t.handle,t.name)).toString("utf8");return{summary:mn(t),value:n}}catch{throw new we(`The saved value for ${t.name} can't be read on this computer. Save it again.`,"unreadable")}}revealAllForRedaction(){let r=[];for(let t of this.read().secrets)try{r.push({name:t.name,value:Ec(this.opts.vaultKey,t.value,Ni(this.opts.agentOsId,t.handle,t.name)).toString("utf8")})}catch{}return r}touch(r){if(r.length===0)return;let t=this.read(),n=this.now().toISOString();for(let o of t.secrets)r.includes(o.handle)&&(o.lastUsedAt=n,o.useCount+=1);this.write(t)}remove(r){let t=this.read(),n=t.secrets.findIndex(s=>r.handle?s.handle===r.handle:s.name===r.name);if(n<0)throw new we("No saved secret by that name.","not_found");let[o]=t.secrets.splice(n,1);return t.secrets.length===0?AO(this.file,{force:!0}):this.write(t),mn(o)}};var NO=64,Pc=new Map;function DO(e,r){return`${r}\0${e}`}function MO(e){try{let r=OO(e);return r.isFile()?`${r.mtimeMs}:${r.size}`:null}catch{return null}}function WO(e,r=dn()){if(!e)return null;let t=TO.join(r,Cc(e)),n=MO(t),o=DO(e,r);if(!n)return Pc.delete(o),null;let s=Pc.get(o);if(s&&s.stamp===n)return s.redactor;try{let i=wk({root:r}),a=xk(new Di({agentOsId:e,vaultKey:i.vaultKey,root:r}).revealAllForRedaction());return Pc.set(o,{stamp:n,redactor:a}),a}catch{return null}}function Ac(e,r,t){if(typeof e=="string")return r.redact(e);if(t>NO||e===null||typeof e!="object")return e;if(Array.isArray(e))return e.map(o=>Ac(o,r,t+1));let n={};for(let[o,s]of Object.entries(e))n[o]=Ac(s,r,t+1);return n}function Ek(e,r,t=dn()){let n=WO(e,t);return!n||n.empty?r:Ac(r,n,0)}async function Ck(e,r,t){let n=await fetch(e,{method:"POST",headers:eo(r),body:JSON.stringify(t)}),o=null;try{o=await n.json()}catch{o=null}return{ok:n.ok,status:n.status,parsed:o}}function LO(e){if(e&&typeof e=="object"){let r=e.error;if(typeof r=="string"&&r.trim())return r.trim()}}function Pk(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function Io(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function BO(e){return e.completionBlocker?`blocked:${e.completionBlocker}`:e.completionOutcome?e.completionOutcome:e.completionReportedAt?"completion_acknowledged":e.finished?"worker_finished":"in_progress"}function UO(e){return e.completionBlocker?"Resolve completion blocker, then rerun `kynver worker complete`.":e.completionOutcome==="review_scheduled"||e.completionOutcome==="review_already_scheduled"?"Await review lane and landing decision in Command Center.":e.completionOutcome==="needs_attention"?"Inspect blocker/attention reason in Command Center and dispatch a repair task.":e.finished&&!e.completionReportedAt?"Post completion acknowledgement to AgentOS (`kynver worker complete`).":null}function Ik(e){let r=e?.trim();return r?/completion acknowledged but board not advanced/i.test(r)&&/task already terminal/i.test(r):!1}function FO(e){return e.prUrl?"pr_handoff":e.headCommit?"commit_handoff":e.changedFiles.length>0?"dirty_worktree":"none"}function fn(e,r){(e.completionBlocker??void 0)!==(r??void 0)&&(r?e.completionBlocker=r:delete e.completionBlocker,L(e.runId,e))}function KO(e){e.completionBlocker&&(delete e.completionBlocker,L(e.runId,e))}function Ic(e){return e?{base:e.base,baseCommit:e.baseCommit}:{}}function HO(e,r){return{...e,...r.prUrl?{prUrl:r.prUrl}:{},...r.headCommit?{headCommit:r.headCommit}:{}}}async function To(e){let{runId:r,workerName:t}=hc(e),n=Xt(r,t),o=q(n.runId),s=J(n,Ic(o)),i=(e.agentOsId?String(e.agentOsId):n.agentOsId)||"",a=(e.taskId?String(e.taskId):n.taskId)||null;if(!xe(s))return{ok:!0,skipped:!0,reason:"worker-not-finished"};if(n.localOnly)return{ok:!0,skipped:!0,reason:"local-only-worker"};if(!i)return{ok:!1,reason:"missing agentOsId"};let l=e.force===!0||e.force==="true";if(!l&&yo(n))return{ok:!0,skipped:!0,reason:"completion-already-acknowledged",httpStatus:200};if(!l&&Yl(n)&&KO(n),!s.finalResult&&s.alive===!1){let _=bi({worker:n,status:s});_&&Si(n,_)&&(L(n.runId,n),n=Xt(r,t),s=J(n,Ic(o)))}if(!(e.skipPrHandoff===!0||e.skipPrHandoff==="true")&&!n.steerRestartRequired&&n.dispatched&&a){let _=Zl({worker:n,run:o,status:s});if(!_.ok)return fn(n,_.reason),{ok:!1,reason:_.reason,nextAction:_.nextAction,completionBlocked:!0};(_.prUrl||_.headCommit)&&(s=J(n,Ic(o)),s=HO(s,_))}let u=s.gitAncestry.headIsAncestorOfBase===!1&&s.gitAncestry.head?s.gitAncestry.head:s.headCommit;if(n.dispatched&&!n.steerRestartRequired){let _=Eh({changedFiles:s.changedFiles,finalResult:s.finalResult,prUrl:s.prUrl,headCommit:u,disposableArtifactsRemoved:n.disposableArtifactsRemoved});if(!_.allowed){let K=_.detail??`worktree completion blocked (${_.state})`;return fn(n,K),{ok:!1,reason:K,nextAction:"Clean the worktree (commit, open a PR, or `kynver worker discard-disposable --path <file>`), then rerun `kynver worker complete`.",completionBlocked:!0}}}try{mk({provider:n.provider??s.provider??null,finalResult:s.finalResult})}catch{}let d=Q(e.baseUrl?String(e.baseUrl):void 0),p=e.secret?String(e.secret):void 0,m=await ee(p,i,{baseUrl:d});a&&(await ii({worker:n,agentOsId:i,baseUrl:d,secret:m}),n=Xt(r,t));let f=`${d}/api/agent-os/by-id/${encodeURIComponent(i)}/harness/completion`,y={...s};n.disposableArtifactsRemoved?.length&&(y.disposableArtifactsRemoved=n.disposableArtifactsRemoved),n.steerRestartRequired&&(y.steerRestartRequired=!0,y.pendingSteerEventIds=n.pendingSteerEventIds??[],n.dispatchSteerFenceEventId!=null&&(y.dispatchSteerFenceEventId=n.dispatchSteerFenceEventId));let k=fk({usage:s.usage,provider:n.provider??s.provider??null,model:typeof n.model=="string"?n.model:s.model??null}),b=Ek(i,{source:"kynver-harness",agentOsId:i,runId:n.runId,workerName:n.name,taskId:a,leaseToken:n.leaseToken??null,startedAt:n.startedAt,finishedAt:s.lastActivityAt||new Date().toISOString(),...k?{workerUsage:k}:{},status:n.leaseToken?{...y,leaseToken:n.leaseToken}:y,workerInjection:{instructionPolicyFingerprint:n.instructionPolicyFingerprint??null,instructionPolicyEvidence:n.instructionPolicyEvidence??null,memoryQualityCapture:n.memoryQualityCapture??null,policyAt:n.instructionPolicyEvidence&&typeof n.instructionPolicyEvidence=="object"&&"policyAt"in n.instructionPolicyEvidence&&typeof n.instructionPolicyEvidence.policyAt=="string"?n.instructionPolicyEvidence.policyAt:null,personaSlug:n.personaSlug??null,personaEvidence:n.personaEvidence??null,contextEnvelopeEvidence:n.contextEnvelopeEvidence??null}}),g=a&&n.leaseToken?{taskId:a,leaseToken:n.leaseToken}:null;if(g){if(Fh(g),Kh(g)){let _={completionReportedAt:new Date().toISOString(),completionOutcome:"acknowledged",completionResponse:{replayShortCircuited:!0}};return ui(n,n.runId,_),Ri(n,s,{source:"harness-completion"}),fn(n,void 0),Co(n.runId,n.name),nt(n.runId,n.name),{ok:!0,httpStatus:200,response:{ok:!0,replayShortCircuited:!0},reason:"completion_replay_short_circuited",...s.prUrl?{prHandoff:{prUrl:s.prUrl}}:{}}}Uh(g)}let h=await Ck(f,m,b);if((h.status===401||h.status===403)&&!p){let _=await wm(i,{baseUrl:d});_&&_!==m&&(m=_,h=await Ck(f,m,b))}if(h.ok){let _=Dg(h.parsed);if(!Mg(_)){let ke=`completion acknowledged but board not advanced: ${_.detail??(_.routeOutcome?`harness completion returned ${_.routeOutcome}`:"harness completion did not advance the linked task")}`;fn(n,ke);let Ye={completionReportedAt:new Date().toISOString(),completionOutcome:"rejected",completionResponse:h.parsed};return ui(n,n.runId,Ye),g&&uc(g,"rejected"),{ok:!1,httpStatus:h.status,response:h.parsed,reason:ke,completionBlocked:!0}}fn(n,void 0);let K=_.routeOutcome??"acknowledged",$={completionReportedAt:new Date().toISOString(),completionOutcome:"acknowledged",completionResponse:h.parsed};ui(n,n.runId,$),Ri(n,s,{source:"harness-completion"}),g&&uc(g,"acknowledged"),Co(n.runId,n.name),nt(n.runId,n.name);let C=s.prUrl;return{ok:!0,httpStatus:h.status,response:h.parsed,reason:K,...C?{prHandoff:{prUrl:C}}:{}}}let w=h.status===401||h.status===403,E=LO(h.parsed)??(w?"runner token unauthorized":"non-2xx response"),S=w?`completion replay rejected (${h.status}): ${E}`:`completion replay failed (${h.status}): ${E}`;return fn(n,S),{ok:!1,httpStatus:h.status,response:h.parsed,completionBlocked:!0}}function Ok(e){let{run:r,workerName:t,worker:n}=e,o=J(n,{base:r.base,baseCommit:r.baseCommit}),s=o.gitAncestry.headIsAncestorOfBase===!1&&o.gitAncestry.head?o.gitAncestry.head:void 0,i=Ht({alive:o.alive,finalResult:o.finalResult,changedFiles:o.changedFiles,gitAncestry:o.gitAncestry,headCommit:s}),a=n.completionBlocker,l=typeof a=="string"&&a?a:void 0,c=Ik(l)?void 0:l,u=c?"blocked":o.status,d=c?"blocked":o.attention.state,p=Pk(n.completionResponse),m=Pk(p?.task),f=Io(p?.outcome),y=Io(p?.status),k=Array.isArray(p?.warnings)?p.warnings.filter(S=>typeof S=="string"&&S.trim().length>0):[],b=Io(m?.prUrl)??Io(p?.prUrl),g=Io(n.completionReportedAt),h=BO({finished:xe(o),completionBlocker:c,completionOutcome:f,completionReportedAt:g}),w=UO({completionBlocker:c,completionOutcome:f,completionReportedAt:g,finished:xe(o)}),E=FO({changedFiles:o.changedFiles,headCommit:s,prUrl:b??void 0});return{worker:o.worker,status:u,attention:d,attentionReason:c??o.attention.reason,landingBlocked:o.finalResult?d==="needs_attention"||d==="blocked":!1,exitedWithoutFinalResult:!o.finalResult&&!o.alive,salvageState:i?.salvageable?"review_needed":"none",salvageReason:i?.salvageable?i.attentionReason:void 0,pid:o.pid,alive:o.alive,currentTool:o.currentTool,lastActivityAt:o.lastActivityAt,lastHeartbeatPhase:o.lastHeartbeatPhase,lastHeartbeatSummary:o.lastHeartbeatSummary,heartbeatBlocker:o.heartbeatBlocker,changedFileCount:o.changedFiles.length,changedFiles:o.changedFiles,branch:o.branch,taskId:n.taskId??null,planId:n.planId??null,instructionPolicyFingerprint:typeof n.instructionPolicyFingerprint=="string"?n.instructionPolicyFingerprint:null,instructionPolicyRuleCount:(()=>{let S=n.instructionPolicyEvidence;if(!S||typeof S!="object")return null;let _=S.ruleSlugs;return Array.isArray(_)?_.length:null})(),leaseOwner:n.leaseOwner??null,model:typeof n.model=="string"?n.model:void 0,routingRule:typeof n.routingRule=="string"?n.routingRule:void 0,requestedModel:typeof n.requestedModel=="string"?n.requestedModel:void 0,headCommit:s,prUrl:b,handoffState:E,gitAncestry:o.gitAncestry,finalResult:o.finalResult,lifecycleStage:h,completionReportedAt:g,completionOutcome:n.completionOutcome??null,completionRouteStatus:y,completionRouteOutcome:f,completionWarnings:k,completionBlocker:c??null,checkpoint:{phase:o.lastHeartbeatPhase,summary:o.lastHeartbeatSummary,blocker:o.heartbeatBlocker},lastCommandHint:o.currentTool??o.lastHeartbeatSummary,failureReason:c??o.error??null,nextAction:w,ancestry:o.gitAncestry.relation,ancestryChecked:o.gitAncestry.checked}}function $O(e){let r=typeof e.status=="string"?e.status:"",t=typeof e.completionBlocker=="string"&&e.completionBlocker.trim().length>0?e.completionBlocker:void 0;return t&&!Ik(t)?!1:typeof e.completionReportedAt=="string"&&e.completionReportedAt.trim()||e.completionOutcome==="acknowledged"?!0:r==="done"}function jO(e,r){return{worker:e,status:"done",attention:"done",attentionReason:"metadata terminal worker; full status skipped in compact snapshot",alive:!1,pid:typeof r.pid=="number"?r.pid:void 0,branch:typeof r.branch=="string"?r.branch:void 0,taskId:r.taskId??null,planId:r.planId??null,model:typeof r.model=="string"?r.model:void 0,routingRule:typeof r.routingRule=="string"?r.routingRule:void 0,requestedModel:typeof r.requestedModel=="string"?r.requestedModel:void 0,lifecycleStage:r.completionReportedAt?"completion_acknowledged":"worker_finished",completionReportedAt:typeof r.completionReportedAt=="string"?r.completionReportedAt:null,completionOutcome:r.completionOutcome??null,localOnly:r.localOnly===!0,compactStatus:!0}}function Oo(e,r){let t={};for(let n of e){let o=n[r],s=typeof o=="string"&&o.trim()?o:"unknown";t[s]=(t[s]??0)+1}return t}function Ak(e){if(e.attention!=="blocked")return!1;let r=typeof e.attentionReason=="string"?e.attentionReason:"";return r.includes("cli-config.json.tmp")||r.includes("Invalid authentication credentials")||r.includes("provider CLI is missing or not on PATH")||r.includes("unknown command:")}function VO(e){let r=e.filter(Ak),t=e.filter(n=>{if(Ak(n))return!1;let o=n.attention;return o==="needs_attention"||o==="blocked"||o==="stale"||n.status==="running"});return{actionableCount:t.length,runningCount:e.filter(n=>n.status==="running").length,blockedCount:e.filter(n=>n.attention==="blocked").length,staleCount:e.filter(n=>n.attention==="stale").length,needsAttentionCount:e.filter(n=>n.attention==="needs_attention").length,doneCount:e.filter(n=>n.status==="done").length,systemHealthBlockerCount:r.length,systemHealthBlockers:r.slice(0,10).map(n=>({worker:n.worker,status:n.status,attention:n.attention,attentionReason:n.attentionReason,model:n.model,routingRule:n.routingRule,lastActivityAt:n.lastActivityAt})),actionableWorkers:t.slice(0,25).map(n=>({worker:n.worker,status:n.status,attention:n.attention,attentionReason:n.attentionReason,taskId:n.taskId,planId:n.planId,model:n.model,routingRule:n.routingRule,lastActivityAt:n.lastActivityAt,nextAction:n.nextAction}))}}function Tk(e,r,t){let n={runId:e.id,name:e.name,status:Da(e.status,r),repo:e.repo,workerCount:r.length,needsAttention:r.filter(o=>o.attention&&o.attention!=="ok"&&o.attention!=="done").map(o=>o.worker),workers:r};return t&&(n.summary={statusCounts:Oo(r,"status"),attentionCounts:Oo(r,"attention"),lifecycleCounts:Oo(r,"lifecycleStage")},n.controller=VO(r)),n}function GO(e){return e.status==="done"&&e.attention==="done"}function Oc(e){let r=q(e),n=Object.keys(r.workers||{}).map(s=>{let i=I(Mi.join(N(r.id),"workers",x(s),"worker.json"),void 0);return i?Ok({run:r,workerName:s,worker:i}):{worker:s,status:"missing",attention:"needs_attention",attentionReason:"worker.json not found"}}),o=Tk(r,n,!1);return ue(Mi.join(N(r.id),"last-board.json"),o),o}function Tc(e){let r=q(e),n=Object.keys(r.workers||{}).map(i=>{let a=I(Mi.join(N(r.id),"workers",x(i),"worker.json"),void 0);return a?$O(a)?jO(i,a):Ok({run:r,workerName:i,worker:a}):{worker:i,status:"missing",attention:"needs_attention",attentionReason:"worker.json not found"}}),o=n.filter(i=>!GO(i)),s=Tk(r,o,!0);return s.status=Da(r.status,n),s.summary={...s.summary??{},totalWorkerCount:n.length,shownWorkerCount:o.length,omittedTerminalDoneWorkerCount:n.length-o.length,allStatusCounts:Oo(n,"status"),allAttentionCounts:Oo(n,"attention")},ue(Mi.join(N(r.id),"last-board-compact.json"),s),s}async function Nk(e,r){let t=String(e.run||""),n=String(e.agentOsId||"");if(!t||!n)return null;let o=Oc(t),s=Q(e.baseUrl?String(e.baseUrl):void 0),i=await ee(e.secret?String(e.secret):void 0,n,{baseUrl:s}),a=`${s}/api/agent-os/by-id/${encodeURIComponent(n)}/harness/snapshot`,l=await X(a,i,{agentOsId:n,runId:t,source:r,snapshot:o},{agentOsId:n,baseUrl:s});return{ok:l.ok,httpStatus:l.status,response:l.response,authRefreshed:l.refreshedAuth,authRefreshFailure:l.authRefreshFailure}}O();H();B();O();var vJ=360*60*1e3;function Mk(e){let r=e.nodeExecutable??process.execPath,t=Qs({importMetaUrl:import.meta.url,explicitCliPath:e.cliPath,nodeExecutable:r});if(!t)return;let n=t.cliPath;if(!qO(n))return;let o=zO.join(e.workerDir,"auto-complete.log"),s;try{s=JO(o,"a")}catch{s=void 0}let i=["ignore",s??"ignore",s??"ignore"],a=[...t.argsPrefix,"worker","auto-complete","--run",e.runId,"--name",e.workerName];e.agentOsId&&a.push("--agent-os-id",e.agentOsId),e.baseUrl&&a.push("--base-url",e.baseUrl),e.secret&&a.push("--secret",e.secret);try{let l=YO(t.command,a,ae({detached:ce(),stdio:i,env:process.env}));return s!==void 0&&Dk(s),l.unref(),{pid:l.pid,logPath:o,cliPath:n}}catch{if(s!==void 0)try{Dk(s)}catch{}return}}de();function Wk(e,r,t){Z(e,["fetch","origin",t,"--prune"],{allowFailure:!0});let n=`origin/${t}`,o=ne(e,["worktree","add","-B",t,r,n]);if(o.status===0)return;let s=ne(e,["worktree","add","-b",t,r,"HEAD"]);if(s.status!==0){let i=o.stderr||o.stdout||s.stderr||s.stdout||"git worktree add failed for repair target branch";throw new Error(i)}}Le();Es();H();import nT from"node:net";import{chmodSync as oT,unlinkSync as sT}from"node:fs";import{createHash as XO}from"node:crypto";import{chmodSync as QO,mkdirSync as ZO}from"node:fs";import Lk from"node:os";import eT from"node:path";var rT=100,tT="\\\\.\\pipe\\";function Bk(e,r){return XO("sha256").update(e).digest("hex").slice(0,r)}function Nc(e){let r=e.platform??process.platform,t=Bk(e.agentOsId,12),n=Bk(e.workerKey,16);if(r==="win32")return{socketPath:`${tT}kynver-worker-${t}-${n}`,socketDir:null,isNamedPipe:!0,relocated:!1};let o=eT.posix,s=e.homeDir??Lk.homedir(),i=o.join(s,".kynver","brokers",t),a=o.join(i,`${n}.sock`);if(Buffer.byteLength(a,"utf8")<=rT)return{socketPath:a,socketDir:i,isNamedPipe:!1,relocated:!1};let l=o.join(e.tmpDir??Lk.tmpdir(),`kynver-brokers-${t}`);return{socketPath:o.join(l,`${n}.sock`),socketDir:l,isNamedPipe:!1,relocated:!0}}function Dc(e){e.socketDir&&(ZO(e.socketDir,{recursive:!0,mode:448}),QO(e.socketDir,448))}var No=class e{server;opts;now;fetchImpl;grantedTools;connections=new Set;sockets=new Set;revoked=!1;closed=!1;constructor(r){if(typeof r.identity?.verify!="function")throw new Error("WorkerBroker requires an explicit identity posture (S11) \u2014 see worker-broker/identity.ts");this.opts=r,this.now=r.now??Date.now,this.fetchImpl=r.fetchImpl??fetch,this.grantedTools=io(r.capabilities),this.server=nT.createServer(t=>{this.handleConnection(t)}),this.server.on("error",()=>{})}static async start(r){let t=new e(r);if(Dc(r.address),await new Promise((n,o)=>{t.server.once("error",o),t.server.listen(r.address.socketPath,()=>{t.server.removeListener("error",o),n()})}),!r.address.isNamedPipe)try{oT(r.address.socketPath,384)}catch{}return t}get identitySummary(){return this.opts.identity.summary}get toolDescriptors(){return this.grantedTools.filter(sn).map(r=>uo[r])}async revoke(){this.revoked=!0,await this.close()}async close(){if(!this.closed){this.closed=!0;for(let r of this.sockets)r.destroy();if(this.sockets.clear(),this.connections.clear(),await new Promise(r=>this.server.close(()=>r())),!this.opts.address.isNamedPipe)try{sT(this.opts.address.socketPath)}catch{}}}refuse(r,t){this.opts.onRefusal?.(r,t)}async handleConnection(r){this.sockets.add(r),r.on("close",()=>{this.sockets.delete(r),this.connections.delete(r)});for(let o of this.connections)(o.destroyed||o.readableEnded)&&this.connections.delete(o);if(this.connections.size>=1){this.refuse("concurrent_connection","a second concurrent connection was attempted while the worker's own connection was open"),this.write(r,{id:"",ok:!1,reason:"concurrent_connection",error:"worker tools are already in use for this task"}),r.end();return}this.connections.add(r);let t=await this.opts.identity.verify({socket:r,workerPid:this.opts.workerPid});if(!t.ok){this.refuse("identity_refused",t.detail),this.write(r,{id:"",ok:!1,reason:"identity_refused",error:"caller could not be identified as this worker"}),r.end();return}let n="";r.setEncoding("utf8"),r.on("data",o=>{if(n+=o,Buffer.byteLength(n,"utf8")>1048576){this.refuse("request_too_large","request exceeded the line cap"),this.write(r,{id:"",ok:!1,reason:"request_too_large",error:"request exceeded the maximum size"}),r.end();return}let s=n.indexOf(`
169
169
  `);for(;s>=0;){let i=n.slice(0,s);n=n.slice(s+1),i.trim()&&this.handleLine(r,i),s=n.indexOf(`
170
- `)}})}write(r,t){if(!r.destroyed)try{r.write(Tl(t))}catch{}}async handleLine(r,t){let n=Nl(t);if(!n.ok){this.refuse(n.reason,n.error),this.write(r,{id:n.id,ok:!1,reason:n.reason,error:n.error});return}let{request:o}=n;if(this.revoked||this.closed){this.refuse("revoked","grant revoked"),this.write(r,{id:o.id,ok:!1,reason:"revoked",error:"worker tools are no longer available for this task"});return}if(this.now()>=this.opts.expiresAt){this.refuse("grant_expired","grant expired"),this.write(r,{id:o.id,ok:!1,reason:"grant_expired",error:"worker tools are no longer available for this task"});return}if(o.op==="list_tools"){this.write(r,{id:o.id,ok:!0,tools:this.toolDescriptors});return}if(!on(o.name)){this.refuse("unknown_tool",o.name),this.write(r,{id:o.id,ok:!1,reason:"unknown_tool",error:`unknown tool: ${o.name}`});return}if(!this.grantedTools.includes(o.name)){this.refuse("capability_not_granted",o.name),this.write(r,{id:o.id,ok:!1,reason:"capability_not_granted",error:`tool not granted for this task: ${o.name}`});return}try{let s=await Zs({apiBaseUrl:this.opts.apiBaseUrl,agentOsId:this.opts.agentOsId,taskId:this.opts.taskId,token:this.opts.token,fetchImpl:this.fetchImpl},o.name,o.args??{});this.write(r,{id:o.id,ok:!0,result:s})}catch(s){let i=s instanceof Error?s.message:"request failed";this.refuse("upstream_error",i),this.write(r,{id:o.id,ok:!1,reason:"upstream_error",error:i})}}};var Hk={posture:"scoped",summary:"scoped: per-worker endpoint in an owner-only (0700) directory, one connection at a time. Peer identity is not observed \u2014 another process of the same OS user is not excluded.",verify:async()=>({ok:!0})};function Mc(){return Hk}var lT=7200*1e3;async function $k(e,r){let t=typeof r.name=="string"?r.name.trim():"";if(!t||t==="undefined"||t==="null")throw new Error(`worker name is required and must be a real identifier (got: ${JSON.stringify(r.name)})`);let n=x(t);if(e.workers?.[n])throw new Error(`worker already exists in run ${e.id}: ${n}`);if(!r.task)throw new Error(`missing task text for worker ${n}`);let o=r.routingRule||r.requestedModel?{provider:r.provider||Or,model:r.model,rule:r.routingRule||"explicit:spawn",requestedModel:r.requestedModel??r.model}:ni({explicitModel:r.model,explicitProvider:r.provider,explicitProviderIsOperatorOverride:!!r.provider?.trim(),configuredProvider:U().workerProvider}),s=Og(o.provider),i=o.model;if(s.preflightModel){let T=s.preflightModel(r.model);if(!T.ok)throw new Error(`model preflight failed for provider "${s.name}": ${T.note??"invalid model/provider combination"}`);T.normalized&&console.error(`[supervisor] ${n}: ${T.note}`),i=T.model}let{worktreesDir:a}=le(),l=fn.join(N(e.id),"workers",n);aT(l,{recursive:!0});let c=fn.join(a,e.id,n),u=r.repairTargetBranch?.trim()||void 0,d=u||r.branch||`agent/${e.id}/${n}`;if(iT(c))throw new Error(`worktree path already exists: ${c}`);if(Z(e.repo,["fetch","origin","--prune"],{allowFailure:!0}),u)Wk(e.repo,c,u);else{let T=xg({baseCommit:e.baseCommit,base:e.base,verifyRef:te=>Z(e.repo,["rev-parse","--verify","--quiet",`${te}^{commit}`],{allowFailure:!0}).trim().length>0});T.repaired&&(console.error(`[supervisor] ${n}: run baseCommit ${e.baseCommit||"<empty>"} invalid \u2014 repaired to ${T.ref} (${T.source})`),e.baseCommit=Z(e.repo,["rev-parse",T.ref],{allowFailure:!0}).trim()||T.ref,Ie(e)),Z(e.repo,["worktree","add","-b",d,c,e.baseCommit],{throwError:!0})}let p=fn.join(l,"stdout.jsonl"),m=fn.join(l,"stderr.log"),f=fn.join(l,"heartbeat.jsonl"),y=Pg({task:r.task,ownedPaths:r.ownedPaths||[],worktreePath:c,heartbeatPath:f,planId:r.planId,taskId:r.taskId,instructionPolicyMarkdown:r.instructionPolicyMarkdown,memoryQualityMarkdown:r.memoryQualityPromptMarkdown??r.memoryQualityCapture?.promptMarkdown??null,personaMarkdown:r.personaMarkdown,contextEnvelopeMarkdown:r.contextEnvelopeMarkdown,runtimeEnvelopeMarkdown:r.runtimeEnvelopeMarkdown,model:i,repairTargetPrUrl:r.repairTargetPrUrl,repairTargetBranch:r.repairTargetBranch??(u||void 0)}),k=process.env.KYNVER_HARNESS_TASK_ID,b=process.env.KYNVER_HARNESS_AGENT_OS_ID;r.taskId&&(process.env.KYNVER_HARNESS_TASK_ID=String(r.taskId)),r.agentOsId&&(process.env.KYNVER_HARNESS_AGENT_OS_ID=String(r.agentOsId));let g=pi({title:r.taskTitle,personaSlug:r.personaSlug,parentTaskId:r.parentTaskId,executorRef:r.executorRef}),h,w,E,S,_=r.workerMcpToken?.trim();if(_&&Dl(s.name)&&io()){let T=il();T&&r.agentOsId&&r.taskId?(w={apiBaseUrl:T,agentOsId:String(r.agentOsId),taskId:String(r.taskId),token:_,capabilities:r.workerMcpCapabilities??null},console.error(`[supervisor] ${n}: worker tools enabled (in-process, no config on disk)`)):console.error(`[supervisor] ${n}: worker tools skipped (missing API base URL or task identity) \u2014 spawning without tools`)}let K=Pf(s.name);if(_&&K&&io()){let T=il();if(T&&r.agentOsId&&r.taskId){let te=Nc({agentOsId:String(r.agentOsId),workerKey:l}),F=await To.start({address:te,apiBaseUrl:T,agentOsId:String(r.agentOsId),taskId:String(r.taskId),token:_,capabilities:r.workerMcpCapabilities??null,expiresAt:r.workerMcpExpiresAt??Date.now()+lT,workerPid:process.pid,identity:Mc(),onRefusal:D=>console.error(`[supervisor] ${n}: worker tools refused a call (${D})`)});if(nc(l,F),s.name==="codex"){let D=ah({workerDir:l,brokerSocketPath:te.socketPath});if(D.ok){let M=lh(D.codexHome,Ll());M.ok?(E=D.codexHome,h=E):(So(l),await Xr(l),console.error(`[supervisor] ${n}: worker tools skipped \u2014 codex rejected the generated config (${M.detail}); spawning with the normal environment`))}else await Xr(l),console.error(`[supervisor] ${n}: worker tools skipped \u2014 ${D.detail}`)}else if(s.name==="cursor"){let D=sh({worktreePath:c,brokerSocketPath:te.socketPath});D.ok?h=D.configPath:(await Xr(l),console.error(`[supervisor] ${n}: worker tools skipped \u2014 ${D.detail}`))}else if(s.name==="gemini"&&ri(ei())==="antigravity"){let D=fh({worktreePath:c,brokerSocketPath:te.socketPath});D.ok?h=D.configPath:(await Xr(l),console.error(`[supervisor] ${n}: worker tools skipped \u2014 ${D.detail}`))}else if(s.name==="gemini"){let D=hh({workerDir:l,brokerSocketPath:te.socketPath});D.ok?(S=D.geminiCliHome,h=S):(await Xr(l),console.error(`[supervisor] ${n}: worker tools skipped \u2014 ${D.detail}`))}else h=If({workerDir:l,brokerSocketPath:te.socketPath});h&&console.error(`[supervisor] ${n}: worker tools enabled via broker (${F.identitySummary})`)}else console.error(`[supervisor] ${n}: worker MCP tools skipped (missing API base URL or task identity) \u2014 spawning without tools`)}let $=r.taskId?gp(hp(e.id,String(r.taskId),n)):null,C;try{C=kp($,()=>s.start({name:n,task:r.task,ownedPaths:r.ownedPaths,model:i,modelPinned:sg(o.rule),branch:d,worktreePath:c,workerDir:l,stdoutPath:p,stderrPath:m,heartbeatPath:f,prompt:y,reviewWorker:g,executionMode:r.executionMode??"write",...w?{workerToolGrant:w}:{},...E?{codexHome:E}:{},...S?{geminiCliHome:S}:{},...h?{mcpConfigPath:h,mcpAllowedTools:Cf(r.workerMcpCapabilities)}:{}}))}catch(T){throw h&&(Js(l),gi(c),So(l),yi(l),ki(c),an(l)),Z(e.repo,["worktree","remove","--force",c],{allowFailure:!0}),Z(e.repo,["branch","-D",d],{allowFailure:!0}),T}finally{k===void 0?delete process.env.KYNVER_HARNESS_TASK_ID:process.env.KYNVER_HARNESS_TASK_ID=k,b===void 0?delete process.env.KYNVER_HARNESS_AGENT_OS_ID:process.env.KYNVER_HARNESS_AGENT_OS_ID=b}let re=cg(C.model,i,s.defaultModel),ke=U(),Ye=br(process.env,ke),hr=He().runnerId,$r=xs({boxKind:Ye.boxKind,config:ke,env:process.env}),j={name:n,runId:e.id,status:"running",pid:C.pid,model:re,provider:o.provider,branch:d,worktreePath:c,workerDir:l,stdoutPath:p,stderrPath:m,heartbeatPath:f,ownedPaths:r.ownedPaths,...r.agentOsId?{agentOsId:String(r.agentOsId)}:{},...r.taskId?{taskId:String(r.taskId)}:{},...r.planId?{planId:String(r.planId)}:{},...r.instructionPolicyFingerprint?{instructionPolicyFingerprint:String(r.instructionPolicyFingerprint)}:{},...r.instructionPolicyEvidence?{instructionPolicyEvidence:r.instructionPolicyEvidence}:{},...r.memoryQualityCapture?{memoryQualityCapture:r.memoryQualityCapture}:{},...r.personaSlug?{personaSlug:String(r.personaSlug)}:{},...r.personaEvidence?{personaEvidence:r.personaEvidence}:{},...r.contextEnvelopeEvidence?{contextEnvelopeEvidence:r.contextEnvelopeEvidence}:{},...r.runtimeEnvelopeEvidence?{runtimeEnvelopeEvidence:r.runtimeEnvelopeEvidence}:{},...r.leaseOwner?{leaseOwner:String(r.leaseOwner)}:{},...r.leaseToken?{leaseToken:String(r.leaseToken)}:{},...r.dispatched?{dispatched:!0}:{},...!r.agentOsId||!r.taskId?{localOnly:!0}:{},routingRule:o.rule,...o.requestedModel?{requestedModel:o.requestedModel}:{},...o.orchestrationAudit?{orchestrationAudit:o.orchestrationAudit}:{},...r.executorRef?{executorRef:String(r.executorRef)}:{},...r.parentTaskId?{parentTaskId:String(r.parentTaskId)}:{},...r.taskTitle?{taskTitle:String(r.taskTitle)}:{},...r.taskPrUrl?{taskPrUrl:String(r.taskPrUrl)}:{},...r.repairTargetPrUrl?{repairTargetPrUrl:String(r.repairTargetPrUrl)}:{},...r.repairTargetBranch?{repairTargetBranch:String(r.repairTargetBranch)}:{},executionMode:r.executionMode??"write",boxKind:Ye.boxKind,boxId:$r,runtimeId:hr,startedAt:new Date().toISOString(),...$?{oomRetryHeapMb:$}:{}};if(L(e.id,j),tc(l,C.pid),e.workers={...e.workers||{},[n]:{workerDir:l,statusPath:fn.join(l,"worker.json")}},e.status="running",Ie(e),j.agentOsId&&j.taskId){let T;try{T=Mk({runId:e.id,workerName:n,workerDir:l,agentOsId:j.agentOsId})}catch(te){let F=`completion sidecar failed to spawn: ${te.message}`;j.completionBlocker=F,L(e.id,j)}if(T)T.pid&&(j.completionSidecarPid=T.pid,L(e.id,j));else{let te=j.completionBlocker??"completion sidecar failed to spawn (CLI not found or spawn error)";j.completionBlocker=te,j.completionSidecarSpawnFailedAt=new Date().toISOString(),L(e.id,j),Sg(e.id,j,te)}}return j}H();qn();function cT(e,r){let t=qt(r)?.trim();return t||Qe("KYNVER_RUNNER_TOKEN",e)||Qe("OPENCLAW_RUNNER_TOKEN",e)||null}function uT(e){let r=Pr()?.trim();return r||Qe("KYNVER_API_KEY",e)||Qe("KYNVER_RUNTIME_SECRET",e)||Qe("KYNVER_CRON_SECRET",e)||Qe("OPENCLAW_CRON_SECRET",e)||null}async function jk(e,r={}){let t=r.env??process.env,n=r.nowMs??Date.now(),o=r.timeoutMs??8e3,s=new Date(n).toISOString(),i=r.fetcher??fetch,a=cT(t,e.agentOsId),l=uT(t),c="none",u={};if(a)c="runner_token",u["X-Kynver-Runner-Token"]=a;else if(l)c="api_key",u["X-Kynver-Service-Secret"]=l;else return{reachable:!1,authSource:"none",endpoint:null,httpStatus:null,responseMs:null,probedAt:s,error:"No runner token or API key found \u2014 set KYNVER_RUNNER_TOKEN, store runnerToken in ~/.kynver/credentials, or complete M0.3 install"};let d=`${e.apiBaseUrl}/api/agent-os/runner-token/verify`,p=Date.now();try{let m=AbortSignal.timeout(o),f=await i(d,{method:"GET",headers:{...u,Accept:"application/json","X-Kynver-Agent-Os-Id":e.agentOsId},signal:m}),y=Date.now()-p,k=f.status<500;return{reachable:k,authSource:c,endpoint:d,httpStatus:f.status,responseMs:y,probedAt:s,error:k?null:`MCP endpoint returned HTTP ${f.status} \u2014 server error or misconfigured KYNVER_API_URL`}}catch(m){let f=Date.now()-p,y=m instanceof Error?m.message:String(m);return{reachable:!1,authSource:c,endpoint:d,httpStatus:null,responseMs:f,probedAt:s,error:`MCP endpoint unreachable: ${y}`}}}Dn();function dT(e,r){let t=e.KYNVER_API_URL?.trim()||e.KYNVER_CRON_FIRE_BASE_URL?.trim()||r.apiBaseUrl?.trim()||null;return t?Tn(t)??null:null}function pT(e,r){return(e.KYNVER_DEFAULT_REPO?.trim()||e.KYNVER_HARNESS_REPO?.trim()||r.defaultRepo?.trim()||null)??null}function mT(e,r,t){let n=e.KYNVER_HARNESS_ROOT?.trim()||r.harnessRoot?.trim()||null;return n||t||null}function Vk(e,r={}){let t=r.env??process.env,n=r.nowMs??Date.now(),o=r.config??{},s=dT(t,o);if(!s)return{ok:!1,code:"missing_api_base_url",detail:"No API base URL found. Set KYNVER_API_URL, or run `kynver setup --api-base-url <url>`."};let i=(t.KYNVER_AGENT_OS_ID??t.OPENCLAW_AGENT_OS_ID??o.agentOsId??"").trim();if(i&&i!==e.agentOsId)return{ok:!1,code:"workspace_mismatch",detail:`envelope workspace "${e.agentOsId}" does not match local config "${i}"`};let a=pT(t,o),l=mT(t,o,a);return{ok:!0,context:{jobId:e.jobId,agentOsId:e.agentOsId,taskId:e.taskId,repoPath:a,worktreeBase:l,apiBaseUrl:s,hydratedAt:new Date(n).toISOString()}}}O();H();import{mkdirSync as Yk}from"node:fs";import{homedir as fT,tmpdir as Y2}from"node:os";import Wi from"node:path";function qk(){let e=process.env.KYNVER_STATE_ROOT;return e?Wi.resolve(e):Wi.join(fT(),".kynver","state")}function Li(){return Wi.join(qk(),"plan-outbox")}function gT(){return Wi.join(qk(),"plan-outbox-archive")}function Jk(){let e=Li(),r=gT();return Yk(e,{recursive:!0}),Yk(r,{recursive:!0}),{outboxDir:e,archiveDir:r}}var Q2=600*1e3,No={storeFailures:0,corruptItemsSeen:0,corruptItemsQuarantined:0,duplicateDrainsObserved:0,halfArchivesCompleted:0};function zk(){return{"planOutbox.storeFailures":No.storeFailures,"planOutbox.corruptItemsSeen":No.corruptItemsSeen,"planOutbox.corruptItemsQuarantined":No.corruptItemsQuarantined,"planOutbox.duplicateDrainsObserved":No.duplicateDrainsObserved,"planOutbox.halfArchivesCompleted":No.halfArchivesCompleted}}import{existsSync as yT,readFileSync as RT,renameSync as tz,readdirSync as nz,rmSync as oz,writeFileSync as sz,unlinkSync as iz}from"node:fs";import Xk from"node:path";function Qk(e){if(!yT(e))return null;try{return JSON.parse(RT(e,"utf8"))}catch{return null}}function Bi(e){let{outboxDir:r}=Jk();return{jsonPath:Xk.join(r,`${e.id}.json`),bodyPath:Xk.join(r,e.bodyPath)}}import _T from"node:path";function Bc(e){let r=_T.join(Li(),`${e}.json`);return Qk(r)}function Uc(e){let r=Bi(e);return["## Plan persistence risk","",`AgentOS plan write is **not** confirmed (${e.userStatus}).`,`- outboxId: \`${e.id}\``,e.planId?`- planId: \`${e.planId}\``:"- planId: (pending \u2014 create not yet applied)",`- outbox: \`${r.jsonPath}\``,`- body: \`${r.bodyPath}\``,"","Drain when approval/connectivity returns: `kynver plan outbox drain`"].join(`
171
- `)}function Fc(e){let r=e.metadata&&typeof e.metadata=="object"?e.metadata:null,t=typeof e.planPersistenceOutboxId=="string"&&e.planPersistenceOutboxId||(r&&typeof r.planPersistenceOutboxId=="string"?r.planPersistenceOutboxId:void 0);return t?{outboxId:t,jsonPath:typeof e.planPersistenceOutboxPath=="string"?e.planPersistenceOutboxPath:r&&typeof r.planPersistenceOutboxPath=="string"?r.planPersistenceOutboxPath:void 0,bodyPath:typeof e.planPersistenceBodyPath=="string"?e.planPersistenceBodyPath:r&&typeof r.planPersistenceBodyPath=="string"?r.planPersistenceBodyPath:void 0}:null}B();function Kc(e){return e?.trim()?e.trim():null}function Zk(e,r){let t=Kc(e.boxKind),n=Kc(e.runnerId),o=Kc(e.harnessRoot);return t&&t!==r.boxKind?{ok:!1,reason:`run ${e.id} belongs to box "${t}" but this host is "${r.boxKind}" \u2014 use a run under ${r.harnessRoot}`}:n&&n!==r.runnerId?{ok:!1,reason:`run ${e.id} is bound to runner "${n}" but this host is "${r.runnerId}"`}:o&&o!==r.harnessRoot?{ok:!1,reason:`run ${e.id} harness root "${o}" does not match this host "${r.harnessRoot}"`}:!t||!n||!o?(e.boxKind=r.boxKind,e.runnerId=r.runnerId,e.harnessRoot=r.harnessRoot,Ie(e),{ok:!0,stamped:!0}):{ok:!0}}H();Jn();function ey(e=process.env){return Yt(U(),e,{requireExplicitBoxKind:!0})}function ry(e){return[...e.errors,...e.warnings].join("; ")}async function Do(e){let r=`${e.baseUrl}/api/agent-os/by-id/${encodeURIComponent(e.agentOsId)}/tasks/${encodeURIComponent(e.taskId)}/release`,t;try{t=await X(r,e.secret,{agentOsId:e.agentOsId,leaseOwner:e.leaseOwner,...e.leaseToken?.trim()?{leaseToken:e.leaseToken.trim()}:{},...e.failureDetail?{failureDetail:e.failureDetail}:{}},{agentOsId:e.agentOsId,baseUrl:e.baseUrl})}catch(s){return{released:!1,httpOk:!1,transportError:!0,releaseResponse:{ok:!1,error:s.message}}}let n=t.response;return{released:t.ok===!0||n?.ok===!0,httpOk:t.ok===!0,transportError:!1,releaseResponse:t.response??t}}function gn(e){if(!e||typeof e!="object")return!1;let r=e;return[r.agentOsId,r.subjectTaskId,r.reviewTaskId,r.signature].every(t=>typeof t=="string"&&!!t)&&/^https:\/\/github\.com\/[^/]+\/[^/]+\/pull\/[1-9]\d*$/.test(r.prUrl)&&/^[a-f0-9]{40}$/.test(r.headSha)&&/^[a-f0-9]{64}$/.test(r.reviewGenerationSha256)&&Number.isSafeInteger(r.reviewAttempt)&&r.reviewAttempt>0&&typeof r.acceptedAt=="string"&&Number.isFinite(Date.parse(r.acceptedAt))}function ty(e,r){return e.signature===r.signature&&e.agentOsId===r.agentOsId&&e.subjectTaskId===r.subjectTaskId&&e.prUrl===r.prUrl&&e.reviewTaskId===r.reviewTaskId&&e.reviewAttempt===r.reviewAttempt&&e.reviewGenerationSha256===r.reviewGenerationSha256&&e.headSha===r.headSha&&e.acceptedAt===r.acceptedAt}import{spawnSync as hy}from"node:child_process";var ny=new Set(["SUCCESS","SKIPPED","NEUTRAL"]);function nt(e){return typeof e.name=="string"&&e.name||typeof e.context=="string"&&e.context||typeof e.workflowName=="string"&&e.workflowName||"unknown check"}function oy(e){let r=typeof e.completedAt=="string"&&e.completedAt||typeof e.startedAt=="string"&&e.startedAt;if(!r)return 0;let t=Date.parse(r);return Number.isFinite(t)?t:0}function sy(e){let r=Array.isArray(e)?e:[],t=new Map;for(let n of r){let o=n&&typeof n=="object"?n:{},s=nt(o),i=t.get(s);(!i||oy(o)>=oy(i))&&t.set(s,o)}return[...t.values()]}function ET(e){let r=typeof e.detailsUrl=="string"&&e.detailsUrl||typeof e.details_url=="string"&&e.details_url||typeof e.html_url=="string"&&e.html_url||"",t=typeof e.workflowName=="string"?e.workflowName.trim():"",n=e.app&&typeof e.app=="object"?e.app:null,o=typeof n?.slug=="string"?n.slug:"";return t.length>0||o==="github-actions"||/^https:\/\/github\.com\/[^/]+\/[^/]+\/actions\//i.test(r)}function iy(e){let r=sy(e),t=[],n=[],o=[];for(let s of r){if(ET(s)){o.push(nt(s));continue}let i=typeof s.conclusion=="string"?s.conclusion.toUpperCase():"",a=typeof s.status=="string"?s.status.toUpperCase():"",l=typeof s.state=="string"?s.state.toUpperCase():"";if(!(i&&ny.has(i))){if(i){n.push(`${nt(s)}=${i}`);continue}if(!(l&&ny.has(l))){if(l&&l!=="PENDING"&&l!=="EXPECTED"){n.push(`${nt(s)}=${l}`);continue}if(l==="PENDING"||l==="EXPECTED"){t.push(`${nt(s)}=${l}`);continue}if(a&&a!=="COMPLETED"){t.push(`${nt(s)}=${a}`);continue}t.push(`${nt(s)}=PENDING`)}}}return{pending:t,failed:n,ignoredActions:o}}function ay(e){return sy(e).some(t=>{let n=nt(t),o=typeof t.conclusion=="string"?t.conclusion.toUpperCase():"",s=typeof t.state=="string"?t.state.toUpperCase():"";return/^vercel/i.test(n)&&(o==="SUCCESS"||s==="SUCCESS")})}var CT=new Set(["CLEAN","HAS_HOOKS"]);function ly(e,r){let t=e==="UNSTABLE"&&r.ignoredActions.length>0;return!CT.has(e)&&!t?`mergeStateStatus is ${e}`:null}import{spawnSync as PT}from"node:child_process";function cy(){if(process.env.GITHUB_TOKEN?.trim()||process.env.GH_TOKEN?.trim())return{source:"env",configured:!0,reason:"GitHub token already configured in environment"};let e=PT("gh",["auth","token"],{windowsHide:!0,encoding:"utf8",stdio:["ignore","pipe","pipe"]});if(e.status!==0)return{source:"missing",configured:!1,reason:typeof e.stderr=="string"&&e.stderr.trim()?e.stderr.trim():"gh auth token failed; run `gh auth login` on this machine"};let r=typeof e.stdout=="string"?e.stdout.trim():"";return r?(process.env.GH_TOKEN=r,{source:"gh-cli",configured:!0,reason:"Using local GitHub CLI auth for daemon land_pr merge"}):{source:"missing",configured:!1,reason:"gh auth token returned an empty token; run `gh auth login` on this machine"}}import{createHash as AT,randomUUID as IT}from"node:crypto";import{closeSync as uy,fsyncSync as dy,mkdirSync as OT,openSync as py,realpathSync as TT,writeFileSync as NT}from"node:fs";import Hc from"node:path";function fy(e){return!!e&&[e.agentOsId,e.taskId,e.runId,e.workerName,e.leaseOwner,e.leaseToken,e.receiptDir].every(r=>typeof r=="string"&&!!r.trim())}function my(e,r,t,n){OT(e,{recursive:!0,mode:448});let o=TT(e),s=py(Hc.join(o,`${r}.${t}.json`),"wx",384);try{NT(s,JSON.stringify({...n,phase:t},null,2)+`
172
- `),dy(s)}finally{uy(s)}for(let i=o;;i=Hc.dirname(i)){let a=py(i,"r");try{dy(a)}catch(l){if(!DT(l))throw l}finally{uy(a)}if(i===Hc.dirname(i))break}}function DT(e,r=process.platform){return r==="win32"&&e?.code==="EPERM"}function gy(e,r,t,n){let o={acceptedReview:n,agentOsId:e.agentOsId,taskId:e.taskId,runId:e.runId,workerName:e.workerName,leaseOwner:e.leaseOwner,leaseTokenSha256:AT("sha256").update(e.leaseToken).digest("hex")},s={...o,prUrl:r,invocationId:IT(),startedAt:new Date().toISOString(),finishedAt:null,headSha:t,mergedAt:null,mergeCommit:null,source:"daemon_land_pr",mergeInvoked:!1};return my(e.receiptDir,s.invocationId,"pending",s),{finish(i){let a={...o,...i,invocationId:s.invocationId,startedAt:s.startedAt,finishedAt:new Date().toISOString()};return my(e.receiptDir,s.invocationId,"finished",{...s,...a}),a}}}function jc(e){return e?.trim()?["--repo",e.trim()]:[]}function ky(e){let r=/github\.com\/([^/]+)\/([^/]+)\/pull\/\d+/i.exec(e.trim());return r?`${r[1]}/${r[2]}`:null}function yy(e,r,t){let n=e.gh(r,t);if(n.status!==0)throw new Error(n.stderr||n.stdout||`gh ${t.join(" ")} failed`);return JSON.parse(n.stdout||"{}")}var MT=/^##\s*(test\s*plan|verification|test\s*evidence|verify)\b/im,WT=/typecheck|npm run (test|build|typecheck)|vitest|tsc\b|verify-pr-local|local verify|local-verify|tests? (pass|green)|build green|node --test/i,LT=/^docs[(:]/i,BT=/docs[- ]only|documentation only|no[- ]code change|no code changes|low[- ]risk|plan tracker only|markdown only/i;function UT(e){let r=typeof e.title=="string"?e.title.trim():"",t=typeof e.body=="string"?e.body.trim():"",n=LT.test(r)||BT.test(t),o=MT.test(t),s=WT.test(t);return n||o||s||e.vercelCheckSuccess===!0}function FT(e){if(!UT({title:e.title,body:e.body,vercelCheckSuccess:ay(e.statusCheckRollup)}))throw new Error(`PR #${e.number} lacks landing verification evidence \u2014 add ## Test plan / ## Verification with local commands, Vercel preview, or docs/no-code rationale`)}function KT(e){if(e.state!=="OPEN")throw new Error(`PR #${e.number} is ${e.state}, not OPEN`);if(e.isDraft)throw new Error(`PR #${e.number} is still a draft`);let r=iy(e.statusCheckRollup);if(r.failed.length>0)throw new Error(`PR #${e.number} has failing checks: ${r.failed.join(", ")}`);if(r.pending.length>0)throw new Error(`PR #${e.number} has pending checks: ${r.pending.join(", ")}`);let t=ly(e.mergeStateStatus,r);if(t)throw new Error(`PR #${e.number} ${t}`)}function HT(e){KT(e),FT(e)}function $T(e){try{return HT(e),null}catch(r){return r instanceof Error?r.message:String(r)}}function jT(e,r,t,n){if(!n?.trim())return;let o=encodeURI(`heads/${n}`);e.gh(r,["api","-X","DELETE",`repos/${t}/git/refs/${o}`])}function VT(e,r,t){if(t?.trim())return t.trim();let n=e.gh(r,["repo","view","--json","nameWithOwner"]);if(n.status!==0)throw new Error(n.stderr||"Could not resolve GitHub repo");let o=JSON.parse(n.stdout||"{}");if(!o.nameWithOwner)throw new Error("Could not resolve GitHub repo");return o.nameWithOwner}function GT(e,r){if(!r?.trim())return;let t=hy("git",["worktree","list","--porcelain"],{windowsHide:!0,cwd:e,encoding:"utf8"});if(t.status!==0)return;let n=String(t.stdout||"").split(/\r?\n/),o=null,s=null;for(let i of n){if(i.startsWith("worktree ")){o=i.slice(9).trim(),s=null;continue}i.startsWith("branch ")&&o&&(s=i.slice(7).trim(),s.endsWith(`/${r}`)&&hy("git",["worktree","remove","--force",o],{windowsHide:!0,cwd:e,encoding:"utf8"}))}}async function Ry(e){let r=e.cwd??process.cwd(),t=e.exec??fi,n=e.prUrl.trim();if(!n)throw new Error("prUrl is required");let o=e.acceptedReview,s=()=>({prUrl:n,outcome:"blocked",reason:"accepted_review_required: missing, stale or changed head; fresh independent review required"});if(!gn(o)||o.prUrl!==n||o.agentOsId!==e.operation?.agentOsId||!e.revalidateAcceptedReview)return s();let i=cy();if(!i.configured)return{prUrl:n,outcome:"blocked",reason:i.reason};let a=yy(t,r,["pr","view",n,...jc(e.repo),"--json",["number","url","title","body","state","isDraft","mergeStateStatus","statusCheckRollup","headRefName","headRefOid","mergedAt","mergeCommit"].join(",")]);if(a.state==="MERGED")return{prUrl:a.url||n,outcome:"skipped",mergeCommit:a.mergeCommit?.oid??null,provenance:{attribution:"preexisting_merge",mergeInvoked:!1,headSha:a.headRefOid??null,mergedAt:a.mergedAt??null,mergeCommit:a.mergeCommit?.oid??null},reason:`PR #${a.number} is already merged \u2014 land_pr no-op (redelivery)`};if(a.headRefOid?.toLowerCase()!==o.headSha)return s();let l=$T(a);if(l)return e.skipNotReady?{prUrl:a.url||n,outcome:"skipped",reason:l}:{prUrl:a.url||n,outcome:"blocked",reason:l};if(e.dryRun)return{prUrl:a.url||n,outcome:"skipped",reason:"dry-run: PR is ready to merge"};if(!a.headRefOid||!/^[a-f0-9]{40}$/i.test(a.headRefOid)||!fy(e.operation))return{prUrl:n,outcome:"blocked",reason:"land_pr requires observed headRefOid and claimed dispatch operation identity"};let c=String(a.number),u=await e.revalidateAcceptedReview().catch(()=>null);if(!gn(u)||!ty(o,u))return s();let d=gy(e.operation,n,o.headSha,o),p;try{p=t.gh(r,["pr","merge",c,...jc(e.repo),"--squash","--match-head-commit",o.headSha])}catch{let k=d.finish({attribution:"unconfirmed",mergeInvoked:!0,headSha:a.headRefOid,mergedAt:null,mergeCommit:null,mergeExitCode:null});return{prUrl:n,outcome:"blocked",reason:"merge invocation threw; outcome unconfirmed",provenance:k}}let m=(k,b)=>d.finish({attribution:b,mergeInvoked:!0,headSha:a.headRefOid,mergedAt:k?.mergedAt??null,mergeCommit:k?.mergeCommit?.oid??null,mergeExitCode:p.status});if(p.status!==0){let k=$c(t,r,c,e.repo);return k?{prUrl:k.url||a.url||n,outcome:"skipped",mergeCommit:k.mergeCommit?.oid??null,provenance:m(k,"external_merge_observed"),reason:`PR #${a.number} is already merged \u2014 merged by another lane during land_pr (race)`}:{prUrl:a.url||n,outcome:"blocked",reason:p.stderr||p.stdout||"gh pr merge failed",provenance:m(null,"unconfirmed")}}let f=$c(t,r,c,e.repo);if(f||(f=$c(t,r,c,e.repo)),!f)return{prUrl:n,outcome:"blocked",reason:"merge command completed but merged state is unconfirmed",provenance:m(null,"unconfirmed")};let y=m(f,"invoked_merge_observed");try{let k=VT(t,r,e.repo);jT(t,r,k,a.headRefName),GT(r,a.headRefName)}catch{}return{prUrl:f?.url||a.url||n,outcome:"merged",provenance:y,mergeCommit:f?.mergeCommit?.oid??null,reason:`Daemon land_pr invoked merge; PR #${a.number} read back merged`}}function $c(e,r,t,n){try{let o=yy(e,r,["pr","view",t,...jc(n),"--json","number,url,mergedAt,mergeCommit,state"]);return o.state==="MERGED"?o:null}catch{return null}}async function vy(e){let r=e.decision.task,t=e.decision.acceptedReview,n=String(r.prUrl??"");return Ry({prUrl:n,cwd:e.cwd,repo:ky(n),exec:e.exec,operation:e.operation,acceptedReview:gn(t)?t:void 0,revalidateAcceptedReview:async()=>{let o=await X(`${e.baseUrl}/api/agent-os/by-id/${encodeURIComponent(e.agentOsId)}/tasks/${encodeURIComponent(String(r.id))}/landing-review`,e.secret,{leaseToken:r.leaseToken,leaseOwner:r.leaseOwner,attempt:r.attempt},{agentOsId:e.agentOsId,baseUrl:e.baseUrl}),s=o.response;return o.ok&&s?.ok===!0&&gn(s.acceptedReview)?s.acceptedReview:null}})}H();async function by(e){let r=await ee(e.secret,e.agentOsId,{baseUrl:e.baseUrl}),t=String(e.task.id),n=`${e.baseUrl}/api/agent-os/by-id/${encodeURIComponent(e.agentOsId)}/harness/completion`,o=e.report.provenance?.finishedAt??new Date().toISOString(),s={source:"kynver-harness",agentOsId:e.agentOsId,runId:e.runId,workerName:`land-pr-${t}`,taskId:t,leaseToken:e.task.leaseToken??null,startedAt:e.report.provenance?.startedAt??o,finishedAt:o,status:{finalResult:e.report,prUrl:e.report.prUrl,summary:e.report.reason,leaseToken:e.task.leaseToken??null},workerInjection:null},i=await X(n,r,s,{agentOsId:e.agentOsId,baseUrl:e.baseUrl});return{ok:i.ok,status:i.status}}function Sy(){return["## verify_live completion contract","Finish with a JSON finalResult object:","{",' "prUrl": "<landed pr>",',' "outcome": "passed" | "failed" | "skipped" | "no_mcp_surface",',' "reason": "<human summary>",',' "mergeCommit": "<sha optional>",',' "liveReadback": "<prod readback string from acceptance.liveReadbackQuery>",',' "mcpCalls": [{ "tool": "<name>", "ok": true, "summary": "..." }]',"}","","Drive the feature MCP tools against live production. Do not mark passed without exercising the MCP surface.","When the subject carries an acceptance snapshot, include liveReadback \u2014 the server oracle rejects passed if the original symptom still appears."].join(`
173
- `)}var YT="dispatch_start_readback_failed:";function St(e){return`${YT} ${e.trim()}`}function qT(e){return e.branch?.trim()?e.worktreePath?.trim()?e.heartbeatPath?.trim()?e.startedAt?.trim()?null:"missing local worker startedAt":"missing local worker heartbeatPath":"missing local worker worktreePath":"missing local worker branch"}function JT(e){let{snapshot:r,leaseOwner:t,expectedLeaseToken:n,worker:o}=e;if(!r)return{ok:!1,error:St("task lease snapshot missing after spawn"),detail:{taskId:o.taskId,leaseOwner:t,expectedLeaseToken:n}};if(r.status!=="running")return{ok:!1,error:St(`AgentOS task status=${r.status} (expected running)`),detail:{taskId:r.taskId,status:r.status,leaseOwner:r.leaseOwner,blocker:r.blocker},snapshot:r};let s=r.leaseOwner?.trim()??"";if(!s||s!==t.trim())return{ok:!1,error:St(`leaseOwner mismatch (board=${s||"null"}, expected=${t})`),detail:{taskId:r.taskId,boardLeaseOwner:s||null,expectedLeaseOwner:t},snapshot:r};let i=r.leaseToken?.trim()??"";if(!i||i!==n.trim())return{ok:!1,error:St(`leaseToken mismatch (board=${i||"null"}, expected=${n})`),detail:{taskId:r.taskId,boardLeaseToken:i||null,expectedLeaseToken:n},snapshot:r};let a=qT(o);return a?{ok:!1,error:St(a),detail:{taskId:o.taskId,worker:o.name},snapshot:r}:r.heartbeatAt?.trim()?o.executorRef?.trim()&&r.executorRef?.trim()&&o.executorRef.trim()!==r.executorRef.trim()?{ok:!1,error:St(`executorRef mismatch (board=${r.executorRef}, worker=${o.executorRef})`),detail:{taskId:r.taskId,boardExecutorRef:r.executorRef,workerExecutorRef:o.executorRef},snapshot:r}:{ok:!0,snapshot:r}:{ok:!1,error:St("AgentOS heartbeatAt missing after claim"),detail:{taskId:r.taskId},snapshot:r}}async function wy(e){let r=await si({agentOsId:e.agentOsId,taskIds:[e.taskId],baseUrl:e.baseUrl,secret:e.secret});return JT({snapshot:r.get(e.taskId)??null,leaseOwner:e.leaseOwner,expectedLeaseToken:e.expectedLeaseToken,worker:e.worker})}O();B();function xy(e,r,t){r.pid&&Y(r.pid)&&(Me(r.pid,"SIGTERM"),Y(r.pid)&&Me(r.pid,"SIGKILL"));let n={...r,status:"failed",pid:void 0,completionBlocker:t,dispatchStartReadbackFailed:!0};return L(e,n),n}B();function _y(e){let r=typeof e.personaSlug=="string"?e.personaSlug.trim().toLowerCase():"";if(r==="dalton"||r==="lorentz")return!0;let t=typeof e.executorRef=="string"?e.executorRef.trim().toLowerCase():"";if(t.startsWith("expert-lane-pr-review:")||t.startsWith("scheduledjob:")&&e.parentTaskId)return!0;let n=typeof e.title=="string"?e.title.toLowerCase():"";return n.includes("expert pr review")||n.startsWith("[dalton] review")||n.startsWith("[lorentz] review")}async function Ey(e){let r=`${e.baseUrl}/api/agent-os/by-id/${encodeURIComponent(e.agentOsId)}/tasks/${encodeURIComponent(e.taskId)}/review-head-reconcile`,t=await X(r,e.secret,{phase:"worker_start"},{agentOsId:e.agentOsId,baseUrl:e.baseUrl});if(!t.ok)return null;let n=t.response;return n&&typeof n=="object"?n:null}var Vl=3600*1e3;function Cy(e){let r=e.admissionExhaustion;return!r||typeof r!="object"?null:r}function Py(e){let r=e.dispatchSkipDrain;return!r||typeof r!="object"?null:r}function zT(e){let r=e.harnessWorkerContext;if(!r||typeof r!="object")return null;let t=r,n=typeof t.instructionPolicyMarkdown=="string"?t.instructionPolicyMarkdown:null,o=typeof t.instructionPolicyFingerprint=="string"?t.instructionPolicyFingerprint:null,s=t.instructionPolicyEvidence&&typeof t.instructionPolicyEvidence=="object"?t.instructionPolicyEvidence:null,i=typeof t.personaMarkdown=="string"?t.personaMarkdown:null,a=typeof t.personaEvidence=="object"&&t.personaEvidence&&typeof t.personaEvidence.injectedPersonaSlug=="string"?t.personaEvidence.injectedPersonaSlug:null,l=t.personaEvidence&&typeof t.personaEvidence=="object"?t.personaEvidence:null,c=t.personaInjectionReady===!0,u=typeof t.contextEnvelopeMarkdown=="string"?t.contextEnvelopeMarkdown:null,d=t.contextEnvelopeEvidence&&typeof t.contextEnvelopeEvidence=="object"?t.contextEnvelopeEvidence:null,p=t.contextEnvelopeReady===!0,m=typeof t.runtimeEnvelopeMarkdown=="string"?t.runtimeEnvelopeMarkdown:null,f=QT(t.runtimeEnvelopeReceipt),y=t.runtimeEnvelopeReady===!0,k=t.memoryQualityCapture&&typeof t.memoryQualityCapture=="object"?t.memoryQualityCapture:null,b=typeof t.memoryQualityPromptMarkdown=="string"?t.memoryQualityPromptMarkdown:typeof k?.promptMarkdown=="string"?k.promptMarkdown:null,g=t.workerMcpToolGrant&&typeof t.workerMcpToolGrant=="object"?t.workerMcpToolGrant:null,h=g&&typeof g.token=="string"&&g.token.trim()?g.token.trim():null,w=h&&Array.isArray(g?.capabilities)?g.capabilities.filter(S=>typeof S=="string"&&S.trim().length>0):null,E=h&&typeof g?.exp=="number"&&Number.isFinite(g.exp)?g.exp*1e3:null;return{instructionPolicyMarkdown:n,instructionPolicyFingerprint:o,instructionPolicyEvidence:s,memoryQualityCapture:k,memoryQualityPromptMarkdown:b,personaMarkdown:i,personaSlug:a,personaEvidence:l,personaInjectionReady:c,contextEnvelopeMarkdown:u,contextEnvelopeEvidence:d,contextEnvelopeReady:p,runtimeEnvelopeMarkdown:m,runtimeEnvelopeEvidence:f,runtimeEnvelopeReady:y,workerMcpToken:h,workerMcpCapabilities:w,workerMcpExpiresAt:E}}function XT(e){if(typeof e!="string")return null;let r=e.trim().toLowerCase();return r.length?r:null}function QT(e){if(!e||typeof e!="object")return null;let r=e;return typeof r.envelopeId!="string"||!r.envelopeId.trim()?null:{envelopeId:r.envelopeId,envelopeSchemaVersion:typeof r.envelopeSchemaVersion=="string"?r.envelopeSchemaVersion:void 0,generatedAt:typeof r.generatedAt=="string"?r.generatedAt:void 0,injectedAt:typeof r.injectedAt=="string"?r.injectedAt:void 0,mode:typeof r.mode=="string"?r.mode:void 0,memoryIncludedCount:typeof r.memoryIncludedCount=="number"?r.memoryIncludedCount:void 0,memoryOmittedCount:typeof r.memoryOmittedCount=="number"?r.memoryOmittedCount:void 0,degraded:typeof r.degraded=="boolean"?r.degraded:void 0,degradedReason:typeof r.degradedReason=="string"?r.degradedReason:r.degradedReason===null?null:void 0,auditFingerprint:typeof r.auditFingerprint=="string"?r.auditFingerprint:void 0,promptMarkdownChars:typeof r.promptMarkdownChars=="number"?r.promptMarkdownChars:void 0}}function ZT(e,r){let t=[`[AgentOS task ${e.id}] ${e.title}`,"",e.description?String(e.description):"(no description on the board task)","",`Board linkage: agentOsId=${r}, taskId=${e.id}, attempt=${e.attempt}, executor=${e.executor}${e.executorRef?`, executorRef=${e.executorRef}`:""}.`,"This worker was dispatched from the AgentOS board. The harness reports your completion back to the board when you finish."];e.executor==="verify_live"&&t.push("",Sy());let n=Fc(e);if(n?.outboxId){let o=Bc(n.outboxId);o?t.push("",Uc(o)):t.push("","## Plan persistence risk","",`Unconfirmed AgentOS plan write (outboxId=${n.outboxId}).`)}return t.join(`
174
- `)}function eN(e){let r=new Set;if(e.targetTaskId)return r.add(String(e.targetTaskId)),r;if(e.targetTaskIds)for(let t of String(e.targetTaskIds).split(",")){let n=t.trim();n&&r.add(n)}return r}async function Ui(e){let r=e.pipeline===!0||e.pipeline==="true";try{let ye=function(){return F.filter(v=>v.started).length},Re=function(v,R){eo({runId:l.id,agentOsId:u,phase:v,startedCount:ye(),outcomeCount:F.length,cappedStarts:C,...R})},kr=function(){return F.some(v=>(typeof v.error=="string"?v.error:"").startsWith("dispatch_start_readback_failed:"))},Ku=function(v){return v.landPrDispatch===!0?!0:v.task?.executor==="land_pr"};var t=ye,n=Re,o=kr,s=Ku;let i=ey();if(!i.ok||!i.identity){let v=ry(i);if(r)return{ok:!1,error:v,boundary:i};console.error(`run dispatch failed: ${v}`),process.exit(1)}let a=i.identity;for(let v of i.warnings)console.error(`[dispatch] runner-boundary warning: ${v}`);let l=q(String(Rr(String(e.run||""),"--run"))),c=Zk(l,a);if(!c.ok){let v=c.reason??"run does not belong to this runner boundary";if(r)return{ok:!1,error:v,runId:l.id,runnerBoundary:a};console.error(`run dispatch failed: ${v}`),process.exit(1)}c.stamped&&console.error(`[dispatch] stamped run ${l.id} with boxKind=${a.boxKind} runnerId=${a.runnerId}`);let u=String(Rr(String(e.agentOsId||""),"--agent-os-id")),d=Q(e.baseUrl?String(e.baseUrl):void 0),p=await ee(e.secret?String(e.secret):void 0,u,{baseUrl:d}),m=e.execute===!0||e.execute==="true",f=!m,y=He({runId:l.id}),k=go(l.id,y.runnerId),b=Fm(),g=b?Hm(l.repo):null,h=new WeakMap;if(b&&m&&!g){let v="desktop_execution_policy_denied:repo_identity_unavailable: the repository has no origin remote";if(r)return{ok:!1,error:v,runId:l.id};console.error(`run dispatch failed: ${v}`),process.exit(1)}let w=e.diskPath?Gr({diskPath:String(e.diskPath)}):Gr({diskPath:l.repo}),E=await Xm({runId:l.id,agentOsId:u,args:e}),S=eN(e),_=S.size>0,K=Number(e.maxStarts)>0?Math.floor(Number(e.maxStarts)):1,$=_?Math.min(K,S.size):K;if(e.reconcileStaleBlockers===!0||e.reconcileStaleBlockers==="true"){let v=`${d}/api/agent-os/by-id/${encodeURIComponent(u)}/lane-hygiene`;try{await X(v,p,{agentOsId:u,dryRun:!1,includeBoardReconcile:!0},{agentOsId:u,baseUrl:d})}catch(R){console.error(`[dispatch] reconcile-stale-blockers lane-hygiene call failed: ${R.message}`)}}let C=f?$:Math.min($,E.slotsAvailable);if(!f&&C<=0){let v={runId:l.id,agentOsId:u,dryRun:!1,skipped:!0,reason:E.reason??"no resource slots",resourceGate:E};if(r)return{ok:!0,...v};console.log(JSON.stringify(v,null,2));return}let re=Ls(l.id),ke=`${d}/api/agent-os/by-id/${encodeURIComponent(u)}/tasks/dispatch-next`,Ye=(v,R)=>({agentOsId:u,...R?{claimAuthorization:R}:{},dryRun:f,maxStarts:v,leaseOwner:k,leaseDurationMs:Number(e.leaseMs)>0?Math.floor(Number(e.leaseMs)):Vl,runnerDiskGate:w,runnerResourceGate:E,activeHarnessWorkers:re,runnerPresence:y,harnessBoardSnapshot:Oc(l.id),...e.lane?{lane:zm(String(e.lane))}:{},...e.executor?{executor:String(e.executor)}:{},...e.diskPath?{diskPath:String(e.diskPath)}:{},...e.targetTaskId?{targetTaskId:String(e.targetTaskId)}:{},...!e.targetTaskId&&e.targetTaskIds?{targetTaskIds:String(e.targetTaskIds).split(",").map(A=>A.trim()).filter(Boolean)}:{}}),hr=jm(),$r=async v=>{let R=b&&g?Km(g):void 0,A=await X(ke,p,Ye(v,R),{agentOsId:u,baseUrl:d,timeoutMs:hr})??{ok:!1,status:0,response:null},W=A.response;if(R&&Array.isArray(W?.result?.started))for(let G of W.result.started)G&&typeof G=="object"&&h.set(G,R.requestNonce);return{dispatch:A,result:W?.result}};f||eo({runId:l.id,agentOsId:u,phase:"awaiting_dispatch_next",timeoutMs:hr});let j=await $r(_||f?C:1);if(!j.dispatch.ok||!j.result){let v=fl(j.dispatch.response),R={runId:l.id,agentOsId:u,action:"dispatch",httpStatus:j.dispatch.status,response:j.dispatch.response,authRefreshed:j.dispatch.refreshedAuth===!0,authRefreshFailure:j.dispatch.authRefreshFailure,...v?{timeout:!0}:{}};if(v&&eo({runId:l.id,agentOsId:u,phase:"timeout",timeout:!0,httpStatus:j.dispatch.status}),r)return{ok:!1,...R};console.log(JSON.stringify(R,null,2)),process.exit(1)}let T=j.result;if(f){let v=Cy(T),R=Py(T),A={runId:l.id,agentOsId:u,dryRun:!0,wouldStart:T.started.map(W=>({taskId:W.task.id,title:W.task.title,reason:W.reason})),skipped:T.skipped.map(W=>({taskId:W.task.id,skipReason:W.skipReason,reason:W.reason})),diskGate:T.diskGate,resourceGate:T.resourceGate,inspected:T.inspected,pagesScanned:T.pagesScanned??null,candidatesExhausted:T.candidatesExhausted??null,capacityIdle:v?.capacityIdle===!0,admissionExhaustion:v,dispatchSkipDrain:R};if(r)return{ok:!0,...A};console.log(JSON.stringify(A,null,2));return}let te=mg(),F=[],D=[],M=Number(T.inspected)||0,ie=!1;async function V(v,R,A){let W=await Do({baseUrl:d,secret:p,agentOsId:u,taskId:String(v.id),leaseOwner:k,leaseToken:v.leaseToken?String(v.leaseToken):null,failureDetail:R});v.leaseToken&&ln({taskId:String(v.id),leaseToken:String(v.leaseToken).trim()},dc(R));let G={taskId:v.id,started:!1,error:R,released:W.released,releaseResponse:W.releaseResponse,...A};return F.push(G),Re("outcome",{lastOutcome:G}),!1}async function Tb(v){let R=v.task,A=String(R.id);if(_&&!S.has(A))return V(R,"exact_target_mismatch: dispatch-next returned a different task than requested",{requestedTargetTaskIds:[...S]});if(!(R.prUrl?String(R.prUrl):""))return V(R,"land_pr task missing prUrl");try{let G=await vy({decision:v,baseUrl:d,secret:p,agentOsId:u,cwd:l.repo,operation:{agentOsId:u,taskId:A,runId:l.id,workerName:`land-pr-${A}`,leaseOwner:k,leaseToken:typeof R.leaseToken=="string"?R.leaseToken:"",receiptDir:`${N(l.id)}/land-pr-operations`}}),qe=await by({baseUrl:d,secret:p,agentOsId:u,runId:l.id,task:R,report:G});return qe.ok?(F.push({taskId:A,started:!0,landPr:!0,outcome:G.outcome,completionStatus:qe.status}),!0):V(R,`land_pr completion POST failed (HTTP ${qe.status})`,{landPr:!0,outcome:G.outcome})}catch(G){return V(R,G.message)}}async function Nb(v){let R="duplicate_dispatch_prevented: live local worker already owns this task",A=await Do({baseUrl:d,secret:p,agentOsId:u,taskId:String(v.id),leaseOwner:k,leaseToken:v.leaseToken?String(v.leaseToken):null,failureDetail:R});v.leaseToken&&ln({taskId:String(v.id),leaseToken:String(v.leaseToken).trim()},dc(R));let W={taskId:v.id,started:!1,error:R,alreadyRunning:!0,nonFatal:!0,released:A.released,releaseResponse:A.releaseResponse};return F.push(W),Re("outcome",{lastOutcome:W}),!1}async function Db(v){let R=v.task,A=zT(v),W=String(R.id);if(_&&!S.has(W))return V(R,"exact_target_mismatch: dispatch-next returned a different task than requested",{requestedTargetTaskIds:[...S]});let G=XT(R.personaSlug);if(G&&(!A?.personaInjectionReady||!A.personaMarkdown))return V(R,`persona_injection_required: missing anchored context-envelope persona block for "${G}"`);if(G&&!A?.runtimeEnvelopeReady)return V(R,`runtime_envelope_required: missing AgentRuntimeEnvelope launch receipt for persona "${G}"`);if(yg(l.id,W))return Nb(R);let qe=Number(R.attempt)||1;if(qe>te.maxTaskAttempts)return V(R,`task attempt ${qe} exceeds KYNVER_MAX_TASK_ATTEMPTS (${te.maxTaskAttempts})`);let at=R.leaseToken?String(R.leaseToken).trim():"";if(!at)return V(R,"dispatch_start_failed: claimed task missing leaseToken \u2014 refusing local spawn");let lt=x(`t-${R.id}-a${R.attempt}`),yr=ni({explicitModel:e.model?String(e.model):void 0,explicitProvider:e.provider?String(e.provider):void 0,explicitProviderIsOperatorOverride:!!e.provider,configuredProvider:U().workerProvider,task:Qm(R)});Bh({taskId:W,leaseToken:at,runId:l.id,workerName:lt,provider:yr.provider??null});let oa=dg({task:R,routing:yr,explicitProvider:e.provider?String(e.provider):void 0,explicitModel:e.model?String(e.model):void 0});if(!oa.ok)return V(R,oa.error??"model_routing_mismatch",{modelRoutingGuard:oa});if(_y(R)){let Ce=await Ey({agentOsId:u,taskId:W,baseUrl:d,secret:p});if(Ce&&Ce.dispatchable===!1)return V(R,`pr_review_head_reconcile_blocked: ${Ce.reason??Ce.outcome??"stale PR head"}`,{headReconcile:Ce});if(Ce?.activeReviewTaskId&&Ce.activeReviewTaskId!==W)return V(R,`pr_review_head_reconcile_retargeted: active review is ${Ce.activeReviewTaskId}`,{headReconcile:Ce})}let $o=pk(yr.provider);if(!$o.ok)return V(R,`provider_quota_exhausted: ${$o.reason}`,{nonFatal:!0,providerQuotaPreflight:{provider:$o.provider,retryAt:$o.retryAtIso}});try{let Ce=R.planId?String(R.planId):void 0,jo=Eg({title:R.title?String(R.title):void 0,description:R.description?String(R.description):null,executorRef:R.executorRef?String(R.executorRef):null,prUrl:R.prUrl?String(R.prUrl):null,branch:R.branch?String(R.branch):null}),Yu=Xh({runId:l.id,workerName:lt,maxSlots:E.maxConcurrentWorkers,diskActiveWorkers:Ma()});if(!Yu.admitted)return V(R,`admission_refused: ${Yu.reason}`,{nonFatal:!0});let Vo=A?.workerMcpToken??null;if(Vo&&io()){let Nt=Vk({jobId:`dispatch:${String(R.id)}`,agentOsId:u,taskId:String(R.id)},{config:{agentOsId:u,apiBaseUrl:d}});if(!Nt.ok)console.error(`[dispatch] worker tools skipped for task ${String(R.id)}: context hydration failed (${Nt.code}: ${Nt.detail}) \u2014 spawning without tools`),Vo=null;else{let sa=await jk(Nt.context);sa.reachable||(console.error(`[dispatch] worker tools skipped for task ${String(R.id)}: tool endpoint probe failed (${sa.error??`HTTP ${sa.httpStatus}`}) \u2014 spawning without tools`),Vo=null)}}bg(l.id,String(R.id),{except:lt});let ir=await $k(l,{name:lt,task:ZT(R,u),ownedPaths:e.owned?String(e.owned).split(",").map(Nt=>Nt.trim()).filter(Boolean):[],model:yr.model,provider:yr.provider,routingRule:yr.rule,requestedModel:yr.requestedModel,agentOsId:u,taskId:String(R.id),planId:Ce,branch:jo?.targetPrBranch??void 0,executorRef:R.executorRef?String(R.executorRef):void 0,parentTaskId:R.parentTaskId?String(R.parentTaskId):void 0,taskTitle:R.title?String(R.title):void 0,taskPrUrl:jo?.targetPrUrl??(R.prUrl?String(R.prUrl):void 0),repairTargetPrUrl:jo?.targetPrUrl,repairTargetBranch:jo?.targetPrBranch??void 0,instructionPolicyMarkdown:A?.instructionPolicyMarkdown??null,instructionPolicyFingerprint:A?.instructionPolicyFingerprint??null,instructionPolicyEvidence:A?.instructionPolicyEvidence??null,memoryQualityCapture:A?.memoryQualityCapture??null,memoryQualityPromptMarkdown:A?.memoryQualityPromptMarkdown??null,personaMarkdown:A?.personaMarkdown??null,personaSlug:A?.personaSlug??G,personaEvidence:A?.personaEvidence??null,contextEnvelopeMarkdown:A?.contextEnvelopeMarkdown??null,contextEnvelopeEvidence:A?.contextEnvelopeEvidence??null,runtimeEnvelopeMarkdown:A?.runtimeEnvelopeMarkdown??null,runtimeEnvelopeEvidence:A?.runtimeEnvelopeEvidence??null,workerMcpToken:Vo,workerMcpCapabilities:A?.workerMcpCapabilities??null,workerMcpExpiresAt:A?.workerMcpExpiresAt??null,leaseOwner:k,leaseToken:at,dispatched:!0,executionMode:Bs(R)}),Go=await wy({agentOsId:u,taskId:String(R.id),leaseOwner:k,expectedLeaseToken:at,worker:ir,baseUrl:d,secret:p});if(!Go.ok)return xy(l.id,ir,Go.error??"dispatch_start_readback_failed"),tt(l.id,lt),V(R,Go.error??"dispatch_start_readback_failed",{readback:Go.detail??null});ir.leaseToken!==at&&(ir.leaseToken=at,ir.leaseOwner=k,L(l.id,ir)),Ci({taskId:W,leaseToken:at}),Yh(l.id,lt);let qu={taskId:R.id,started:!0,worker:ir.name,pid:ir.pid,branch:ir.branch,model:ir.model,provider:yr.provider,routingRule:yr.rule,instructionPolicyFingerprint:A?.instructionPolicyFingerprint??null,instructionPolicyRuleCount:Array.isArray(A?.instructionPolicyEvidence?.ruleSlugs)?A.instructionPolicyEvidence.ruleSlugs.length:null,personaSlug:A?.personaSlug??G,personaOperatingRuleCount:A?.personaEvidence?.operatingRuleCount??null};return F.push(qu),Re("worker_started",{lastOutcome:qu}),A?.instructionPolicyFingerprint&&console.error(`[dispatch] task ${W}: instruction policy injected fingerprint=${A.instructionPolicyFingerprint}`),A?.personaSlug&&console.error(`[dispatch] task ${W}: persona context injected slug=${A.personaSlug}`),A?.contextEnvelopeReady&&console.error(`[dispatch] task ${W}: context envelope injected anchor=${A.contextEnvelopeEvidence?.anchorTaskId??W}`),A?.runtimeEnvelopeReady&&console.error(`[dispatch] task ${W}: runtime envelope injected id=${A.runtimeEnvelopeEvidence?.envelopeId??"unknown"}`),!0}catch(Ce){return tt(l.id,lt),V(R,Ce.message)}}let na=new Set;for(let v of $h(l.id))na.add(v);async function Hu(v){let R=v.task,A=String(R.id);if(na.has(A))return V(R,"dispatch_retry_loop_prevented: task already failed to start this tick");let W=b?$m({decision:v,leaseOwner:k,repoIdentity:g,requestNonce:h.get(v)??null}):null,G=W&&!W.allow?await V(R,`desktop_execution_policy_denied:${W.code}: ${W.reason}`,{desktopPolicyDenied:W.code,...W.code==="operation_not_approved"?{nonFatal:!0}:{}}):Ku(v)?await Tb(v):await Db(v);return G||(na.add(A),Hh(A,l.id)),G}for(let v of T.started)await Hu(v);if(D.push(...T.skipped??[]),_)for(let v of D){let R=String(v.task.id);S.has(R)&&F.push({taskId:R,started:!1,error:`exact_target_not_started:${v.skipReason}`,skipReason:v.skipReason,detail:v.reason??null,requestedTargetTaskIds:[...S]})}for(;!_&&F.length<C;){if(kr()){let A={started:!1,error:"dispatch_circuit_breaker: start readback failed; stopping top-up for this tick",nonFatal:!0};F.push(A),Re("circuit_breaker",{lastOutcome:A});break}let v=await $r(1);if(!v.dispatch.ok||!v.result){let A=Vm(v.dispatch.response),W=ye();ie=A&&W>0;let G=fl(v.dispatch.response),qe={started:!1,error:G?"dispatch_next timed out during top-up":"dispatch_next request failed during top-up",httpStatus:v.dispatch.status,response:v.dispatch.response,...G?{timeout:!0}:{},...ie?{nonFatal:!0,partialTopUp:!0}:{}};F.push(qe),Re("top_up_failed",{partialTopUpInterrupted:ie,lastOutcome:qe});break}M+=Number(v.result.inspected)||0,D.push(...v.result.skipped??[]);let R=v.result.started??[];if(R.length===0)break;for(let A of R){if(F.length>=C)break;await Hu(A)}}let Ho=F.filter(v=>v.started).length,jr=Cy(T),Tt=Py(T),$u=Ho===0&&(jr?.capacityIdle===!0||Number(T.resourceGate?.slotsAvailable)>0);if($u&&jr?.summary){let v=jr.skipReasonCounts?.retry_ceiling_exceeded??0,R=T.overAttemptIdleRecovery??jr.overAttemptIdleRecovery,A=R?.attempted===!0?`; over_attempt_recovery minted=${R.minted??0} started=${R.started??0}`:v>0?"; over_attempt_recovery not attempted":"",W=Tt?`; dispatch_skip_drain scanned=${Tt.scanned??0} advanced=${Tt.advanced??0}`:"",G=jr.progressionReport?.summary?`; ${jr.progressionReport.summary}`:"",qe=Tt?.prLifecycleAttempt?.summary?`; ${Tt.prLifecycleAttempt.summary}`:"";console.error(`[dispatch] ${jr.summary}${v>0?`; retry_ceiling_exceeded=${v}`:""}${A}${W}${G}${qe}`)}let ju={runId:l.id,agentOsId:u,dryRun:!1,leaseOwner:k,startedCount:Ho,capacityIdle:$u,admissionExhaustion:jr,dispatchSkipDrain:Tt,outcomes:F,skipped:D.map(v=>({taskId:v.task.id,skipReason:v.skipReason})),inspected:M,pagesScanned:T.pagesScanned??null,candidatesExhausted:T.candidatesExhausted??null,diskGate:T.diskGate,resourceGate:T.resourceGate,...ie?{partialTopUpInterrupted:!0}:{},dispatchCallbackTimeoutMs:hr},Vu=v=>!v.started&&v.nonFatal!==!0,Mb=F.some(Vu),Gu=ie&&Ho>0?!0:!Mb;if(eo({runId:l.id,agentOsId:u,phase:"complete",partial:ie,startedCount:Ho,ok:Gu}),r)return{ok:Gu,...ju};console.log(JSON.stringify(ju,null,2)),F.some(Vu)&&process.exit(1)}catch(i){if(r)return{ok:!1,error:i.message};console.error(`run dispatch failed: ${i.message}`),process.exit(1)}}var rN=1;function hn(e){if(!e||typeof e!="object")return 0;let r=e.startedCount;if(typeof r=="number")return r;let t=e.outcomes;return Array.isArray(t)?t.filter(n=>n.started).length:0}function tN(e){let{maxStarts:r,...t}=e;return t}async function Vc(e,r){if(r<=0)return{ok:!0,skipped:!0,reason:"no slots",maxStarts:0,startedCount:0};let t=tN(e);if(t.targetTaskId||t.targetTaskIds){let u=await Ui({...t,execute:!0,pipeline:!0,maxStarts:String(r)});return{...typeof u=="object"&&u!==null?u:{},passes:{target:u},startedCount:hn(u)}}let n=Math.min(r,rN),o=Math.max(0,r-n),s=await Ui({...t,execute:!0,pipeline:!0,lane:"review",maxStarts:String(n)}),i=hn(s),a=o+(n-i);if(a<=0)return{...typeof s=="object"&&s!==null?s:{},passes:{review:s},startedCount:i};let l=await Ui({...t,execute:!0,pipeline:!0,maxStarts:String(a)}),c=hn(l);return{passes:{review:s,work:l},startedCount:i+c,ok:!0}}function Ay(e){if(!e||typeof e!="object")return[];let t=e.response?.dispatch?.exactTargetTaskIds;if(!Array.isArray(t))return[];let n=new Set,o=[];for(let s of t){if(typeof s!="string")continue;let i=s.trim();!i||n.has(i)||(n.add(i),o.push(i))}return o}function nN(e){let t=e.response?.dispatch;return t&&typeof t=="object"?t:null}function Mo(e){return typeof e!="number"||!Number.isFinite(e)?null:Math.max(0,Math.floor(e))}function oN(e){let r=Number(process.env[e]);return!Number.isFinite(r)||r<=0?null:Math.floor(r)}function Iy(e,r){let t=nN(r),n=Mo(t?.recommendedMaxStarts),o=Mo(t?.actionableReady),s=Mo(t?.queuedTasks),i=Mo(t?.boardAdvancedThisTick)??0,a=Mo(t?.leaseReapedThisTick)??0,l=i+a,c=o??s,u=e.slotsAvailable;c!==null?u=Math.min(u,c):n!==null&&(u=Math.min(u,n)),c===null&&n!==null&&(u=Math.max(u,Math.min(e.slotsAvailable,n)));let d=t?.underutilized===!0||(c??0)>0&&e.slotsAvailable>0&&e.maxConcurrentWorkers>0&&e.activeWorkers<e.maxConcurrentWorkers;if(e.slotsAvailable>0&&u===0&&(d||l>0)){let f=c??(l>0?l:1);u=Math.min(e.slotsAvailable,Math.max(1,f))}let p=oN("KYNVER_DAEMON_MAX_DISPATCH_STARTS");p!==null&&(u=Math.min(u,p));let m=s!==null&&o!==null?Math.max(0,s-o):null;return{maxStarts:Math.max(0,u),underutilized:d,advisedStarts:n,actionableReady:o,queuedTasks:s,nonDispatchableReady:m,boardAdvancedThisTick:i,leaseReapedThisTick:a}}import XN from"node:path";B();Ln();fe();O();import sN from"node:path";var iN=new Set(["running","dispatching","pending","queued","needs_attention"]),wt=new Set(["completed","failed","cancelled","done"]);function xt(e){let r=ar(e);if(r.length===0)return"failed";let t=!1,n=!1,o=!1,s=!1;for(let i of r){let a=I(sN.join(N(e.id),"workers",x(i),"worker.json"),void 0);if(!a)continue;let l=J(a,{base:e.base,baseCommit:e.baseCommit});if(l.alive&&!l.finalResult){t=!0;break}typeof a.completionBlocker=="string"&&a.completionBlocker&&(o=!0),Up(l)&&(s=!0),l.finalResult&&l.attention.state==="done"&&(n=!0)}return t||o||s?null:n?"completed":"failed"}function Wo(){let e=[];for(let r of Xe()){if(!iN.has(r.status))continue;let t=xt(r);if(!t||t===r.status)continue;let n=r.status;r.status=t,Ie(r),e.push({runId:r.id,from:n,to:t})}return e}B();Ln();fe();O();dt();Hn();import{existsSync as it,lstatSync as ON,readdirSync as TN,readlinkSync as NN,renameSync as ru,unlinkSync as DN}from"node:fs";import mr from"node:path";Ze();O();import sr from"node:path";var aN=`${sr.sep}runs${sr.sep}runs${sr.sep}`;function Fi(e){return e.includes(aN)}function Gc(e,r){return sr.join(Ae(he(e)),x(r))}function ot(e,r,t){return sr.join(Gc(e,r),"workers",x(t))}function Oy(e,r,t){let n=he(e);return sr.join(n,"runs","runs",x(r),"workers",x(t))}function Yc(){return["stdout.jsonl","stderr.log","heartbeat.jsonl","last-status.json","auto-complete.log","worker.json"]}function _t(e){return{workerJsonPath:sr.join(e,"worker.json"),stdoutPath:sr.join(e,"stdout.jsonl"),stderrPath:sr.join(e,"stderr.log"),heartbeatPath:sr.join(e,"heartbeat.jsonl"),lastStatusPath:sr.join(e,"last-status.json")}}function Ty(e){let r=_t(ot(e.harnessRoot,e.runId,e.workerName)).workerJsonPath;return e.statusPath&&!Fi(e.statusPath)?e.statusPath:r}import{existsSync as st,mkdirSync as wN,readdirSync as By,renameSync as xN,statSync as zc}from"node:fs";import se from"node:path";H();In();Vr();import lN from"node:path";function cN(e){return lN.resolve(We(e.trim()))}function qc(e,r,t){let n=e?.trim();return n?{repo:cN(n),source:r,persistedInConfig:t}:null}function uN(e){return e?{repo:e.repo,source:e.source,persistedInConfig:!1}:null}function Ny(e={}){let r=e.env??process.env,t=e.config??U(),n=qc(t.defaultRepo,"config",!0);if(n)return n;let o=qc(r.KYNVER_DEFAULT_REPO,"env_default_repo",!1);if(o)return o;let s=qc(r.KYNVER_HARNESS_REPO,"env_harness_repo",!1);return s||uN(Zo({cwd:e.cwd,runtimeModuleUrl:e.runtimeModuleUrl}))}de();dt();Ze();B();O();H();import{existsSync as dN,readFileSync as pN,readdirSync as mN,statSync as fN,writeFileSync as gN}from"node:fs";import hN from"node:path";var De="<redacted>",Jc=`[^\\s"'\\\\,}\\]]`,kN=[[new RegExp(`\\b(?:postgres(?:ql)?|mysql|mongodb(?:\\+srv)?|redis|rediss):\\/\\/${Jc}+`,"gi"),De],[new RegExp(`\\b[a-z][a-z0-9+.-]*:\\/\\/[^\\s/@:"']+:[^\\s/@"']+@${Jc}+`,"gi"),De],[/\bkynver_u_[A-Za-z0-9_-]+/g,De],[/\bkyn_[A-Za-z0-9]{12,}/g,De],[/\bsk-ant-[A-Za-z0-9_-]+/g,De],[/\bsk-[A-Za-z0-9_-]{8,}/g,De],[/\bkr[a-z]1\.[A-Za-z0-9._~+/=-]{8,}/g,De],[/\b(?:ghp|gho|ghu|ghs|ghr)_[A-Za-z0-9]{16,}/g,De],[/\bgithub_pat_[A-Za-z0-9_]{16,}/g,De],[/\b(Bearer|Basic)\s+(?!<redacted>)[A-Za-z0-9._~+/=-]{8,}/gi,`$1 ${De}`],[new RegExp(`(\\b(?:[A-Z0-9_]*(?:API_KEY|APIKEY|TOKEN|SECRET|PASSWORD)|DATABASE_URL|KYNVER_DATABASE_URL)\\s*=\\s*)(?!<redacted>)${Jc}+`,"g"),`$1${De}`]],yN=12,RN=/(?:API_KEY|APIKEY|TOKEN|SECRET|PASSWORD|CREDENTIAL)$/i,vN=/(?:\.jsonl|\.log|\.txt|^stdout.*|^stderr.*)$/i,bN=256*1024*1024;function SN(e,r=[]){if(!e)return e;let t=e,n=[...new Set(r.map(o=>o?.trim()).filter(o=>!!o&&o.length>=yN))].sort((o,s)=>s.length-o.length);for(let o of n){t.includes(o)&&(t=t.split(o).join(De));let s=JSON.stringify(o).slice(1,-1);s!==o&&t.includes(s)&&(t=t.split(s).join(De))}for(let[o,s]of kN)t=t.replace(o,s);return t}function Dy(e=process.env,r=[]){let t=[];for(let[n,o]of Object.entries(e))o&&RN.test(n)&&t.push(o);for(let n of r)try{let o=n();o&&t.push(o)}catch{}return t}function My(e,r=0){if(r>3||!dN(e))return[];let t=[];for(let n of mN(e,{withFileTypes:!0})){let o=hN.join(e,n.name);n.isDirectory()?t.push(...My(o,r+1)):n.isFile()&&vN.test(n.name)&&t.push(o)}return t}function Wy(e,r=[]){let t={masked:[],clean:0,failed:[]},n;try{n=My(e)}catch{return t}for(let o of n)try{if(fN(o).size>bN){t.failed.push(o);continue}let s=pN(o,"utf8"),i=SN(s,r);if(i===s){t.clean+=1;continue}gN(o,i,"utf8"),t.masked.push(o)}catch{t.failed.push(o)}return t}var Lo=900*1e3,_N=3600*1e3;function Uy(e,r){let t=se.resolve(e),n=se.resolve(Ae(r)),o=se.relative(n,t);return o!==".."&&!o.startsWith("..")&&!se.isAbsolute(o)}function Xc(e){if(!st(e))return[];try{return By(e,{withFileTypes:!0}).filter(r=>r.isDirectory()&&r.name!=="runs").map(r=>r.name)}catch{return[]}}function Qc(e){let r=se.join(e,"workers");if(!st(r))return[];try{return By(r,{withFileTypes:!0}).filter(t=>t.isDirectory()).map(t=>t.name)}catch{return[]}}function Fy(e){return se.join(e,"archived-workers")}function EN(e,r){let t=se.join(Fy(e),x(r));return st(t)?`${t}-${Date.now()}`:t}function Ly(e,r,t){if(!st(e))return!1;try{let n=r-zc(e).mtimeMs;return Number.isFinite(n)&&n>=0&&n<t}catch{return!1}}function Ky(e,r=Date.now(),t=Lo){if(!st(e))return!1;let n=_t(e),o=I(n.workerJsonPath,void 0);if(o?.status==="running"&&Y(o.pid))return!0;let s=me(n.heartbeatPath);if(s.lastHeartbeatAt){let i=r-Date.parse(s.lastHeartbeatAt);if(Number.isFinite(i)&&i>=0&&i<t)return!0}return!!(Ly(n.stdoutPath,r,t)||Ly(n.heartbeatPath,r,t))}function CN(e,r,t){let n=typeof r.completionReportedAt=="string"?Date.parse(r.completionReportedAt):NaN;if(Number.isFinite(n))return t-n;let o=(()=>{let s=r.completionResponse;if(!s||typeof s!="object")return NaN;let i=s.task;if(!i||typeof i!="object")return NaN;let a=i.updatedAt;return typeof a=="string"?Date.parse(a):NaN})();if(Number.isFinite(o))return t-o;try{return t-zc(se.join(e,"worker.json")).mtimeMs}catch{return 0}}function PN(e,r,t,n){if(Ky(e,t))return{eligible:!1,reason:"worker has active/recent retention signals"};let o=typeof r.status=="string"?r.status:"";if(typeof r.completionBlocker=="string"&&r.completionBlocker.trim().length>0)return{eligible:!1,reason:"worker has completion blocker"};let i=typeof r.completionReportedAt=="string"||r.completionOutcome==="acknowledged";if(o!=="done"&&!i)return{eligible:!1,reason:`worker status is ${o||"unknown"}`};let a=CN(e,r,t);return!Number.isFinite(a)||a<n?{eligible:!1,reason:"terminal worker is still within archive grace window"}:{eligible:!0,reason:"terminal worker metadata archived"}}function kn(e,r=Date.now(),t=Lo){for(let n of Qc(e))if(Ky(se.join(e,"workers",n),r,t))return!0;return!1}function AN(){let r=Ny()?.repo??"",t="unknown";if(r)try{let n=Z(r,["rev-parse","origin/main"],{allowFailure:!0}).trim();n&&(t=n)}catch{}return{repo:r,base:"origin/main",baseCommit:t}}function IN(e,r){let t=se.join(Ae(e),x(r));if(!st(t))return null;let n=Qc(t);if(n.length===0)return null;let o;try{o=zc(t).birthtime.toISOString()}catch{o=new Date().toISOString()}let s={};for(let a of n){let l=ot(e,r,a);s[a]={workerDir:l,statusPath:se.join(l,"worker.json")}}let i=kn(t);return{id:r,name:r,...AN(),status:i?"running":"needs_attention",createdAt:o,workers:s}}function Zc(e){let r=he(e??Ue()),t=Ae(r),n=[];for(let o of Xc(t)){let s=se.join(t,o,"run.json");if(st(s)){n.push({runId:o,action:"skipped",reason:"run.json present"});continue}let i=IN(r,o);if(!i){n.push({runId:o,action:"skipped",reason:"no worker dirs on disk"});continue}Ie(i),n.push({runId:o,action:"repaired_run_json",reason:kn(se.join(t,o))?"synthesized run.json while worker artifacts still active":"synthesized run.json from orphan worker metadata dirs"})}return{runs:n}}function eu(e,r={}){let t=he(e??Ue()),n=Ae(t),o=r.now??Date.now(),s=r.archiveAgeMs??_N,i=[],a=null,l=()=>a??=(r.knownSecrets??(()=>Dy(process.env,[Pr,()=>qt()])))();Zc(t);for(let c of Xc(n)){let u=se.join(n,c),d=se.join(u,"run.json"),p=I(d,void 0);if(!p?.id)continue;let m=new Set([...Object.keys(p.workers||{}),...Qc(u)]),f=!1;for(let y of m){let k=se.join(u,"workers",x(y)),b=se.join(k,"worker.json"),g=I(b,void 0);if(!g){let E=se.join(Fy(u),x(y));if(st(E)&&(p.workers[x(y)]||p.workers[y])){delete p.workers[x(y)],delete p.workers[y],f=!0,i.push({runId:p.id,worker:y,action:"archived",reason:"removed stale live index entry for archived worker metadata",archivePath:E});continue}i.push({runId:p.id,worker:y,action:"skipped",reason:"worker.json missing"});continue}let h=PN(k,g,o,s);if(!h.eligible){i.push({runId:p.id,worker:y,action:"skipped",reason:h.reason});continue}let w=EN(u,y);wN(se.dirname(w),{recursive:!0}),xN(k,w),Wy(w,l()),delete p.workers[x(y)],delete p.workers[y],f=!0,i.push({runId:p.id,worker:y,action:"archived",reason:h.reason,archivePath:w})}f&&Ie(p)}return{workers:i}}function Hy(e,r=Date.now()){let t=new Set,n=Ae(e);for(let o of Xc(n)){let s=se.join(n,o);kn(s,r)&&t.add(`${e}\0${o}`)}return t}B();O();function MN(e,r){let t=Gc(e,r),n;try{n=ON(t)}catch{return null}if(!n.isSymbolicLink())return null;let o=mr.resolve(mr.dirname(t),NN(t));if(kn(o)||kn(t))return null;let s=`${t}.materialize-${Date.now()}`;return ru(o,s),DN(t),ru(s,t),o}function WN(e){let r=[];for(let t of Yc()){let n=mr.join(e.fromDir,t),o=mr.join(e.toDir,t);!it(n)||it(o)||(ru(n,o),r.push(t))}return r}function $y(e,r){let t=_t(r),n=!1;return e.workerDir!==r&&(e.workerDir=r,n=!0),e.stdoutPath!==t.stdoutPath&&(e.stdoutPath=t.stdoutPath,n=!0),e.stderrPath!==t.stderrPath&&(e.stderrPath=t.stderrPath,n=!0),e.heartbeatPath!==t.heartbeatPath&&(e.heartbeatPath=t.heartbeatPath,n=!0),n}function LN(e){let r=typeof e.lastStatus?.status=="string"?e.lastStatus.status:void 0,t=e.lastStatus?.attention&&typeof e.lastStatus.attention=="object"?e.lastStatus.attention.state:void 0;return r==="done"||t==="done"||e.stdoutFinalResult||e.heartbeatFinalResult?"done":r==="blocked"?"blocked":r==="running"?"exited":r??"exited"}function BN(e){let r=_t(e.canonicalDir),t=I(r.lastStatusPath,void 0),n=it(r.stdoutPath),o=it(r.heartbeatPath);if(!(n||o||t!=null))return null;let i=n?mt(r.stdoutPath):{finalResult:null},a=o?me(r.heartbeatPath):me(""),l=wr(a),c=LN({lastStatus:t,stdoutFinalResult:i.finalResult,heartbeatFinalResult:l}),u={name:e.workerName,runId:e.run.id,status:c,branch:typeof t?.branch=="string"?t.branch:`agent/${e.run.id}/${e.workerName}`,worktreePath:typeof t?.worktreePath=="string"?t.worktreePath:mr.join(le().worktreesDir,e.run.id,e.workerName),workerDir:e.canonicalDir,stdoutPath:r.stdoutPath,stderrPath:r.stderrPath,heartbeatPath:r.heartbeatPath,startedAt:typeof t?.startedAt=="string"?t.startedAt:e.run.createdAt,reconciledAt:new Date().toISOString(),reconcileReason:"synthesized worker.json from on-disk artifacts after metadata repair"};return typeof t?.taskId=="string"&&(u.taskId=t.taskId),typeof t?.agentOsId=="string"&&(u.agentOsId=t.agentOsId),typeof t?.planId=="string"&&(u.planId=t.planId),typeof t?.pid=="number"&&(u.pid=t.pid),(i.finalResult||l)&&(u.completionSnapshot={finalResult:i.finalResult??l??"completed",summary:a.lastHeartbeatSummary}),$y(u,e.canonicalDir),u}function UN(e,r){let t=!1,n={...e.workers||{}};for(let[o,s]of Object.entries(n)){let i=ot(r,e.id,o),a=mr.join(i,"worker.json");(Fi(s.workerDir)||Fi(s.statusPath)||s.workerDir!==i||s.statusPath!==a)&&(n[o]={workerDir:i,statusPath:a},t=!0)}return t&&(e.workers=n,Ie(e)),t}function FN(e){let r=[],t=ot(e.harnessRoot,e.run.id,e.workerName),n=Oy(e.harnessRoot,e.run.id,e.workerName),o=_t(t),s=WN({fromDir:n,toDir:t});s.length>0&&r.push({runId:e.run.id,worker:e.workerName,action:"relocated_artifacts",reason:`moved ${s.join(", ")} from nested runs/runs layout`});let i=Ty({harnessRoot:e.harnessRoot,runId:e.run.id,workerName:e.workerName,statusPath:e.statusPath}),a=I(i,void 0);if(!a&&it(o.workerJsonPath)&&(a=I(o.workerJsonPath,void 0)),!a){let l=BN({run:e.run,workerName:e.workerName,canonicalDir:t,harnessRoot:e.harnessRoot});if(l)return L(e.run.id,l),r.push({runId:e.run.id,worker:e.workerName,action:"synthesized_worker_json",reason:l.reconcileReason??"synthesized from artifacts"}),r;let c=it(t),u=Yc().some(d=>it(mr.join(t,d)));if(c&&!u){let d={name:e.workerName,runId:e.run.id,status:"exited",branch:`agent/${e.run.id}/${e.workerName}`,worktreePath:mr.join(le().worktreesDir,e.run.id,e.workerName),workerDir:t,stdoutPath:o.stdoutPath,stderrPath:o.stderrPath,heartbeatPath:o.heartbeatPath,startedAt:e.run.createdAt,reconciledAt:new Date().toISOString(),reconcileReason:"empty worker dir \u2014 marked abandoned during metadata reconcile"};return L(e.run.id,d),r.push({runId:e.run.id,worker:e.workerName,action:"marked_abandoned",reason:d.reconcileReason??"empty worker dir"}),r}return r.push({runId:e.run.id,worker:e.workerName,action:"skipped",reason:"worker.json missing and no recoverable artifacts"}),r}return $y(a,t)?(a.reconciledAt=new Date().toISOString(),a.reconcileReason=a.reconcileReason??"repaired nested runs/runs path fields",L(e.run.id,a),r.push({runId:e.run.id,worker:e.workerName,action:"repaired_worker_paths",reason:a.reconcileReason})):r.push({runId:e.run.id,worker:e.workerName,action:"skipped",reason:"worker metadata already canonical"}),r}function KN(e,r){let t=mr.join(N(e.id),"workers");if(!it(t))return[];let n=new Set(Object.keys(e.workers||{})),o=[];for(let s of TN(t,{withFileTypes:!0}))s.isDirectory()&&(n.has(s.name)||o.push(s.name));return o}function jy(){let{harnessRoot:e}=le(),r=Zc(e),t=[];for(let n of Xe()){let o=MN(e,n.id);o&&t.push({runId:n.id,worker:"*",action:"materialized_run_symlink",reason:`replaced symlink with real run dir (was ${o})`}),UN(n,e)&&t.push({runId:n.id,worker:"*",action:"repaired_run_index",reason:"repaired nested runs/runs workerDir/statusPath entries in run.json"});let s=new Set(Object.keys(n.workers||{}));for(let i of KN(n,e))s.add(i),n.workers={...n.workers||{},[i]:{workerDir:ot(e,n.id,i),statusPath:mr.join(ot(e,n.id,i),"worker.json")}},Ie(n),t.push({runId:n.id,worker:i,action:"repaired_run_index",reason:"indexed orphan worker dir into run.json"});for(let i of s){let a=n.workers?.[i];t.push(...FN({run:n,workerName:i,harnessRoot:e,statusPath:a?.statusPath}))}}return{workers:t,runMetadataRetention:r}}dt();fs();fe();B();Ln();O();import{execFileSync as Vy}from"node:child_process";import Gy from"node:path";function tu(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`https://github.com/${r[1]}/pull/${r[2]}`:null}function HN(e){let r=tu(e)?.match(/\/pull\/(\d+)$/);if(!r)return null;let t=Number.parseInt(r[1],10);return Number.isFinite(t)?t:null}function $N(e){if(e==null)return"";if(typeof e=="string")return e;try{return JSON.stringify(e)}catch{return""}}function jN(e){let r=new Set;for(let t of e.matchAll(/github\.com\/[^/\s)>"']+\/[^/\s)>"']+\/(?:pull|pulls)\/(\d+)/gi)){let n=Number.parseInt(t[1],10);Number.isFinite(n)&&r.add(n)}for(let t of e.matchAll(/\bPR\s*#?\s*(\d{2,})\b/gi)){let n=Number.parseInt(t[1],10);Number.isFinite(n)&&r.add(n)}for(let t of e.matchAll(/\bpr[-_]?(\d{2,})\b/gi)){let n=Number.parseInt(t[1],10);Number.isFinite(n)&&r.add(n)}return[...r]}function VN(e){let r=null;if(typeof e=="string"?r=$t(e):e&&typeof e=="object"&&!Array.isArray(e)&&(r=e),!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=tu(String(s.prUrl??s.pr_url??"")),a=String(s.outcome??"").trim();!i||a!=="merged"||n.push({prUrl:i,mergeCommit:typeof s.mergeCommit=="string"?s.mergeCommit:typeof s.merge_commit=="string"?s.merge_commit:null,reason:typeof s.reason=="string"?s.reason:null})}return n}function GN(e){try{let n=Vy("git",["config","--get","remote.origin.url"],{windowsHide:!0,cwd:e.repoDir,encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trim().match(/github\.com[:/]([^/]+\/[^/.]+)(?:\.git)?$/i)?.[1];if(!n)return null;let o=Vy("gh",["pr","view",String(e.prNumber),"--repo",n,"--json","state,mergedAt,mergeCommit,url"],{windowsHide:!0,cwd:e.repoDir,encoding:"utf8",stdio:["ignore","pipe","ignore"]}),s=JSON.parse(o);return{prUrl:tu(s.url??`https://github.com/${n}/pull/${e.prNumber}`)??`https://github.com/${n}/pull/${e.prNumber}`,state:s.state??"",mergedAt:s.mergedAt??null,mergeCommit:s.mergeCommit?.oid??null}}catch{return null}}function YN(e){let r=me(e.heartbeatPath);return e.completionSnapshot?.finalResult??wr(r)}function qN(e){let r=new Map,t=N(e.id);for(let n of ar(e)){let o=I(Gy.join(t,"workers",x(n),"worker.json"),void 0);if(o)for(let s of VN(YN(o))){let i=HN(s.prUrl);i!=null&&!r.has(i)&&r.set(i,s)}}return r}function JN(e,r){let t=me(e.heartbeatPath),n=[e.name,e.repairTargetPrUrl,e.taskPrUrl,e.branch,t.lastHeartbeatSummary,$N(r)].filter(Boolean).join(`
175
- `);return jN(n)}function zN(e){return e.localOnly===!0&&!e.taskId&&!e.agentOsId}function nu(e={}){let r=e.lookupPr??GN,t=[],n=new Map;for(let o of Xe()){let s=qN(o),i=N(o.id);for(let a of ar(o)){let l=Gy.join(i,"workers",x(a),"worker.json"),c=I(l,void 0);if(!c||!zN(c))continue;let u=J(c,{base:o.base,baseCommit:o.baseCommit});if(u.attention.state!=="needs_attention")continue;let d=null;for(let m of JN(c,u.finalResult)){if(d=s.get(m)??null,!d){let f=o.repo||c.worktreePath,y=`${f}#${m}`,k=n.has(y)?n.get(y)??null:r({repoDir:f,prNumber:m});n.has(y)||n.set(y,k),k&&(k.state==="MERGED"||k.mergedAt)&&(d={prUrl:k.prUrl,mergeCommit:k.mergeCommit??null,reason:"GitHub reports PR merged"})}if(d)break}if(!d){t.push({runId:o.id,worker:a,action:"skipped",reason:"no merged PR evidence"});continue}let p=new Date().toISOString();c.status="done",c.completionSnapshot={prUrl:d.prUrl,summary:`Local-only worker superseded by merged PR ${d.prUrl}`,finalResult:{summary:`Local-only repair/salvage worker superseded by merged PR ${d.prUrl}`,targetPrReconciliation:[{prUrl:d.prUrl,outcome:"merged",mergeCommit:d.mergeCommit??null,reason:d.reason??"PR already merged; local-only worker no longer requires attention"}]}},c.completionAckSource="local-pr-merged-reconcile",c.reconciledAt=p,c.reconcileReason="local-only needs_attention superseded by merged PR",L(o.id,c),t.push({runId:o.id,worker:a,action:"marked_done",reason:c.reconcileReason,prUrl:d.prUrl,mergeCommit:d.mergeCommit??null})}}return{workers:t}}var QN=900*1e3;function ZN(){return process.env.KYNVER_NO_STALE_CLEANUP==="1"}function Yy(e,r){let t=bi({worker:e,status:r}),n=t?Si(e,t):!1,o=r.attention.state==="blocked"?"blocked":r.attention.state==="done"||r.status==="done"||t?"done":"exited",s=t&&n?`captured exited-worker handoff (${t.source})`:t?"synced finished worker record after terminal stdout/heartbeat":r.attention.reason;return{nextStatus:o,reason:s,handoffCaptured:n}}function eD(e,r){r.stopClass&&(e.stopClass=r.stopClass),r.stopReason&&(e.stopReason=r.stopReason),r.exit&&(e.exitCode=r.exit.exitCode,e.exitSignal=r.exit.signal,e.oomEvidence=r.exit.oomEvidence??null);let t=r.error?.trim();t&&(e.exitStderrTail=t.slice(-1e3))}function qy(){let e=jy();if(ZN()){let s=nu(),i=eu();return{workers:[],finalizedRuns:Wo(),metadataReconcile:e,localPrAttentionReconcile:s,terminalWorkerArchive:i}}let r=[],t=Date.now();for(let s of Xe())for(let i of ar(s)){let a=XN.join(N(s.id),"workers",x(i),"worker.json"),l=I(a,void 0);if(!l||l.status!=="running"){r.push({runId:s.id,worker:i,action:"skipped",reason:l?`worker status is ${l.status}`:"worker.json missing"});continue}let c=J(l,{base:s.base,baseCommit:s.baseCommit});if(c.finalResult){if(l.status==="running"){let u=Yy(l,c);l.status=u.nextStatus,l.reconciledAt=new Date().toISOString(),l.reconcileReason=u.reason,l.stopClass="finished",L(s.id,l),r.push({runId:s.id,worker:i,action:"marked_exited",reason:l.reconcileReason})}else r.push({runId:s.id,worker:i,action:"skipped",reason:"final result present"});continue}if(!c.alive){let u=Yy(l,c);l.status=u.nextStatus,l.reconciledAt=new Date().toISOString(),l.reconcileReason=u.reason,eD(l,c),L(s.id,l),r.push({runId:s.id,worker:i,action:"marked_exited",reason:c.attention.reason});continue}if(c.attention.state==="stale"&&l.pid&&Y(l.pid)){let u=c.lastHeartbeatAt?Date.parse(c.lastHeartbeatAt):NaN,d=c.lastActivityAt?Date.parse(c.lastActivityAt):NaN,p=!Number.isFinite(u)||t-u>QN,m=Number.isFinite(d)&&t-d>Na;if(p&&m){Me(l.pid,"SIGTERM"),l.status="exited",l.reconciledAt=new Date().toISOString(),l.reconcileReason=`reconciled stale worker: ${c.attention.reason}`,l.stopClass="stuck",l.stopReason=`stuck (no progress) \u2014 ${c.attention.reason}`,L(s.id,l),r.push({runId:s.id,worker:i,action:"killed_stale",reason:c.attention.reason});continue}}r.push({runId:s.id,worker:i,action:"skipped",reason:c.attention.reason})}let n=nu(),o=eu();return{workers:r,finalizedRuns:Wo(),metadataReconcile:e,localPrAttentionReconcile:n,terminalWorkerArchive:o}}Gt();B();import lD from"node:path";import{readdirSync as rD,readFileSync as tD}from"node:fs";var nD="dispatch:claim:",oD=900*1e3,sD=10080*60*1e3,iD=200,Et={recoveredStrandedClaims:0,recoveryDeferredOrphans:0,recoveryStoreFailures:0};function aD(e){if(process.platform!=="linux"||!e.trim())return null;let r=[];try{r=rD("/proc")}catch{return null}for(let t of r)if(/^\d+$/.test(t)&&Number(t)!==process.pid)try{if(tD(`/proc/${t}/cmdline`,"utf8").replace(/\0/g," ").includes(e))return Number(t)}catch{}return null}async function Jy(e){let r=Ur(),t={mode:r,scanned:0,outcomes:[]};if(r!=="enforce")return t;let n=z();if(!n)return t;let o=e.nowMs??Date.now(),s=e.strandedAfterMs??oD,i=e.findOrphanPid??aD,a=[],l;try{l=n.listOperationReceipts({operation:"dispatch-claim",recordedAfter:new Date(o-sD).toISOString(),limit:iD})}catch{return Et.recoveryStoreFailures+=1,t}for(let c of l){let u=c.idempotencyKey.slice(nD.length),d=u.split(":")[0]??"",p=u.slice(d.length+1);if(!(!d||!p))try{let m=Date.parse(c.recordedAt);if(!Number.isFinite(m)||o-m<s||n.getOperationReceipt(`dispatch:spawned:${u}`)||n.getOperationReceipt(`dispatch:released:${u}`))continue;let f=xo(p);if(n.listOperationReceipts({keyPrefix:`dispatch:completion-acked:${d}:`,limit:10}).some(E=>{if(f===null)return!0;let S=xo(E.idempotencyKey.slice(`dispatch:completion-acked:${d}:`.length));return S===null||S>=f}))continue;let b={};try{b=c.resultJson?JSON.parse(c.resultJson):{}}catch{b={}}let g=b.runId??null,h=b.workerName??null;if(g&&h&&e.hasLiveWorker({runId:g,workerName:h})){Ci({taskId:d,leaseToken:p}),a.push({taskId:d,leaseToken:p,runId:g,workerName:h,action:"finalized_late"});continue}if(g&&h){let E=e.worktreePathFor({runId:g,workerName:h}),S=E?i(E):null;if(S!==null){Et.recoveryDeferredOrphans+=1,a.push({taskId:d,leaseToken:p,runId:g,workerName:h,action:"deferred_orphan",detail:`live pid ${S} references ${E}`});continue}}if(!g){a.push({taskId:d,leaseToken:p,runId:g,workerName:h,action:"skipped",detail:"claim intent missing runId \u2014 cannot resolve lease owner"});continue}let w=await e.releaseClaim({taskId:d,leaseToken:p,runId:g});w.released?(ln({taskId:d,leaseToken:p},"restart_recovery"),h&&(Eo(g,h),tt(g,h)),Et.recoveredStrandedClaims+=1,a.push({taskId:d,leaseToken:p,runId:g,workerName:h,action:"released"})):w.transportError?a.push({taskId:d,leaseToken:p,runId:g,workerName:h,action:"deferred_transport",detail:w.detail}):(ln({taskId:d,leaseToken:p},"restart_recovery_refused"),a.push({taskId:d,leaseToken:p,runId:g,workerName:h,action:"release_refused",detail:w.detail}))}catch{Et.recoveryStoreFailures+=1}}return{mode:r,scanned:l.length,outcomes:a}}function zy(){return{"dispatchReceipts.recoveredStrandedClaims":Et.recoveredStrandedClaims,"dispatchReceipts.recoveryDeferredOrphans":Et.recoveryDeferredOrphans,"dispatchReceipts.recoveryStoreFailures":Et.recoveryStoreFailures}}var Xy=!1;async function Qy(e){if(Xy||Ur()!=="enforce")return null;Xy=!0;try{let r=He().runnerId,t=await Jy({hasLiveWorker:e.hasLiveWorker,worktreePathFor:({runId:n,workerName:o})=>lD.join(le().worktreesDir,n,o),releaseClaim:async({taskId:n,leaseToken:o,runId:s})=>{let i=await Do({baseUrl:e.baseUrl,secret:e.secret,agentOsId:e.agentOsId,taskId:n,leaseOwner:go(s,r),leaseToken:o});return{released:i.released,transportError:i.transportError,detail:i.httpOk?void 0:JSON.stringify(i.releaseResponse).slice(0,200)}}});return t.outcomes.length>0&&console.error(`[daemon] D1b claim recovery: ${t.outcomes.map(n=>`${n.taskId}:${n.action}`).join(", ")}`),t}catch{return null}}H();Le();_s();import SD from"node:os";Ua();import{mkdirSync as mD,readFileSync as fD,renameSync as gD,writeFileSync as hD}from"node:fs";import{homedir as kD}from"node:os";import Ki from"node:path";import{existsSync as cD,readFileSync as uD}from"node:fs";import{dirname as ou,join as eR}from"node:path";import{fileURLToPath as Zy}from"node:url";function dD(e){let r=ou(Zy(e));for(let t=0;t<6;t+=1){if(cD(eR(r,"package.json")))return r;let n=ou(r);if(n===r)break;r=n}throw new Error(`package.json not found above ${ou(Zy(e))}`)}function pD(e=import.meta.url){let r=eR(dD(e),"package.json"),t=JSON.parse(uD(r,"utf8"));if(typeof t.version!="string"||!t.version.trim())throw new Error(`Missing package.json version at ${r}`);return t.version}var rR=pD();function tR(){return Ki.join(kD(),".kynver")}function yD(e=tR()){return Ki.join(e,"doctor-native-windows.json")}function nR(e=tR()){return Ki.join(e,"native-windows-state.json")}function RD(e,r){mD(Ki.dirname(e),{recursive:!0});let t=`${e}.tmp-${process.pid}`;hD(t,`${JSON.stringify(r,null,2)}
176
- `,{mode:384}),gD(t,e)}function iu(e){try{return JSON.parse(fD(e,"utf8"))}catch{return null}}function vD(e){let r=iu(yD(e));return!r||typeof r.checkedAt!="string"||typeof r.verdict!="string"?null:{checkedAt:r.checkedAt,runtimeVersion:typeof r.runtimeVersion=="string"?r.runtimeVersion:"unknown",verdict:r.verdict,failing:Array.isArray(r.failing)?r.failing.filter(t=>typeof t=="string"):[],warnings:Array.isArray(r.warnings)?r.warnings.filter(t=>typeof t=="string"):[],providers:r.providers&&typeof r.providers=="object"?Object.fromEntries(Object.entries(r.providers).filter(t=>typeof t[1]=="string")):{},orphanedProcesses:typeof r.orphanedProcesses=="number"?r.orphanedProcesses:0}}function oR(e=new Date,r){try{let t=nR(r),n=iu(t)??{};RD(t,{...n,lastWorkerCompletedAt:e.toISOString()})}catch{}}function bD(e){let r=iu(nR(e));return typeof r?.lastWorkerCompletedAt=="string"?r.lastWorkerCompletedAt:null}var su=null,sR=null;function iR(e){su=e.admission,sR=e.ownerKind}function aR(e={}){let r=e.platform??process.platform,t=e.hostKind??Ba(),n=t==="win32";return{hostKind:t,wsl:t==="wsl",platform:r,arch:process.arch,nodeVersion:process.versions.node,runtimeVersion:rR,ownerKind:sR,nativeWindows:n?{admission:su?.basis??null,hostCapability:su?.hostCapability??null,lastDoctor:vD(e.root),lastWorkerCompletedAt:bD(e.root)}:null}}function lR(e,r={}){let t=U(),n=(r.boxKind??Sr(t)).trim().toLowerCase()||"forge",o=r.hostLabel??SD.hostname();return{boxId:xs({boxKind:n,hostLabel:o,explicitBoxId:r.boxId,config:t,env:process.env}),boxKind:n,displayName:r.displayName??null,hostLabel:o,observedAt:r.observedAt??new Date().toISOString(),totalMemBytes:e.totalMemBytes,freeMemBytes:e.freeMemBytes,activeWorkers:e.activeWorkers,maxConcurrentWorkers:e.maxConcurrentWorkers,autoCap:e.autoCap,slotsAvailable:e.slotsAvailable,harnessRunId:r.harnessRunId??null,queuedTasks:r.queuedTasks??null,reason:e.reason,...r.prEvidence?.length?{prEvidence:r.prEvidence}:{},host:aR()}}B();Ze();ds();fe();H();import wD from"node:path";B();fe();O();async function cR(e){let r=e.pipeline===!0||e.pipeline==="true";try{let t=q(String(Rr(String(e.run||""),"--run"))),n=String(Rr(String(e.agentOsId||""),"--agent-os-id")),o=Q(e.baseUrl?String(e.baseUrl):void 0),s=await ee(e.secret?String(e.secret):void 0,n,{baseUrl:o}),i=He({runId:t.id}).runnerId,a=await Nk({run:t.id,agentOsId:n,...e},"run_sweep"),l=[];for(let p of Object.keys(t.workers||{})){let m=I(wD.join(N(t.id),"workers",x(p),"worker.json"),void 0);if(!m||!m.dispatched||!m.taskId)continue;let f=J(m);if(f.alive||f.finalResult||m.completionReportedAt)continue;try{let g=await Oo({run:t.id,name:p,agentOsId:n,...e.baseUrl?{baseUrl:String(e.baseUrl)}:{},...e.secret?{secret:String(e.secret)}:{}});if(g.ok&&!g.skipped){l.push({worker:p,taskId:m.taskId,pid:m.pid,released:!1,deathReported:!0,stopClass:f.stopClass??null});continue}}catch{}let y=oi({runId:t.id,workerLeaseOwner:m.leaseOwner??null,runnerId:i}),k=`${o}/api/agent-os/by-id/${encodeURIComponent(n)}/tasks/${encodeURIComponent(String(m.taskId))}/release`,b;try{b=await X(k,s,{agentOsId:n,leaseOwner:y,...m.leaseToken?.trim()?{leaseToken:m.leaseToken.trim()}:{}},{agentOsId:n,baseUrl:o})}catch(g){b={ok:!1,error:g.message}}l.push({worker:p,taskId:m.taskId,pid:m.pid,released:b.ok===!0||b.response?.ok===!0,response:b.response??b})}let c=`${o}/api/agent-os/by-id/${encodeURIComponent(n)}/tasks/reap`,u;try{u=await X(c,s,{agentOsId:n,...Number(e.graceMs)>=0&&e.graceMs!==void 0&&e.graceMs!==!0?{graceMs:Math.floor(Number(e.graceMs))}:{}},{agentOsId:n,baseUrl:o})}catch(p){u={ok:!1,error:p.message}}let d={runId:t.id,agentOsId:n,snapshotPublished:a,releasedLocalOrphans:l,reap:u.response??u};if(r)return{ok:!0,...d};console.log(JSON.stringify(d,null,2))}catch(t){if(r)return{ok:!1,error:t.message};console.error(`run sweep failed: ${t.message}`),process.exit(1)}}O();fe();B();O();import xD from"node:path";H();async function uR(e){let r=Q(e.baseUrl),t=await ee(e.secret,e.agentOsId,{baseUrl:r}),n=`${r}/api/agent-os/by-id/${encodeURIComponent(e.agentOsId)}/tasks/${encodeURIComponent(e.taskId)}/plan-progress-sync`,o=await X(n,t,{phase:e.phase,taskId:e.taskId,blocker:e.blocker,artifact:e.artifact},{agentOsId:e.agentOsId,baseUrl:r});return{ok:o.ok,status:o.status,response:o.response}}async function dR(e,r){let t=q(e),n=String(r.agentOsId||"");if(!n)return[];let o=[];for(let s of Object.keys(t.workers||{})){let i=I(xD.join(N(t.id),"workers",x(s),"worker.json"),void 0);if(!i?.dispatched||!i.taskId)continue;let a=J(i);if(!a.heartbeatBlocker)continue;if(i.lastSyncedHeartbeatBlocker===a.heartbeatBlocker){o.push({worker:s,phase:"heartbeat_blocker",ok:!0,skipped:!0});continue}let l=await uR({agentOsId:n,taskId:i.taskId,phase:"heartbeat_blocker",blocker:a.heartbeatBlocker,baseUrl:r.baseUrl?String(r.baseUrl):void 0,secret:r.secret?String(r.secret):void 0});l.ok&&(i.lastSyncedHeartbeatBlocker=a.heartbeatBlocker,L(t.id,i)),o.push({worker:s,phase:"heartbeat_blocker",ok:l.ok})}return o}hs();H();Le();Ze();import Ge from"node:path";ms();import $i from"node:path";de();fe();var au=[".next",".turbo","dist","build",".cache","node_modules/.cache"];function pR(e){let r=e.replace(/\\/g,"/").replace(/\/+$/,"");if(r==="node_modules"||r.startsWith("node_modules/"))return!0;for(let t of au)if(r===t||r.startsWith(`${t}/`))return!0;return!1}function $e(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!pR(n)})}function Ct(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 Bo(e){let r=e.gitAncestry?.relation;return r==="merged"||r==="synced"?$e(e.changedFiles).length>0:!!(Ct(e.finalResult)||r==="ahead"||r==="diverged"||e.changedFiles.length>0&&e.finalResult)}O();function Uo(e){return e.status||(e.status=J(e.worker,{base:e.run.base,baseCommit:e.run.baseCommit})),e.status}function lu(e,r){if(e.status)return $e(e.status.changedFiles).length>0;let t=r?r.porcelain(e.worktreePath):An(e.worktreePath);return $e(t).length>0}function _D(e){let r=e.worker.completionSnapshot?.finalResult;return r??(e.worker.taskPrUrl?{prUrl:e.worker.taskPrUrl}:null)}function cu(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=_D(e);if(o&&!Y(t.pid)){let i=r?.gitStatusCache?r.gitStatusCache.porcelain(e.worktreePath):An(e.worktreePath),a=e.run.baseCommit?.trim()||e.run.base?.trim()||"origin/main",c=r?.gitRevCache?.countAheadOfMain(e.worktreePath,a)===0?{checked:!0,base:a,relation:"synced"}:Qo(e.worktreePath,{base:e.run.base,baseCommit:e.run.baseCommit}),u={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:c,finalResult:s,completionBlocker:typeof t.completionBlocker=="string"&&t.completionBlocker.trim()||null,prUrl:t.repairTargetPrUrl??t.taskPrUrl??Ct(s)};return e.status=u,u}return Uo(e)}fe();fe();dt();O();function ED(e,r=Date.now(),t=Lo){let n=me(e.heartbeatPath);if(!n.lastHeartbeatAt)return!1;let o=r-Date.parse(n.lastHeartbeatAt);return Number.isFinite(o)&&o>=0&&o<t}function yn(e,r=Date.now(),t=Lo){return Y(e.pid)?!0:ED(e,r,t)}function CD(e,r){return r?r.runTerminalCache.derive(e.run):xt(e.run)}function Kr(e,r=Date.now()){return yn(e.worker,r)}function uu(e,r){return wt.has(e.run.status)?!1:CD(e,r)!==null}function mR(e,r,t=Date.now()){if(Kr(e,t))return!0;if(wt.has(e.run.status)||uu(e,r))return!1;let n=Uo(e);return xe(n)?!1:!!Kr(e,t)}ms();fe();function fR(e,r){if(!(typeof e.worker.completionBlocker=="string"?e.worker.completionBlocker.trim():""))return!1;if(Kr(e))return!0;let n=r??Uo(e);return!!(!xe(n)||Bo(n)||$e(n.changedFiles).length>0||Ht({finalResult:n.finalResult,changedFiles:n.changedFiles,gitAncestry:n.gitAncestry,prUrl:Ct(n.finalResult)}).blocked)}de();O();import{existsSync as hR,mkdirSync as PD,writeFileSync as gR}from"node:fs";import Hi from"node:path";function kR(e,r,t){return Hi.join(e,"salvage",x(r),x(t))}function yR(e){return hR(Hi.join(kR(e.harnessRoot,e.runId,e.workerName),"evidence.json"))}function RR(e){let r=kR(e.harnessRoot,e.indexed.runId,e.indexed.workerName);PD(r,{recursive:!0});let t=Hi.join(r,"salvage.patch"),n=!1;if(hR(e.indexed.worktreePath)){let s=ne(e.indexed.worktreePath,["diff","HEAD"]),i=ne(e.indexed.worktreePath,["diff","--cached"]),a=[s.stdout,i.stdout].filter(l=>l.trim()).join(`
170
+ `)}})}write(r,t){if(!r.destroyed)try{r.write(Tl(t))}catch{}}async handleLine(r,t){let n=Nl(t);if(!n.ok){this.refuse(n.reason,n.error),this.write(r,{id:n.id,ok:!1,reason:n.reason,error:n.error});return}let{request:o}=n;if(this.revoked||this.closed){this.refuse("revoked","grant revoked"),this.write(r,{id:o.id,ok:!1,reason:"revoked",error:"worker tools are no longer available for this task"});return}if(this.now()>=this.opts.expiresAt){this.refuse("grant_expired","grant expired"),this.write(r,{id:o.id,ok:!1,reason:"grant_expired",error:"worker tools are no longer available for this task"});return}if(o.op==="list_tools"){this.write(r,{id:o.id,ok:!0,tools:this.toolDescriptors});return}if(!sn(o.name)){this.refuse("unknown_tool",o.name),this.write(r,{id:o.id,ok:!1,reason:"unknown_tool",error:`unknown tool: ${o.name}`});return}if(!this.grantedTools.includes(o.name)){this.refuse("capability_not_granted",o.name),this.write(r,{id:o.id,ok:!1,reason:"capability_not_granted",error:`tool not granted for this task: ${o.name}`});return}try{let s=await Zs({apiBaseUrl:this.opts.apiBaseUrl,agentOsId:this.opts.agentOsId,taskId:this.opts.taskId,token:this.opts.token,fetchImpl:this.fetchImpl},o.name,o.args??{});this.write(r,{id:o.id,ok:!0,result:s})}catch(s){let i=s instanceof Error?s.message:"request failed";this.refuse("upstream_error",i),this.write(r,{id:o.id,ok:!1,reason:"upstream_error",error:i})}}};var Hk={posture:"scoped",summary:"scoped: per-worker endpoint in an owner-only (0700) directory, one connection at a time. Peer identity is not observed \u2014 another process of the same OS user is not excluded.",verify:async()=>({ok:!0})};function Mc(){return Hk}var lT=7200*1e3;async function $k(e,r){let t=typeof r.name=="string"?r.name.trim():"";if(!t||t==="undefined"||t==="null")throw new Error(`worker name is required and must be a real identifier (got: ${JSON.stringify(r.name)})`);let n=x(t);if(e.workers?.[n])throw new Error(`worker already exists in run ${e.id}: ${n}`);if(!r.task)throw new Error(`missing task text for worker ${n}`);let o=r.routingRule||r.requestedModel?{provider:r.provider||Tr,model:r.model,rule:r.routingRule||"explicit:spawn",requestedModel:r.requestedModel??r.model}:ni({explicitModel:r.model,explicitProvider:r.provider,explicitProviderIsOperatorOverride:!!r.provider?.trim(),configuredProvider:U().workerProvider}),s=Og(o.provider),i=o.model;if(s.preflightModel){let T=s.preflightModel(r.model);if(!T.ok)throw new Error(`model preflight failed for provider "${s.name}": ${T.note??"invalid model/provider combination"}`);T.normalized&&console.error(`[supervisor] ${n}: ${T.note}`),i=T.model}let{worktreesDir:a}=le(),l=gn.join(N(e.id),"workers",n);aT(l,{recursive:!0});let c=gn.join(a,e.id,n),u=r.repairTargetBranch?.trim()||void 0,d=u||r.branch||`agent/${e.id}/${n}`;if(iT(c))throw new Error(`worktree path already exists: ${c}`);if(Z(e.repo,["fetch","origin","--prune"],{allowFailure:!0}),u)Wk(e.repo,c,u);else{let T=xg({baseCommit:e.baseCommit,base:e.base,verifyRef:te=>Z(e.repo,["rev-parse","--verify","--quiet",`${te}^{commit}`],{allowFailure:!0}).trim().length>0});T.repaired&&(console.error(`[supervisor] ${n}: run baseCommit ${e.baseCommit||"<empty>"} invalid \u2014 repaired to ${T.ref} (${T.source})`),e.baseCommit=Z(e.repo,["rev-parse",T.ref],{allowFailure:!0}).trim()||T.ref,Ie(e)),Z(e.repo,["worktree","add","-b",d,c,e.baseCommit],{throwError:!0})}let p=gn.join(l,"stdout.jsonl"),m=gn.join(l,"stderr.log"),f=gn.join(l,"heartbeat.jsonl"),y=Pg({task:r.task,ownedPaths:r.ownedPaths||[],worktreePath:c,heartbeatPath:f,planId:r.planId,taskId:r.taskId,instructionPolicyMarkdown:r.instructionPolicyMarkdown,memoryQualityMarkdown:r.memoryQualityPromptMarkdown??r.memoryQualityCapture?.promptMarkdown??null,personaMarkdown:r.personaMarkdown,contextEnvelopeMarkdown:r.contextEnvelopeMarkdown,runtimeEnvelopeMarkdown:r.runtimeEnvelopeMarkdown,model:i,repairTargetPrUrl:r.repairTargetPrUrl,repairTargetBranch:r.repairTargetBranch??(u||void 0)}),k=process.env.KYNVER_HARNESS_TASK_ID,b=process.env.KYNVER_HARNESS_AGENT_OS_ID;r.taskId&&(process.env.KYNVER_HARNESS_TASK_ID=String(r.taskId)),r.agentOsId&&(process.env.KYNVER_HARNESS_AGENT_OS_ID=String(r.agentOsId));let g=pi({title:r.taskTitle,personaSlug:r.personaSlug,parentTaskId:r.parentTaskId,executorRef:r.executorRef}),h,w,E,S,_=r.workerMcpToken?.trim();if(_&&Dl(s.name)&&ao()){let T=il();T&&r.agentOsId&&r.taskId?(w={apiBaseUrl:T,agentOsId:String(r.agentOsId),taskId:String(r.taskId),token:_,capabilities:r.workerMcpCapabilities??null},console.error(`[supervisor] ${n}: worker tools enabled (in-process, no config on disk)`)):console.error(`[supervisor] ${n}: worker tools skipped (missing API base URL or task identity) \u2014 spawning without tools`)}let K=Pf(s.name);if(_&&K&&ao()){let T=il();if(T&&r.agentOsId&&r.taskId){let te=Nc({agentOsId:String(r.agentOsId),workerKey:l}),F=await No.start({address:te,apiBaseUrl:T,agentOsId:String(r.agentOsId),taskId:String(r.taskId),token:_,capabilities:r.workerMcpCapabilities??null,expiresAt:r.workerMcpExpiresAt??Date.now()+lT,workerPid:process.pid,identity:Mc(),onRefusal:D=>console.error(`[supervisor] ${n}: worker tools refused a call (${D})`)});if(nc(l,F),s.name==="codex"){let D=ah({workerDir:l,brokerSocketPath:te.socketPath});if(D.ok){let M=lh(D.codexHome,Ll());M.ok?(E=D.codexHome,h=E):(wo(l),await Qr(l),console.error(`[supervisor] ${n}: worker tools skipped \u2014 codex rejected the generated config (${M.detail}); spawning with the normal environment`))}else await Qr(l),console.error(`[supervisor] ${n}: worker tools skipped \u2014 ${D.detail}`)}else if(s.name==="cursor"){let D=sh({worktreePath:c,brokerSocketPath:te.socketPath});D.ok?h=D.configPath:(await Qr(l),console.error(`[supervisor] ${n}: worker tools skipped \u2014 ${D.detail}`))}else if(s.name==="gemini"&&ri(ei())==="antigravity"){let D=fh({worktreePath:c,brokerSocketPath:te.socketPath});D.ok?h=D.configPath:(await Qr(l),console.error(`[supervisor] ${n}: worker tools skipped \u2014 ${D.detail}`))}else if(s.name==="gemini"){let D=hh({workerDir:l,brokerSocketPath:te.socketPath});D.ok?(S=D.geminiCliHome,h=S):(await Qr(l),console.error(`[supervisor] ${n}: worker tools skipped \u2014 ${D.detail}`))}else h=If({workerDir:l,brokerSocketPath:te.socketPath});h&&console.error(`[supervisor] ${n}: worker tools enabled via broker (${F.identitySummary})`)}else console.error(`[supervisor] ${n}: worker MCP tools skipped (missing API base URL or task identity) \u2014 spawning without tools`)}let $=r.taskId?gp(hp(e.id,String(r.taskId),n)):null,C;try{C=kp($,()=>s.start({name:n,task:r.task,ownedPaths:r.ownedPaths,model:i,modelPinned:sg(o.rule),branch:d,worktreePath:c,workerDir:l,stdoutPath:p,stderrPath:m,heartbeatPath:f,prompt:y,reviewWorker:g,executionMode:r.executionMode??"write",...w?{workerToolGrant:w}:{},...E?{codexHome:E}:{},...S?{geminiCliHome:S}:{},...h?{mcpConfigPath:h,mcpAllowedTools:Cf(r.workerMcpCapabilities)}:{}}))}catch(T){throw h&&(Js(l),gi(c),wo(l),yi(l),ki(c),ln(l)),Z(e.repo,["worktree","remove","--force",c],{allowFailure:!0}),Z(e.repo,["branch","-D",d],{allowFailure:!0}),T}finally{k===void 0?delete process.env.KYNVER_HARNESS_TASK_ID:process.env.KYNVER_HARNESS_TASK_ID=k,b===void 0?delete process.env.KYNVER_HARNESS_AGENT_OS_ID:process.env.KYNVER_HARNESS_AGENT_OS_ID=b}let re=cg(C.model,i,s.defaultModel),ke=U(),Ye=Sr(process.env,ke),kr=He().runnerId,jr=_s({boxKind:Ye.boxKind,config:ke,env:process.env}),j={name:n,runId:e.id,status:"running",pid:C.pid,model:re,provider:o.provider,branch:d,worktreePath:c,workerDir:l,stdoutPath:p,stderrPath:m,heartbeatPath:f,ownedPaths:r.ownedPaths,...r.agentOsId?{agentOsId:String(r.agentOsId)}:{},...r.taskId?{taskId:String(r.taskId)}:{},...r.planId?{planId:String(r.planId)}:{},...r.instructionPolicyFingerprint?{instructionPolicyFingerprint:String(r.instructionPolicyFingerprint)}:{},...r.instructionPolicyEvidence?{instructionPolicyEvidence:r.instructionPolicyEvidence}:{},...r.memoryQualityCapture?{memoryQualityCapture:r.memoryQualityCapture}:{},...r.personaSlug?{personaSlug:String(r.personaSlug)}:{},...r.personaEvidence?{personaEvidence:r.personaEvidence}:{},...r.contextEnvelopeEvidence?{contextEnvelopeEvidence:r.contextEnvelopeEvidence}:{},...r.runtimeEnvelopeEvidence?{runtimeEnvelopeEvidence:r.runtimeEnvelopeEvidence}:{},...r.leaseOwner?{leaseOwner:String(r.leaseOwner)}:{},...r.leaseToken?{leaseToken:String(r.leaseToken)}:{},...r.dispatched?{dispatched:!0}:{},...!r.agentOsId||!r.taskId?{localOnly:!0}:{},routingRule:o.rule,...o.requestedModel?{requestedModel:o.requestedModel}:{},...o.orchestrationAudit?{orchestrationAudit:o.orchestrationAudit}:{},...r.executorRef?{executorRef:String(r.executorRef)}:{},...r.parentTaskId?{parentTaskId:String(r.parentTaskId)}:{},...r.taskTitle?{taskTitle:String(r.taskTitle)}:{},...r.taskPrUrl?{taskPrUrl:String(r.taskPrUrl)}:{},...r.repairTargetPrUrl?{repairTargetPrUrl:String(r.repairTargetPrUrl)}:{},...r.repairTargetBranch?{repairTargetBranch:String(r.repairTargetBranch)}:{},executionMode:r.executionMode??"write",boxKind:Ye.boxKind,boxId:jr,runtimeId:kr,startedAt:new Date().toISOString(),...$?{oomRetryHeapMb:$}:{}};if(L(e.id,j),tc(l,C.pid),e.workers={...e.workers||{},[n]:{workerDir:l,statusPath:gn.join(l,"worker.json")}},e.status="running",Ie(e),j.agentOsId&&j.taskId){let T;try{T=Mk({runId:e.id,workerName:n,workerDir:l,agentOsId:j.agentOsId})}catch(te){let F=`completion sidecar failed to spawn: ${te.message}`;j.completionBlocker=F,L(e.id,j)}if(T)T.pid&&(j.completionSidecarPid=T.pid,L(e.id,j));else{let te=j.completionBlocker??"completion sidecar failed to spawn (CLI not found or spawn error)";j.completionBlocker=te,j.completionSidecarSpawnFailedAt=new Date().toISOString(),L(e.id,j),Sg(e.id,j,te)}}return j}H();Jn();function cT(e,r){let t=Jt(r)?.trim();return t||Qe("KYNVER_RUNNER_TOKEN",e)||Qe("OPENCLAW_RUNNER_TOKEN",e)||null}function uT(e){let r=Ar()?.trim();return r||Qe("KYNVER_API_KEY",e)||Qe("KYNVER_RUNTIME_SECRET",e)||Qe("KYNVER_CRON_SECRET",e)||Qe("OPENCLAW_CRON_SECRET",e)||null}async function jk(e,r={}){let t=r.env??process.env,n=r.nowMs??Date.now(),o=r.timeoutMs??8e3,s=new Date(n).toISOString(),i=r.fetcher??fetch,a=cT(t,e.agentOsId),l=uT(t),c="none",u={};if(a)c="runner_token",u["X-Kynver-Runner-Token"]=a;else if(l)c="api_key",u["X-Kynver-Service-Secret"]=l;else return{reachable:!1,authSource:"none",endpoint:null,httpStatus:null,responseMs:null,probedAt:s,error:"No runner token or API key found \u2014 set KYNVER_RUNNER_TOKEN, store runnerToken in ~/.kynver/credentials, or complete M0.3 install"};let d=`${e.apiBaseUrl}/api/agent-os/runner-token/verify`,p=Date.now();try{let m=AbortSignal.timeout(o),f=await i(d,{method:"GET",headers:{...u,Accept:"application/json","X-Kynver-Agent-Os-Id":e.agentOsId},signal:m}),y=Date.now()-p,k=f.status<500;return{reachable:k,authSource:c,endpoint:d,httpStatus:f.status,responseMs:y,probedAt:s,error:k?null:`MCP endpoint returned HTTP ${f.status} \u2014 server error or misconfigured KYNVER_API_URL`}}catch(m){let f=Date.now()-p,y=m instanceof Error?m.message:String(m);return{reachable:!1,authSource:c,endpoint:d,httpStatus:null,responseMs:f,probedAt:s,error:`MCP endpoint unreachable: ${y}`}}}Mn();function dT(e,r){let t=e.KYNVER_API_URL?.trim()||e.KYNVER_CRON_FIRE_BASE_URL?.trim()||r.apiBaseUrl?.trim()||null;return t?Nn(t)??null:null}function pT(e,r){return(e.KYNVER_DEFAULT_REPO?.trim()||e.KYNVER_HARNESS_REPO?.trim()||r.defaultRepo?.trim()||null)??null}function mT(e,r,t){let n=e.KYNVER_HARNESS_ROOT?.trim()||r.harnessRoot?.trim()||null;return n||t||null}function Vk(e,r={}){let t=r.env??process.env,n=r.nowMs??Date.now(),o=r.config??{},s=dT(t,o);if(!s)return{ok:!1,code:"missing_api_base_url",detail:"No API base URL found. Set KYNVER_API_URL, or run `kynver setup --api-base-url <url>`."};let i=(t.KYNVER_AGENT_OS_ID??t.OPENCLAW_AGENT_OS_ID??o.agentOsId??"").trim();if(i&&i!==e.agentOsId)return{ok:!1,code:"workspace_mismatch",detail:`envelope workspace "${e.agentOsId}" does not match local config "${i}"`};let a=pT(t,o),l=mT(t,o,a);return{ok:!0,context:{jobId:e.jobId,agentOsId:e.agentOsId,taskId:e.taskId,repoPath:a,worktreeBase:l,apiBaseUrl:s,hydratedAt:new Date(n).toISOString()}}}O();H();import{mkdirSync as Yk}from"node:fs";import{homedir as fT,tmpdir as z2}from"node:os";import Wi from"node:path";function qk(){let e=process.env.KYNVER_STATE_ROOT;return e?Wi.resolve(e):Wi.join(fT(),".kynver","state")}function Li(){return Wi.join(qk(),"plan-outbox")}function gT(){return Wi.join(qk(),"plan-outbox-archive")}function Jk(){let e=Li(),r=gT();return Yk(e,{recursive:!0}),Yk(r,{recursive:!0}),{outboxDir:e,archiveDir:r}}var rz=600*1e3,Do={storeFailures:0,corruptItemsSeen:0,corruptItemsQuarantined:0,duplicateDrainsObserved:0,halfArchivesCompleted:0};function zk(){return{"planOutbox.storeFailures":Do.storeFailures,"planOutbox.corruptItemsSeen":Do.corruptItemsSeen,"planOutbox.corruptItemsQuarantined":Do.corruptItemsQuarantined,"planOutbox.duplicateDrainsObserved":Do.duplicateDrainsObserved,"planOutbox.halfArchivesCompleted":Do.halfArchivesCompleted}}import{existsSync as yT,readFileSync as RT,renameSync as sz,readdirSync as iz,rmSync as az,writeFileSync as lz,unlinkSync as cz}from"node:fs";import Xk from"node:path";function Qk(e){if(!yT(e))return null;try{return JSON.parse(RT(e,"utf8"))}catch{return null}}function Bi(e){let{outboxDir:r}=Jk();return{jsonPath:Xk.join(r,`${e.id}.json`),bodyPath:Xk.join(r,e.bodyPath)}}import _T from"node:path";function Bc(e){let r=_T.join(Li(),`${e}.json`);return Qk(r)}function Uc(e){let r=Bi(e);return["## Plan persistence risk","",`AgentOS plan write is **not** confirmed (${e.userStatus}).`,`- outboxId: \`${e.id}\``,e.planId?`- planId: \`${e.planId}\``:"- planId: (pending \u2014 create not yet applied)",`- outbox: \`${r.jsonPath}\``,`- body: \`${r.bodyPath}\``,"","Drain when approval/connectivity returns: `kynver plan outbox drain`"].join(`
171
+ `)}function Fc(e){let r=e.metadata&&typeof e.metadata=="object"?e.metadata:null,t=typeof e.planPersistenceOutboxId=="string"&&e.planPersistenceOutboxId||(r&&typeof r.planPersistenceOutboxId=="string"?r.planPersistenceOutboxId:void 0);return t?{outboxId:t,jsonPath:typeof e.planPersistenceOutboxPath=="string"?e.planPersistenceOutboxPath:r&&typeof r.planPersistenceOutboxPath=="string"?r.planPersistenceOutboxPath:void 0,bodyPath:typeof e.planPersistenceBodyPath=="string"?e.planPersistenceBodyPath:r&&typeof r.planPersistenceBodyPath=="string"?r.planPersistenceBodyPath:void 0}:null}B();function Kc(e){return e?.trim()?e.trim():null}function Zk(e,r){let t=Kc(e.boxKind),n=Kc(e.runnerId),o=Kc(e.harnessRoot);return t&&t!==r.boxKind?{ok:!1,reason:`run ${e.id} belongs to box "${t}" but this host is "${r.boxKind}" \u2014 use a run under ${r.harnessRoot}`}:n&&n!==r.runnerId?{ok:!1,reason:`run ${e.id} is bound to runner "${n}" but this host is "${r.runnerId}"`}:o&&o!==r.harnessRoot?{ok:!1,reason:`run ${e.id} harness root "${o}" does not match this host "${r.harnessRoot}"`}:!t||!n||!o?(e.boxKind=r.boxKind,e.runnerId=r.runnerId,e.harnessRoot=r.harnessRoot,Ie(e),{ok:!0,stamped:!0}):{ok:!0}}H();zn();function ey(e=process.env){return qt(U(),e,{requireExplicitBoxKind:!0})}function ry(e){return[...e.errors,...e.warnings].join("; ")}async function Mo(e){let r=`${e.baseUrl}/api/agent-os/by-id/${encodeURIComponent(e.agentOsId)}/tasks/${encodeURIComponent(e.taskId)}/release`,t;try{t=await X(r,e.secret,{agentOsId:e.agentOsId,leaseOwner:e.leaseOwner,...e.leaseToken?.trim()?{leaseToken:e.leaseToken.trim()}:{},...e.failureDetail?{failureDetail:e.failureDetail}:{}},{agentOsId:e.agentOsId,baseUrl:e.baseUrl})}catch(s){return{released:!1,httpOk:!1,transportError:!0,releaseResponse:{ok:!1,error:s.message}}}let n=t.response;return{released:t.ok===!0||n?.ok===!0,httpOk:t.ok===!0,transportError:!1,releaseResponse:t.response??t}}function hn(e){if(!e||typeof e!="object")return!1;let r=e;return[r.agentOsId,r.subjectTaskId,r.reviewTaskId,r.signature].every(t=>typeof t=="string"&&!!t)&&/^https:\/\/github\.com\/[^/]+\/[^/]+\/pull\/[1-9]\d*$/.test(r.prUrl)&&/^[a-f0-9]{40}$/.test(r.headSha)&&/^[a-f0-9]{64}$/.test(r.reviewGenerationSha256)&&Number.isSafeInteger(r.reviewAttempt)&&r.reviewAttempt>0&&typeof r.acceptedAt=="string"&&Number.isFinite(Date.parse(r.acceptedAt))}function ty(e,r){return e.signature===r.signature&&e.agentOsId===r.agentOsId&&e.subjectTaskId===r.subjectTaskId&&e.prUrl===r.prUrl&&e.reviewTaskId===r.reviewTaskId&&e.reviewAttempt===r.reviewAttempt&&e.reviewGenerationSha256===r.reviewGenerationSha256&&e.headSha===r.headSha&&e.acceptedAt===r.acceptedAt}import{spawnSync as hy}from"node:child_process";var ny=new Set(["SUCCESS","SKIPPED","NEUTRAL"]);function ot(e){return typeof e.name=="string"&&e.name||typeof e.context=="string"&&e.context||typeof e.workflowName=="string"&&e.workflowName||"unknown check"}function oy(e){let r=typeof e.completedAt=="string"&&e.completedAt||typeof e.startedAt=="string"&&e.startedAt;if(!r)return 0;let t=Date.parse(r);return Number.isFinite(t)?t:0}function sy(e){let r=Array.isArray(e)?e:[],t=new Map;for(let n of r){let o=n&&typeof n=="object"?n:{},s=ot(o),i=t.get(s);(!i||oy(o)>=oy(i))&&t.set(s,o)}return[...t.values()]}function ET(e){let r=typeof e.detailsUrl=="string"&&e.detailsUrl||typeof e.details_url=="string"&&e.details_url||typeof e.html_url=="string"&&e.html_url||"",t=typeof e.workflowName=="string"?e.workflowName.trim():"",n=e.app&&typeof e.app=="object"?e.app:null,o=typeof n?.slug=="string"?n.slug:"";return t.length>0||o==="github-actions"||/^https:\/\/github\.com\/[^/]+\/[^/]+\/actions\//i.test(r)}function iy(e){let r=sy(e),t=[],n=[],o=[];for(let s of r){if(ET(s)){o.push(ot(s));continue}let i=typeof s.conclusion=="string"?s.conclusion.toUpperCase():"",a=typeof s.status=="string"?s.status.toUpperCase():"",l=typeof s.state=="string"?s.state.toUpperCase():"";if(!(i&&ny.has(i))){if(i){n.push(`${ot(s)}=${i}`);continue}if(!(l&&ny.has(l))){if(l&&l!=="PENDING"&&l!=="EXPECTED"){n.push(`${ot(s)}=${l}`);continue}if(l==="PENDING"||l==="EXPECTED"){t.push(`${ot(s)}=${l}`);continue}if(a&&a!=="COMPLETED"){t.push(`${ot(s)}=${a}`);continue}t.push(`${ot(s)}=PENDING`)}}}return{pending:t,failed:n,ignoredActions:o}}function ay(e){return sy(e).some(t=>{let n=ot(t),o=typeof t.conclusion=="string"?t.conclusion.toUpperCase():"",s=typeof t.state=="string"?t.state.toUpperCase():"";return/^vercel/i.test(n)&&(o==="SUCCESS"||s==="SUCCESS")})}var CT=new Set(["CLEAN","HAS_HOOKS"]);function ly(e,r){let t=e==="UNSTABLE"&&r.ignoredActions.length>0;return!CT.has(e)&&!t?`mergeStateStatus is ${e}`:null}import{spawnSync as PT}from"node:child_process";function cy(){if(process.env.GITHUB_TOKEN?.trim()||process.env.GH_TOKEN?.trim())return{source:"env",configured:!0,reason:"GitHub token already configured in environment"};let e=PT("gh",["auth","token"],{windowsHide:!0,encoding:"utf8",stdio:["ignore","pipe","pipe"]});if(e.status!==0)return{source:"missing",configured:!1,reason:typeof e.stderr=="string"&&e.stderr.trim()?e.stderr.trim():"gh auth token failed; run `gh auth login` on this machine"};let r=typeof e.stdout=="string"?e.stdout.trim():"";return r?(process.env.GH_TOKEN=r,{source:"gh-cli",configured:!0,reason:"Using local GitHub CLI auth for daemon land_pr merge"}):{source:"missing",configured:!1,reason:"gh auth token returned an empty token; run `gh auth login` on this machine"}}import{createHash as AT,randomUUID as IT}from"node:crypto";import{closeSync as uy,fsyncSync as dy,mkdirSync as OT,openSync as py,realpathSync as TT,writeFileSync as NT}from"node:fs";import Hc from"node:path";function fy(e){return!!e&&[e.agentOsId,e.taskId,e.runId,e.workerName,e.leaseOwner,e.leaseToken,e.receiptDir].every(r=>typeof r=="string"&&!!r.trim())}function my(e,r,t,n){OT(e,{recursive:!0,mode:448});let o=TT(e),s=py(Hc.join(o,`${r}.${t}.json`),"wx",384);try{NT(s,JSON.stringify({...n,phase:t},null,2)+`
172
+ `),dy(s)}finally{uy(s)}for(let i=o;;i=Hc.dirname(i)){let a=py(i,"r");try{dy(a)}catch(l){if(!DT(l))throw l}finally{uy(a)}if(i===Hc.dirname(i))break}}function DT(e,r=process.platform){return r==="win32"&&e?.code==="EPERM"}function gy(e,r,t,n){let o={acceptedReview:n,agentOsId:e.agentOsId,taskId:e.taskId,runId:e.runId,workerName:e.workerName,leaseOwner:e.leaseOwner,leaseTokenSha256:AT("sha256").update(e.leaseToken).digest("hex")},s={...o,prUrl:r,invocationId:IT(),startedAt:new Date().toISOString(),finishedAt:null,headSha:t,mergedAt:null,mergeCommit:null,source:"daemon_land_pr",mergeInvoked:!1};return my(e.receiptDir,s.invocationId,"pending",s),{finish(i){let a={...o,...i,invocationId:s.invocationId,startedAt:s.startedAt,finishedAt:new Date().toISOString()};return my(e.receiptDir,s.invocationId,"finished",{...s,...a}),a}}}function jc(e){return e?.trim()?["--repo",e.trim()]:[]}function ky(e){let r=/github\.com\/([^/]+)\/([^/]+)\/pull\/\d+/i.exec(e.trim());return r?`${r[1]}/${r[2]}`:null}function yy(e,r,t){let n=e.gh(r,t);if(n.status!==0)throw new Error(n.stderr||n.stdout||`gh ${t.join(" ")} failed`);return JSON.parse(n.stdout||"{}")}var MT=/^##\s*(test\s*plan|verification|test\s*evidence|verify)\b/im,WT=/typecheck|npm run (test|build|typecheck)|vitest|tsc\b|verify-pr-local|local verify|local-verify|tests? (pass|green)|build green|node --test/i,LT=/^docs[(:]/i,BT=/docs[- ]only|documentation only|no[- ]code change|no code changes|low[- ]risk|plan tracker only|markdown only/i;function UT(e){let r=typeof e.title=="string"?e.title.trim():"",t=typeof e.body=="string"?e.body.trim():"",n=LT.test(r)||BT.test(t),o=MT.test(t),s=WT.test(t);return n||o||s||e.vercelCheckSuccess===!0}function FT(e){if(!UT({title:e.title,body:e.body,vercelCheckSuccess:ay(e.statusCheckRollup)}))throw new Error(`PR #${e.number} lacks landing verification evidence \u2014 add ## Test plan / ## Verification with local commands, Vercel preview, or docs/no-code rationale`)}function KT(e){if(e.state!=="OPEN")throw new Error(`PR #${e.number} is ${e.state}, not OPEN`);if(e.isDraft)throw new Error(`PR #${e.number} is still a draft`);let r=iy(e.statusCheckRollup);if(r.failed.length>0)throw new Error(`PR #${e.number} has failing checks: ${r.failed.join(", ")}`);if(r.pending.length>0)throw new Error(`PR #${e.number} has pending checks: ${r.pending.join(", ")}`);let t=ly(e.mergeStateStatus,r);if(t)throw new Error(`PR #${e.number} ${t}`)}function HT(e){KT(e),FT(e)}function $T(e){try{return HT(e),null}catch(r){return r instanceof Error?r.message:String(r)}}function jT(e,r,t,n){if(!n?.trim())return;let o=encodeURI(`heads/${n}`);e.gh(r,["api","-X","DELETE",`repos/${t}/git/refs/${o}`])}function VT(e,r,t){if(t?.trim())return t.trim();let n=e.gh(r,["repo","view","--json","nameWithOwner"]);if(n.status!==0)throw new Error(n.stderr||"Could not resolve GitHub repo");let o=JSON.parse(n.stdout||"{}");if(!o.nameWithOwner)throw new Error("Could not resolve GitHub repo");return o.nameWithOwner}function GT(e,r){if(!r?.trim())return;let t=hy("git",["worktree","list","--porcelain"],{windowsHide:!0,cwd:e,encoding:"utf8"});if(t.status!==0)return;let n=String(t.stdout||"").split(/\r?\n/),o=null,s=null;for(let i of n){if(i.startsWith("worktree ")){o=i.slice(9).trim(),s=null;continue}i.startsWith("branch ")&&o&&(s=i.slice(7).trim(),s.endsWith(`/${r}`)&&hy("git",["worktree","remove","--force",o],{windowsHide:!0,cwd:e,encoding:"utf8"}))}}async function Ry(e){let r=e.cwd??process.cwd(),t=e.exec??fi,n=e.prUrl.trim();if(!n)throw new Error("prUrl is required");let o=e.acceptedReview,s=()=>({prUrl:n,outcome:"blocked",reason:"accepted_review_required: missing, stale or changed head; fresh independent review required"});if(!hn(o)||o.prUrl!==n||o.agentOsId!==e.operation?.agentOsId||!e.revalidateAcceptedReview)return s();let i=cy();if(!i.configured)return{prUrl:n,outcome:"blocked",reason:i.reason};let a=yy(t,r,["pr","view",n,...jc(e.repo),"--json",["number","url","title","body","state","isDraft","mergeStateStatus","statusCheckRollup","headRefName","headRefOid","mergedAt","mergeCommit"].join(",")]);if(a.state==="MERGED")return{prUrl:a.url||n,outcome:"skipped",mergeCommit:a.mergeCommit?.oid??null,provenance:{attribution:"preexisting_merge",mergeInvoked:!1,headSha:a.headRefOid??null,mergedAt:a.mergedAt??null,mergeCommit:a.mergeCommit?.oid??null},reason:`PR #${a.number} is already merged \u2014 land_pr no-op (redelivery)`};if(a.headRefOid?.toLowerCase()!==o.headSha)return s();let l=$T(a);if(l)return e.skipNotReady?{prUrl:a.url||n,outcome:"skipped",reason:l}:{prUrl:a.url||n,outcome:"blocked",reason:l};if(e.dryRun)return{prUrl:a.url||n,outcome:"skipped",reason:"dry-run: PR is ready to merge"};if(!a.headRefOid||!/^[a-f0-9]{40}$/i.test(a.headRefOid)||!fy(e.operation))return{prUrl:n,outcome:"blocked",reason:"land_pr requires observed headRefOid and claimed dispatch operation identity"};let c=String(a.number),u=await e.revalidateAcceptedReview().catch(()=>null);if(!hn(u)||!ty(o,u))return s();let d=gy(e.operation,n,o.headSha,o),p;try{p=t.gh(r,["pr","merge",c,...jc(e.repo),"--squash","--match-head-commit",o.headSha])}catch{let k=d.finish({attribution:"unconfirmed",mergeInvoked:!0,headSha:a.headRefOid,mergedAt:null,mergeCommit:null,mergeExitCode:null});return{prUrl:n,outcome:"blocked",reason:"merge invocation threw; outcome unconfirmed",provenance:k}}let m=(k,b)=>d.finish({attribution:b,mergeInvoked:!0,headSha:a.headRefOid,mergedAt:k?.mergedAt??null,mergeCommit:k?.mergeCommit?.oid??null,mergeExitCode:p.status});if(p.status!==0){let k=$c(t,r,c,e.repo);return k?{prUrl:k.url||a.url||n,outcome:"skipped",mergeCommit:k.mergeCommit?.oid??null,provenance:m(k,"external_merge_observed"),reason:`PR #${a.number} is already merged \u2014 merged by another lane during land_pr (race)`}:{prUrl:a.url||n,outcome:"blocked",reason:p.stderr||p.stdout||"gh pr merge failed",provenance:m(null,"unconfirmed")}}let f=$c(t,r,c,e.repo);if(f||(f=$c(t,r,c,e.repo)),!f)return{prUrl:n,outcome:"blocked",reason:"merge command completed but merged state is unconfirmed",provenance:m(null,"unconfirmed")};let y=m(f,"invoked_merge_observed");try{let k=VT(t,r,e.repo);jT(t,r,k,a.headRefName),GT(r,a.headRefName)}catch{}return{prUrl:f?.url||a.url||n,outcome:"merged",provenance:y,mergeCommit:f?.mergeCommit?.oid??null,reason:`Daemon land_pr invoked merge; PR #${a.number} read back merged`}}function $c(e,r,t,n){try{let o=yy(e,r,["pr","view",t,...jc(n),"--json","number,url,mergedAt,mergeCommit,state"]);return o.state==="MERGED"?o:null}catch{return null}}async function vy(e){let r=e.decision.task,t=e.decision.acceptedReview,n=String(r.prUrl??"");return Ry({prUrl:n,cwd:e.cwd,repo:ky(n),exec:e.exec,operation:e.operation,acceptedReview:hn(t)?t:void 0,revalidateAcceptedReview:async()=>{let o=await X(`${e.baseUrl}/api/agent-os/by-id/${encodeURIComponent(e.agentOsId)}/tasks/${encodeURIComponent(String(r.id))}/landing-review`,e.secret,{leaseToken:r.leaseToken,leaseOwner:r.leaseOwner,attempt:r.attempt},{agentOsId:e.agentOsId,baseUrl:e.baseUrl}),s=o.response;return o.ok&&s?.ok===!0&&hn(s.acceptedReview)?s.acceptedReview:null}})}H();async function by(e){let r=await ee(e.secret,e.agentOsId,{baseUrl:e.baseUrl}),t=String(e.task.id),n=`${e.baseUrl}/api/agent-os/by-id/${encodeURIComponent(e.agentOsId)}/harness/completion`,o=e.report.provenance?.finishedAt??new Date().toISOString(),s={source:"kynver-harness",agentOsId:e.agentOsId,runId:e.runId,workerName:`land-pr-${t}`,taskId:t,leaseToken:e.task.leaseToken??null,startedAt:e.report.provenance?.startedAt??o,finishedAt:o,status:{finalResult:e.report,prUrl:e.report.prUrl,summary:e.report.reason,leaseToken:e.task.leaseToken??null},workerInjection:null},i=await X(n,r,s,{agentOsId:e.agentOsId,baseUrl:e.baseUrl});return{ok:i.ok,status:i.status}}function Sy(){return["## verify_live completion contract","Finish with a JSON finalResult object:","{",' "prUrl": "<landed pr>",',' "outcome": "passed" | "failed" | "skipped" | "no_mcp_surface",',' "reason": "<human summary>",',' "mergeCommit": "<sha optional>",',' "liveReadback": "<prod readback string from acceptance.liveReadbackQuery>",',' "mcpCalls": [{ "tool": "<name>", "ok": true, "summary": "..." }]',"}","","Drive the feature MCP tools against live production. Do not mark passed without exercising the MCP surface.","When the subject carries an acceptance snapshot, include liveReadback \u2014 the server oracle rejects passed if the original symptom still appears."].join(`
173
+ `)}var YT="dispatch_start_readback_failed:";function wt(e){return`${YT} ${e.trim()}`}function qT(e){return e.branch?.trim()?e.worktreePath?.trim()?e.heartbeatPath?.trim()?e.startedAt?.trim()?null:"missing local worker startedAt":"missing local worker heartbeatPath":"missing local worker worktreePath":"missing local worker branch"}function JT(e){let{snapshot:r,leaseOwner:t,expectedLeaseToken:n,worker:o}=e;if(!r)return{ok:!1,error:wt("task lease snapshot missing after spawn"),detail:{taskId:o.taskId,leaseOwner:t,expectedLeaseToken:n}};if(r.status!=="running")return{ok:!1,error:wt(`AgentOS task status=${r.status} (expected running)`),detail:{taskId:r.taskId,status:r.status,leaseOwner:r.leaseOwner,blocker:r.blocker},snapshot:r};let s=r.leaseOwner?.trim()??"";if(!s||s!==t.trim())return{ok:!1,error:wt(`leaseOwner mismatch (board=${s||"null"}, expected=${t})`),detail:{taskId:r.taskId,boardLeaseOwner:s||null,expectedLeaseOwner:t},snapshot:r};let i=r.leaseToken?.trim()??"";if(!i||i!==n.trim())return{ok:!1,error:wt(`leaseToken mismatch (board=${i||"null"}, expected=${n})`),detail:{taskId:r.taskId,boardLeaseToken:i||null,expectedLeaseToken:n},snapshot:r};let a=qT(o);return a?{ok:!1,error:wt(a),detail:{taskId:o.taskId,worker:o.name},snapshot:r}:r.heartbeatAt?.trim()?o.executorRef?.trim()&&r.executorRef?.trim()&&o.executorRef.trim()!==r.executorRef.trim()?{ok:!1,error:wt(`executorRef mismatch (board=${r.executorRef}, worker=${o.executorRef})`),detail:{taskId:r.taskId,boardExecutorRef:r.executorRef,workerExecutorRef:o.executorRef},snapshot:r}:{ok:!0,snapshot:r}:{ok:!1,error:wt("AgentOS heartbeatAt missing after claim"),detail:{taskId:r.taskId},snapshot:r}}async function wy(e){let r=await si({agentOsId:e.agentOsId,taskIds:[e.taskId],baseUrl:e.baseUrl,secret:e.secret});return JT({snapshot:r.get(e.taskId)??null,leaseOwner:e.leaseOwner,expectedLeaseToken:e.expectedLeaseToken,worker:e.worker})}O();B();function xy(e,r,t){r.pid&&Y(r.pid)&&(Me(r.pid,"SIGTERM"),Y(r.pid)&&Me(r.pid,"SIGKILL"));let n={...r,status:"failed",pid:void 0,completionBlocker:t,dispatchStartReadbackFailed:!0};return L(e,n),n}B();function _y(e){let r=typeof e.personaSlug=="string"?e.personaSlug.trim().toLowerCase():"";if(r==="dalton"||r==="lorentz")return!0;let t=typeof e.executorRef=="string"?e.executorRef.trim().toLowerCase():"";if(t.startsWith("expert-lane-pr-review:")||t.startsWith("scheduledjob:")&&e.parentTaskId)return!0;let n=typeof e.title=="string"?e.title.toLowerCase():"";return n.includes("expert pr review")||n.startsWith("[dalton] review")||n.startsWith("[lorentz] review")}async function Ey(e){let r=`${e.baseUrl}/api/agent-os/by-id/${encodeURIComponent(e.agentOsId)}/tasks/${encodeURIComponent(e.taskId)}/review-head-reconcile`,t=await X(r,e.secret,{phase:"worker_start"},{agentOsId:e.agentOsId,baseUrl:e.baseUrl});if(!t.ok)return null;let n=t.response;return n&&typeof n=="object"?n:null}var Vl=3600*1e3;function Cy(e){let r=e.admissionExhaustion;return!r||typeof r!="object"?null:r}function Py(e){let r=e.dispatchSkipDrain;return!r||typeof r!="object"?null:r}function zT(e){let r=e.harnessWorkerContext;if(!r||typeof r!="object")return null;let t=r,n=typeof t.instructionPolicyMarkdown=="string"?t.instructionPolicyMarkdown:null,o=typeof t.instructionPolicyFingerprint=="string"?t.instructionPolicyFingerprint:null,s=t.instructionPolicyEvidence&&typeof t.instructionPolicyEvidence=="object"?t.instructionPolicyEvidence:null,i=typeof t.personaMarkdown=="string"?t.personaMarkdown:null,a=typeof t.personaEvidence=="object"&&t.personaEvidence&&typeof t.personaEvidence.injectedPersonaSlug=="string"?t.personaEvidence.injectedPersonaSlug:null,l=t.personaEvidence&&typeof t.personaEvidence=="object"?t.personaEvidence:null,c=t.personaInjectionReady===!0,u=typeof t.contextEnvelopeMarkdown=="string"?t.contextEnvelopeMarkdown:null,d=t.contextEnvelopeEvidence&&typeof t.contextEnvelopeEvidence=="object"?t.contextEnvelopeEvidence:null,p=t.contextEnvelopeReady===!0,m=typeof t.runtimeEnvelopeMarkdown=="string"?t.runtimeEnvelopeMarkdown:null,f=QT(t.runtimeEnvelopeReceipt),y=t.runtimeEnvelopeReady===!0,k=t.memoryQualityCapture&&typeof t.memoryQualityCapture=="object"?t.memoryQualityCapture:null,b=typeof t.memoryQualityPromptMarkdown=="string"?t.memoryQualityPromptMarkdown:typeof k?.promptMarkdown=="string"?k.promptMarkdown:null,g=t.workerMcpToolGrant&&typeof t.workerMcpToolGrant=="object"?t.workerMcpToolGrant:null,h=g&&typeof g.token=="string"&&g.token.trim()?g.token.trim():null,w=h&&Array.isArray(g?.capabilities)?g.capabilities.filter(S=>typeof S=="string"&&S.trim().length>0):null,E=h&&typeof g?.exp=="number"&&Number.isFinite(g.exp)?g.exp*1e3:null;return{instructionPolicyMarkdown:n,instructionPolicyFingerprint:o,instructionPolicyEvidence:s,memoryQualityCapture:k,memoryQualityPromptMarkdown:b,personaMarkdown:i,personaSlug:a,personaEvidence:l,personaInjectionReady:c,contextEnvelopeMarkdown:u,contextEnvelopeEvidence:d,contextEnvelopeReady:p,runtimeEnvelopeMarkdown:m,runtimeEnvelopeEvidence:f,runtimeEnvelopeReady:y,workerMcpToken:h,workerMcpCapabilities:w,workerMcpExpiresAt:E}}function XT(e){if(typeof e!="string")return null;let r=e.trim().toLowerCase();return r.length?r:null}function QT(e){if(!e||typeof e!="object")return null;let r=e;return typeof r.envelopeId!="string"||!r.envelopeId.trim()?null:{envelopeId:r.envelopeId,envelopeSchemaVersion:typeof r.envelopeSchemaVersion=="string"?r.envelopeSchemaVersion:void 0,generatedAt:typeof r.generatedAt=="string"?r.generatedAt:void 0,injectedAt:typeof r.injectedAt=="string"?r.injectedAt:void 0,mode:typeof r.mode=="string"?r.mode:void 0,memoryIncludedCount:typeof r.memoryIncludedCount=="number"?r.memoryIncludedCount:void 0,memoryOmittedCount:typeof r.memoryOmittedCount=="number"?r.memoryOmittedCount:void 0,degraded:typeof r.degraded=="boolean"?r.degraded:void 0,degradedReason:typeof r.degradedReason=="string"?r.degradedReason:r.degradedReason===null?null:void 0,auditFingerprint:typeof r.auditFingerprint=="string"?r.auditFingerprint:void 0,promptMarkdownChars:typeof r.promptMarkdownChars=="number"?r.promptMarkdownChars:void 0}}function ZT(e,r){let t=[`[AgentOS task ${e.id}] ${e.title}`,"",e.description?String(e.description):"(no description on the board task)","",`Board linkage: agentOsId=${r}, taskId=${e.id}, attempt=${e.attempt}, executor=${e.executor}${e.executorRef?`, executorRef=${e.executorRef}`:""}.`,"This worker was dispatched from the AgentOS board. The harness reports your completion back to the board when you finish."];e.executor==="verify_live"&&t.push("",Sy());let n=Fc(e);if(n?.outboxId){let o=Bc(n.outboxId);o?t.push("",Uc(o)):t.push("","## Plan persistence risk","",`Unconfirmed AgentOS plan write (outboxId=${n.outboxId}).`)}return t.join(`
174
+ `)}function eN(e){let r=new Set;if(e.targetTaskId)return r.add(String(e.targetTaskId)),r;if(e.targetTaskIds)for(let t of String(e.targetTaskIds).split(",")){let n=t.trim();n&&r.add(n)}return r}async function Ui(e){let r=e.pipeline===!0||e.pipeline==="true";try{let ye=function(){return F.filter(v=>v.started).length},Re=function(v,R){ro({runId:l.id,agentOsId:u,phase:v,startedCount:ye(),outcomeCount:F.length,cappedStarts:C,...R})},yr=function(){return F.some(v=>(typeof v.error=="string"?v.error:"").startsWith("dispatch_start_readback_failed:"))},Ku=function(v){return v.landPrDispatch===!0?!0:v.task?.executor==="land_pr"};var t=ye,n=Re,o=yr,s=Ku;let i=ey();if(!i.ok||!i.identity){let v=ry(i);if(r)return{ok:!1,error:v,boundary:i};console.error(`run dispatch failed: ${v}`),process.exit(1)}let a=i.identity;for(let v of i.warnings)console.error(`[dispatch] runner-boundary warning: ${v}`);let l=q(String(vr(String(e.run||""),"--run"))),c=Zk(l,a);if(!c.ok){let v=c.reason??"run does not belong to this runner boundary";if(r)return{ok:!1,error:v,runId:l.id,runnerBoundary:a};console.error(`run dispatch failed: ${v}`),process.exit(1)}c.stamped&&console.error(`[dispatch] stamped run ${l.id} with boxKind=${a.boxKind} runnerId=${a.runnerId}`);let u=String(vr(String(e.agentOsId||""),"--agent-os-id")),d=Q(e.baseUrl?String(e.baseUrl):void 0),p=await ee(e.secret?String(e.secret):void 0,u,{baseUrl:d}),m=e.execute===!0||e.execute==="true",f=!m,y=He({runId:l.id}),k=ho(l.id,y.runnerId),b=Fm(),g=b?Hm(l.repo):null,h=new WeakMap;if(b&&m&&!g){let v="desktop_execution_policy_denied:repo_identity_unavailable: the repository has no origin remote";if(r)return{ok:!1,error:v,runId:l.id};console.error(`run dispatch failed: ${v}`),process.exit(1)}let w=e.diskPath?Yr({diskPath:String(e.diskPath)}):Yr({diskPath:l.repo}),E=await Xm({runId:l.id,agentOsId:u,args:e}),S=eN(e),_=S.size>0,K=Number(e.maxStarts)>0?Math.floor(Number(e.maxStarts)):1,$=_?Math.min(K,S.size):K;if(e.reconcileStaleBlockers===!0||e.reconcileStaleBlockers==="true"){let v=`${d}/api/agent-os/by-id/${encodeURIComponent(u)}/lane-hygiene`;try{await X(v,p,{agentOsId:u,dryRun:!1,includeBoardReconcile:!0},{agentOsId:u,baseUrl:d})}catch(R){console.error(`[dispatch] reconcile-stale-blockers lane-hygiene call failed: ${R.message}`)}}let C=f?$:Math.min($,E.slotsAvailable);if(!f&&C<=0){let v={runId:l.id,agentOsId:u,dryRun:!1,skipped:!0,reason:E.reason??"no resource slots",resourceGate:E};if(r)return{ok:!0,...v};console.log(JSON.stringify(v,null,2));return}let re=Bs(l.id),ke=`${d}/api/agent-os/by-id/${encodeURIComponent(u)}/tasks/dispatch-next`,Ye=(v,R)=>({agentOsId:u,...R?{claimAuthorization:R}:{},dryRun:f,maxStarts:v,leaseOwner:k,leaseDurationMs:Number(e.leaseMs)>0?Math.floor(Number(e.leaseMs)):Vl,runnerDiskGate:w,runnerResourceGate:E,activeHarnessWorkers:re,runnerPresence:y,harnessBoardSnapshot:Oc(l.id),...e.lane?{lane:zm(String(e.lane))}:{},...e.executor?{executor:String(e.executor)}:{},...e.diskPath?{diskPath:String(e.diskPath)}:{},...e.targetTaskId?{targetTaskId:String(e.targetTaskId)}:{},...!e.targetTaskId&&e.targetTaskIds?{targetTaskIds:String(e.targetTaskIds).split(",").map(A=>A.trim()).filter(Boolean)}:{}}),kr=jm(),jr=async v=>{let R=b&&g?Km(g):void 0,A=await X(ke,p,Ye(v,R),{agentOsId:u,baseUrl:d,timeoutMs:kr})??{ok:!1,status:0,response:null},W=A.response;if(R&&Array.isArray(W?.result?.started))for(let G of W.result.started)G&&typeof G=="object"&&h.set(G,R.requestNonce);return{dispatch:A,result:W?.result}};f||ro({runId:l.id,agentOsId:u,phase:"awaiting_dispatch_next",timeoutMs:kr});let j=await jr(_||f?C:1);if(!j.dispatch.ok||!j.result){let v=fl(j.dispatch.response),R={runId:l.id,agentOsId:u,action:"dispatch",httpStatus:j.dispatch.status,response:j.dispatch.response,authRefreshed:j.dispatch.refreshedAuth===!0,authRefreshFailure:j.dispatch.authRefreshFailure,...v?{timeout:!0}:{}};if(v&&ro({runId:l.id,agentOsId:u,phase:"timeout",timeout:!0,httpStatus:j.dispatch.status}),r)return{ok:!1,...R};console.log(JSON.stringify(R,null,2)),process.exit(1)}let T=j.result;if(f){let v=Cy(T),R=Py(T),A={runId:l.id,agentOsId:u,dryRun:!0,wouldStart:T.started.map(W=>({taskId:W.task.id,title:W.task.title,reason:W.reason})),skipped:T.skipped.map(W=>({taskId:W.task.id,skipReason:W.skipReason,reason:W.reason})),diskGate:T.diskGate,resourceGate:T.resourceGate,inspected:T.inspected,pagesScanned:T.pagesScanned??null,candidatesExhausted:T.candidatesExhausted??null,capacityIdle:v?.capacityIdle===!0,admissionExhaustion:v,dispatchSkipDrain:R};if(r)return{ok:!0,...A};console.log(JSON.stringify(A,null,2));return}let te=mg(),F=[],D=[],M=Number(T.inspected)||0,ie=!1;async function V(v,R,A){let W=await Mo({baseUrl:d,secret:p,agentOsId:u,taskId:String(v.id),leaseOwner:k,leaseToken:v.leaseToken?String(v.leaseToken):null,failureDetail:R});v.leaseToken&&cn({taskId:String(v.id),leaseToken:String(v.leaseToken).trim()},dc(R));let G={taskId:v.id,started:!1,error:R,released:W.released,releaseResponse:W.releaseResponse,...A};return F.push(G),Re("outcome",{lastOutcome:G}),!1}async function Tb(v){let R=v.task,A=String(R.id);if(_&&!S.has(A))return V(R,"exact_target_mismatch: dispatch-next returned a different task than requested",{requestedTargetTaskIds:[...S]});if(!(R.prUrl?String(R.prUrl):""))return V(R,"land_pr task missing prUrl");try{let G=await vy({decision:v,baseUrl:d,secret:p,agentOsId:u,cwd:l.repo,operation:{agentOsId:u,taskId:A,runId:l.id,workerName:`land-pr-${A}`,leaseOwner:k,leaseToken:typeof R.leaseToken=="string"?R.leaseToken:"",receiptDir:`${N(l.id)}/land-pr-operations`}}),qe=await by({baseUrl:d,secret:p,agentOsId:u,runId:l.id,task:R,report:G});return qe.ok?(F.push({taskId:A,started:!0,landPr:!0,outcome:G.outcome,completionStatus:qe.status}),!0):V(R,`land_pr completion POST failed (HTTP ${qe.status})`,{landPr:!0,outcome:G.outcome})}catch(G){return V(R,G.message)}}async function Nb(v){let R="duplicate_dispatch_prevented: live local worker already owns this task",A=await Mo({baseUrl:d,secret:p,agentOsId:u,taskId:String(v.id),leaseOwner:k,leaseToken:v.leaseToken?String(v.leaseToken):null,failureDetail:R});v.leaseToken&&cn({taskId:String(v.id),leaseToken:String(v.leaseToken).trim()},dc(R));let W={taskId:v.id,started:!1,error:R,alreadyRunning:!0,nonFatal:!0,released:A.released,releaseResponse:A.releaseResponse};return F.push(W),Re("outcome",{lastOutcome:W}),!1}async function Db(v){let R=v.task,A=zT(v),W=String(R.id);if(_&&!S.has(W))return V(R,"exact_target_mismatch: dispatch-next returned a different task than requested",{requestedTargetTaskIds:[...S]});let G=XT(R.personaSlug);if(G&&(!A?.personaInjectionReady||!A.personaMarkdown))return V(R,`persona_injection_required: missing anchored context-envelope persona block for "${G}"`);if(G&&!A?.runtimeEnvelopeReady)return V(R,`runtime_envelope_required: missing AgentRuntimeEnvelope launch receipt for persona "${G}"`);if(yg(l.id,W))return Nb(R);let qe=Number(R.attempt)||1;if(qe>te.maxTaskAttempts)return V(R,`task attempt ${qe} exceeds KYNVER_MAX_TASK_ATTEMPTS (${te.maxTaskAttempts})`);let lt=R.leaseToken?String(R.leaseToken).trim():"";if(!lt)return V(R,"dispatch_start_failed: claimed task missing leaseToken \u2014 refusing local spawn");let ct=x(`t-${R.id}-a${R.attempt}`),Rr=ni({explicitModel:e.model?String(e.model):void 0,explicitProvider:e.provider?String(e.provider):void 0,explicitProviderIsOperatorOverride:!!e.provider,configuredProvider:U().workerProvider,task:Qm(R)});Bh({taskId:W,leaseToken:lt,runId:l.id,workerName:ct,provider:Rr.provider??null});let oa=dg({task:R,routing:Rr,explicitProvider:e.provider?String(e.provider):void 0,explicitModel:e.model?String(e.model):void 0});if(!oa.ok)return V(R,oa.error??"model_routing_mismatch",{modelRoutingGuard:oa});if(_y(R)){let Ce=await Ey({agentOsId:u,taskId:W,baseUrl:d,secret:p});if(Ce&&Ce.dispatchable===!1)return V(R,`pr_review_head_reconcile_blocked: ${Ce.reason??Ce.outcome??"stale PR head"}`,{headReconcile:Ce});if(Ce?.activeReviewTaskId&&Ce.activeReviewTaskId!==W)return V(R,`pr_review_head_reconcile_retargeted: active review is ${Ce.activeReviewTaskId}`,{headReconcile:Ce})}let jo=pk(Rr.provider);if(!jo.ok)return V(R,`provider_quota_exhausted: ${jo.reason}`,{nonFatal:!0,providerQuotaPreflight:{provider:jo.provider,retryAt:jo.retryAtIso}});try{let Ce=R.planId?String(R.planId):void 0,Vo=Eg({title:R.title?String(R.title):void 0,description:R.description?String(R.description):null,executorRef:R.executorRef?String(R.executorRef):null,prUrl:R.prUrl?String(R.prUrl):null,branch:R.branch?String(R.branch):null}),Yu=Xh({runId:l.id,workerName:ct,maxSlots:E.maxConcurrentWorkers,diskActiveWorkers:Ma()});if(!Yu.admitted)return V(R,`admission_refused: ${Yu.reason}`,{nonFatal:!0});let Go=A?.workerMcpToken??null;if(Go&&ao()){let Dt=Vk({jobId:`dispatch:${String(R.id)}`,agentOsId:u,taskId:String(R.id)},{config:{agentOsId:u,apiBaseUrl:d}});if(!Dt.ok)console.error(`[dispatch] worker tools skipped for task ${String(R.id)}: context hydration failed (${Dt.code}: ${Dt.detail}) \u2014 spawning without tools`),Go=null;else{let sa=await jk(Dt.context);sa.reachable||(console.error(`[dispatch] worker tools skipped for task ${String(R.id)}: tool endpoint probe failed (${sa.error??`HTTP ${sa.httpStatus}`}) \u2014 spawning without tools`),Go=null)}}bg(l.id,String(R.id),{except:ct});let ir=await $k(l,{name:ct,task:ZT(R,u),ownedPaths:e.owned?String(e.owned).split(",").map(Dt=>Dt.trim()).filter(Boolean):[],model:Rr.model,provider:Rr.provider,routingRule:Rr.rule,requestedModel:Rr.requestedModel,agentOsId:u,taskId:String(R.id),planId:Ce,branch:Vo?.targetPrBranch??void 0,executorRef:R.executorRef?String(R.executorRef):void 0,parentTaskId:R.parentTaskId?String(R.parentTaskId):void 0,taskTitle:R.title?String(R.title):void 0,taskPrUrl:Vo?.targetPrUrl??(R.prUrl?String(R.prUrl):void 0),repairTargetPrUrl:Vo?.targetPrUrl,repairTargetBranch:Vo?.targetPrBranch??void 0,instructionPolicyMarkdown:A?.instructionPolicyMarkdown??null,instructionPolicyFingerprint:A?.instructionPolicyFingerprint??null,instructionPolicyEvidence:A?.instructionPolicyEvidence??null,memoryQualityCapture:A?.memoryQualityCapture??null,memoryQualityPromptMarkdown:A?.memoryQualityPromptMarkdown??null,personaMarkdown:A?.personaMarkdown??null,personaSlug:A?.personaSlug??G,personaEvidence:A?.personaEvidence??null,contextEnvelopeMarkdown:A?.contextEnvelopeMarkdown??null,contextEnvelopeEvidence:A?.contextEnvelopeEvidence??null,runtimeEnvelopeMarkdown:A?.runtimeEnvelopeMarkdown??null,runtimeEnvelopeEvidence:A?.runtimeEnvelopeEvidence??null,workerMcpToken:Go,workerMcpCapabilities:A?.workerMcpCapabilities??null,workerMcpExpiresAt:A?.workerMcpExpiresAt??null,leaseOwner:k,leaseToken:lt,dispatched:!0,executionMode:Us(R)}),Yo=await wy({agentOsId:u,taskId:String(R.id),leaseOwner:k,expectedLeaseToken:lt,worker:ir,baseUrl:d,secret:p});if(!Yo.ok)return xy(l.id,ir,Yo.error??"dispatch_start_readback_failed"),nt(l.id,ct),V(R,Yo.error??"dispatch_start_readback_failed",{readback:Yo.detail??null});ir.leaseToken!==lt&&(ir.leaseToken=lt,ir.leaseOwner=k,L(l.id,ir)),Ci({taskId:W,leaseToken:lt}),Yh(l.id,ct);let qu={taskId:R.id,started:!0,worker:ir.name,pid:ir.pid,branch:ir.branch,model:ir.model,provider:Rr.provider,routingRule:Rr.rule,instructionPolicyFingerprint:A?.instructionPolicyFingerprint??null,instructionPolicyRuleCount:Array.isArray(A?.instructionPolicyEvidence?.ruleSlugs)?A.instructionPolicyEvidence.ruleSlugs.length:null,personaSlug:A?.personaSlug??G,personaOperatingRuleCount:A?.personaEvidence?.operatingRuleCount??null};return F.push(qu),Re("worker_started",{lastOutcome:qu}),A?.instructionPolicyFingerprint&&console.error(`[dispatch] task ${W}: instruction policy injected fingerprint=${A.instructionPolicyFingerprint}`),A?.personaSlug&&console.error(`[dispatch] task ${W}: persona context injected slug=${A.personaSlug}`),A?.contextEnvelopeReady&&console.error(`[dispatch] task ${W}: context envelope injected anchor=${A.contextEnvelopeEvidence?.anchorTaskId??W}`),A?.runtimeEnvelopeReady&&console.error(`[dispatch] task ${W}: runtime envelope injected id=${A.runtimeEnvelopeEvidence?.envelopeId??"unknown"}`),!0}catch(Ce){return nt(l.id,ct),V(R,Ce.message)}}let na=new Set;for(let v of $h(l.id))na.add(v);async function Hu(v){let R=v.task,A=String(R.id);if(na.has(A))return V(R,"dispatch_retry_loop_prevented: task already failed to start this tick");let W=b?$m({decision:v,leaseOwner:k,repoIdentity:g,requestNonce:h.get(v)??null}):null,G=W&&!W.allow?await V(R,`desktop_execution_policy_denied:${W.code}: ${W.reason}`,{desktopPolicyDenied:W.code,...W.code==="operation_not_approved"?{nonFatal:!0}:{}}):Ku(v)?await Tb(v):await Db(v);return G||(na.add(A),Hh(A,l.id)),G}for(let v of T.started)await Hu(v);if(D.push(...T.skipped??[]),_)for(let v of D){let R=String(v.task.id);S.has(R)&&F.push({taskId:R,started:!1,error:`exact_target_not_started:${v.skipReason}`,skipReason:v.skipReason,detail:v.reason??null,requestedTargetTaskIds:[...S]})}for(;!_&&F.length<C;){if(yr()){let A={started:!1,error:"dispatch_circuit_breaker: start readback failed; stopping top-up for this tick",nonFatal:!0};F.push(A),Re("circuit_breaker",{lastOutcome:A});break}let v=await jr(1);if(!v.dispatch.ok||!v.result){let A=Vm(v.dispatch.response),W=ye();ie=A&&W>0;let G=fl(v.dispatch.response),qe={started:!1,error:G?"dispatch_next timed out during top-up":"dispatch_next request failed during top-up",httpStatus:v.dispatch.status,response:v.dispatch.response,...G?{timeout:!0}:{},...ie?{nonFatal:!0,partialTopUp:!0}:{}};F.push(qe),Re("top_up_failed",{partialTopUpInterrupted:ie,lastOutcome:qe});break}M+=Number(v.result.inspected)||0,D.push(...v.result.skipped??[]);let R=v.result.started??[];if(R.length===0)break;for(let A of R){if(F.length>=C)break;await Hu(A)}}let $o=F.filter(v=>v.started).length,Vr=Cy(T),Nt=Py(T),$u=$o===0&&(Vr?.capacityIdle===!0||Number(T.resourceGate?.slotsAvailable)>0);if($u&&Vr?.summary){let v=Vr.skipReasonCounts?.retry_ceiling_exceeded??0,R=T.overAttemptIdleRecovery??Vr.overAttemptIdleRecovery,A=R?.attempted===!0?`; over_attempt_recovery minted=${R.minted??0} started=${R.started??0}`:v>0?"; over_attempt_recovery not attempted":"",W=Nt?`; dispatch_skip_drain scanned=${Nt.scanned??0} advanced=${Nt.advanced??0}`:"",G=Vr.progressionReport?.summary?`; ${Vr.progressionReport.summary}`:"",qe=Nt?.prLifecycleAttempt?.summary?`; ${Nt.prLifecycleAttempt.summary}`:"";console.error(`[dispatch] ${Vr.summary}${v>0?`; retry_ceiling_exceeded=${v}`:""}${A}${W}${G}${qe}`)}let ju={runId:l.id,agentOsId:u,dryRun:!1,leaseOwner:k,startedCount:$o,capacityIdle:$u,admissionExhaustion:Vr,dispatchSkipDrain:Nt,outcomes:F,skipped:D.map(v=>({taskId:v.task.id,skipReason:v.skipReason})),inspected:M,pagesScanned:T.pagesScanned??null,candidatesExhausted:T.candidatesExhausted??null,diskGate:T.diskGate,resourceGate:T.resourceGate,...ie?{partialTopUpInterrupted:!0}:{},dispatchCallbackTimeoutMs:kr},Vu=v=>!v.started&&v.nonFatal!==!0,Mb=F.some(Vu),Gu=ie&&$o>0?!0:!Mb;if(ro({runId:l.id,agentOsId:u,phase:"complete",partial:ie,startedCount:$o,ok:Gu}),r)return{ok:Gu,...ju};console.log(JSON.stringify(ju,null,2)),F.some(Vu)&&process.exit(1)}catch(i){if(r)return{ok:!1,error:i.message};console.error(`run dispatch failed: ${i.message}`),process.exit(1)}}var rN=1;function kn(e){if(!e||typeof e!="object")return 0;let r=e.startedCount;if(typeof r=="number")return r;let t=e.outcomes;return Array.isArray(t)?t.filter(n=>n.started).length:0}function tN(e){let{maxStarts:r,...t}=e;return t}async function Vc(e,r){if(r<=0)return{ok:!0,skipped:!0,reason:"no slots",maxStarts:0,startedCount:0};let t=tN(e);if(t.targetTaskId||t.targetTaskIds){let u=await Ui({...t,execute:!0,pipeline:!0,maxStarts:String(r)});return{...typeof u=="object"&&u!==null?u:{},passes:{target:u},startedCount:kn(u)}}let n=Math.min(r,rN),o=Math.max(0,r-n),s=await Ui({...t,execute:!0,pipeline:!0,lane:"review",maxStarts:String(n)}),i=kn(s),a=o+(n-i);if(a<=0)return{...typeof s=="object"&&s!==null?s:{},passes:{review:s},startedCount:i};let l=await Ui({...t,execute:!0,pipeline:!0,maxStarts:String(a)}),c=kn(l);return{passes:{review:s,work:l},startedCount:i+c,ok:!0}}function Ay(e){if(!e||typeof e!="object")return[];let t=e.response?.dispatch?.exactTargetTaskIds;if(!Array.isArray(t))return[];let n=new Set,o=[];for(let s of t){if(typeof s!="string")continue;let i=s.trim();!i||n.has(i)||(n.add(i),o.push(i))}return o}function nN(e){let t=e.response?.dispatch;return t&&typeof t=="object"?t:null}function Wo(e){return typeof e!="number"||!Number.isFinite(e)?null:Math.max(0,Math.floor(e))}function oN(e){let r=Number(process.env[e]);return!Number.isFinite(r)||r<=0?null:Math.floor(r)}function Iy(e,r){let t=nN(r),n=Wo(t?.recommendedMaxStarts),o=Wo(t?.actionableReady),s=Wo(t?.queuedTasks),i=Wo(t?.boardAdvancedThisTick)??0,a=Wo(t?.leaseReapedThisTick)??0,l=i+a,c=o??s,u=e.slotsAvailable;c!==null?u=Math.min(u,c):n!==null&&(u=Math.min(u,n)),c===null&&n!==null&&(u=Math.max(u,Math.min(e.slotsAvailable,n)));let d=t?.underutilized===!0||(c??0)>0&&e.slotsAvailable>0&&e.maxConcurrentWorkers>0&&e.activeWorkers<e.maxConcurrentWorkers;if(e.slotsAvailable>0&&u===0&&(d||l>0)){let f=c??(l>0?l:1);u=Math.min(e.slotsAvailable,Math.max(1,f))}let p=oN("KYNVER_DAEMON_MAX_DISPATCH_STARTS");p!==null&&(u=Math.min(u,p));let m=s!==null&&o!==null?Math.max(0,s-o):null;return{maxStarts:Math.max(0,u),underutilized:d,advisedStarts:n,actionableReady:o,queuedTasks:s,nonDispatchableReady:m,boardAdvancedThisTick:i,leaseReapedThisTick:a}}import XN from"node:path";B();Bn();fe();O();import sN from"node:path";var iN=new Set(["running","dispatching","pending","queued","needs_attention"]),xt=new Set(["completed","failed","cancelled","done"]);function _t(e){let r=ar(e);if(r.length===0)return"failed";let t=!1,n=!1,o=!1,s=!1;for(let i of r){let a=I(sN.join(N(e.id),"workers",x(i),"worker.json"),void 0);if(!a)continue;let l=J(a,{base:e.base,baseCommit:e.baseCommit});if(l.alive&&!l.finalResult){t=!0;break}typeof a.completionBlocker=="string"&&a.completionBlocker&&(o=!0),Up(l)&&(s=!0),l.finalResult&&l.attention.state==="done"&&(n=!0)}return t||o||s?null:n?"completed":"failed"}function Lo(){let e=[];for(let r of Xe()){if(!iN.has(r.status))continue;let t=_t(r);if(!t||t===r.status)continue;let n=r.status;r.status=t,Ie(r),e.push({runId:r.id,from:n,to:t})}return e}B();Bn();fe();O();pt();$n();import{existsSync as at,lstatSync as ON,readdirSync as TN,readlinkSync as NN,renameSync as ru,unlinkSync as DN}from"node:fs";import fr from"node:path";Ze();O();import sr from"node:path";var aN=`${sr.sep}runs${sr.sep}runs${sr.sep}`;function Fi(e){return e.includes(aN)}function Gc(e,r){return sr.join(Ae(he(e)),x(r))}function st(e,r,t){return sr.join(Gc(e,r),"workers",x(t))}function Oy(e,r,t){let n=he(e);return sr.join(n,"runs","runs",x(r),"workers",x(t))}function Yc(){return["stdout.jsonl","stderr.log","heartbeat.jsonl","last-status.json","auto-complete.log","worker.json"]}function Et(e){return{workerJsonPath:sr.join(e,"worker.json"),stdoutPath:sr.join(e,"stdout.jsonl"),stderrPath:sr.join(e,"stderr.log"),heartbeatPath:sr.join(e,"heartbeat.jsonl"),lastStatusPath:sr.join(e,"last-status.json")}}function Ty(e){let r=Et(st(e.harnessRoot,e.runId,e.workerName)).workerJsonPath;return e.statusPath&&!Fi(e.statusPath)?e.statusPath:r}import{existsSync as it,mkdirSync as wN,readdirSync as By,renameSync as xN,statSync as zc}from"node:fs";import se from"node:path";H();On();Gr();import lN from"node:path";function cN(e){return lN.resolve(We(e.trim()))}function qc(e,r,t){let n=e?.trim();return n?{repo:cN(n),source:r,persistedInConfig:t}:null}function uN(e){return e?{repo:e.repo,source:e.source,persistedInConfig:!1}:null}function Ny(e={}){let r=e.env??process.env,t=e.config??U(),n=qc(t.defaultRepo,"config",!0);if(n)return n;let o=qc(r.KYNVER_DEFAULT_REPO,"env_default_repo",!1);if(o)return o;let s=qc(r.KYNVER_HARNESS_REPO,"env_harness_repo",!1);return s||uN(es({cwd:e.cwd,runtimeModuleUrl:e.runtimeModuleUrl}))}de();pt();Ze();B();O();H();import{existsSync as dN,readFileSync as pN,readdirSync as mN,statSync as fN,writeFileSync as gN}from"node:fs";import hN from"node:path";var De="<redacted>",Jc=`[^\\s"'\\\\,}\\]]`,kN=[[new RegExp(`\\b(?:postgres(?:ql)?|mysql|mongodb(?:\\+srv)?|redis|rediss):\\/\\/${Jc}+`,"gi"),De],[new RegExp(`\\b[a-z][a-z0-9+.-]*:\\/\\/[^\\s/@:"']+:[^\\s/@"']+@${Jc}+`,"gi"),De],[/\bkynver_u_[A-Za-z0-9_-]+/g,De],[/\bkyn_[A-Za-z0-9]{12,}/g,De],[/\bsk-ant-[A-Za-z0-9_-]+/g,De],[/\bsk-[A-Za-z0-9_-]{8,}/g,De],[/\bkr[a-z]1\.[A-Za-z0-9._~+/=-]{8,}/g,De],[/\b(?:ghp|gho|ghu|ghs|ghr)_[A-Za-z0-9]{16,}/g,De],[/\bgithub_pat_[A-Za-z0-9_]{16,}/g,De],[/\b(Bearer|Basic)\s+(?!<redacted>)[A-Za-z0-9._~+/=-]{8,}/gi,`$1 ${De}`],[new RegExp(`(\\b(?:[A-Z0-9_]*(?:API_KEY|APIKEY|TOKEN|SECRET|PASSWORD)|DATABASE_URL|KYNVER_DATABASE_URL)\\s*=\\s*)(?!<redacted>)${Jc}+`,"g"),`$1${De}`]],yN=12,RN=/(?:API_KEY|APIKEY|TOKEN|SECRET|PASSWORD|CREDENTIAL)$/i,vN=/(?:\.jsonl|\.log|\.txt|^stdout.*|^stderr.*)$/i,bN=256*1024*1024;function SN(e,r=[]){if(!e)return e;let t=e,n=[...new Set(r.map(o=>o?.trim()).filter(o=>!!o&&o.length>=yN))].sort((o,s)=>s.length-o.length);for(let o of n){t.includes(o)&&(t=t.split(o).join(De));let s=JSON.stringify(o).slice(1,-1);s!==o&&t.includes(s)&&(t=t.split(s).join(De))}for(let[o,s]of kN)t=t.replace(o,s);return t}function Dy(e=process.env,r=[]){let t=[];for(let[n,o]of Object.entries(e))o&&RN.test(n)&&t.push(o);for(let n of r)try{let o=n();o&&t.push(o)}catch{}return t}function My(e,r=0){if(r>3||!dN(e))return[];let t=[];for(let n of mN(e,{withFileTypes:!0})){let o=hN.join(e,n.name);n.isDirectory()?t.push(...My(o,r+1)):n.isFile()&&vN.test(n.name)&&t.push(o)}return t}function Wy(e,r=[]){let t={masked:[],clean:0,failed:[]},n;try{n=My(e)}catch{return t}for(let o of n)try{if(fN(o).size>bN){t.failed.push(o);continue}let s=pN(o,"utf8"),i=SN(s,r);if(i===s){t.clean+=1;continue}gN(o,i,"utf8"),t.masked.push(o)}catch{t.failed.push(o)}return t}var Bo=900*1e3,_N=3600*1e3;function Uy(e,r){let t=se.resolve(e),n=se.resolve(Ae(r)),o=se.relative(n,t);return o!==".."&&!o.startsWith("..")&&!se.isAbsolute(o)}function Xc(e){if(!it(e))return[];try{return By(e,{withFileTypes:!0}).filter(r=>r.isDirectory()&&r.name!=="runs").map(r=>r.name)}catch{return[]}}function Qc(e){let r=se.join(e,"workers");if(!it(r))return[];try{return By(r,{withFileTypes:!0}).filter(t=>t.isDirectory()).map(t=>t.name)}catch{return[]}}function Fy(e){return se.join(e,"archived-workers")}function EN(e,r){let t=se.join(Fy(e),x(r));return it(t)?`${t}-${Date.now()}`:t}function Ly(e,r,t){if(!it(e))return!1;try{let n=r-zc(e).mtimeMs;return Number.isFinite(n)&&n>=0&&n<t}catch{return!1}}function Ky(e,r=Date.now(),t=Bo){if(!it(e))return!1;let n=Et(e),o=I(n.workerJsonPath,void 0);if(o?.status==="running"&&Y(o.pid))return!0;let s=me(n.heartbeatPath);if(s.lastHeartbeatAt){let i=r-Date.parse(s.lastHeartbeatAt);if(Number.isFinite(i)&&i>=0&&i<t)return!0}return!!(Ly(n.stdoutPath,r,t)||Ly(n.heartbeatPath,r,t))}function CN(e,r,t){let n=typeof r.completionReportedAt=="string"?Date.parse(r.completionReportedAt):NaN;if(Number.isFinite(n))return t-n;let o=(()=>{let s=r.completionResponse;if(!s||typeof s!="object")return NaN;let i=s.task;if(!i||typeof i!="object")return NaN;let a=i.updatedAt;return typeof a=="string"?Date.parse(a):NaN})();if(Number.isFinite(o))return t-o;try{return t-zc(se.join(e,"worker.json")).mtimeMs}catch{return 0}}function PN(e,r,t,n){if(Ky(e,t))return{eligible:!1,reason:"worker has active/recent retention signals"};let o=typeof r.status=="string"?r.status:"";if(typeof r.completionBlocker=="string"&&r.completionBlocker.trim().length>0)return{eligible:!1,reason:"worker has completion blocker"};let i=typeof r.completionReportedAt=="string"||r.completionOutcome==="acknowledged";if(o!=="done"&&!i)return{eligible:!1,reason:`worker status is ${o||"unknown"}`};let a=CN(e,r,t);return!Number.isFinite(a)||a<n?{eligible:!1,reason:"terminal worker is still within archive grace window"}:{eligible:!0,reason:"terminal worker metadata archived"}}function yn(e,r=Date.now(),t=Bo){for(let n of Qc(e))if(Ky(se.join(e,"workers",n),r,t))return!0;return!1}function AN(){let r=Ny()?.repo??"",t="unknown";if(r)try{let n=Z(r,["rev-parse","origin/main"],{allowFailure:!0}).trim();n&&(t=n)}catch{}return{repo:r,base:"origin/main",baseCommit:t}}function IN(e,r){let t=se.join(Ae(e),x(r));if(!it(t))return null;let n=Qc(t);if(n.length===0)return null;let o;try{o=zc(t).birthtime.toISOString()}catch{o=new Date().toISOString()}let s={};for(let a of n){let l=st(e,r,a);s[a]={workerDir:l,statusPath:se.join(l,"worker.json")}}let i=yn(t);return{id:r,name:r,...AN(),status:i?"running":"needs_attention",createdAt:o,workers:s}}function Zc(e){let r=he(e??Ue()),t=Ae(r),n=[];for(let o of Xc(t)){let s=se.join(t,o,"run.json");if(it(s)){n.push({runId:o,action:"skipped",reason:"run.json present"});continue}let i=IN(r,o);if(!i){n.push({runId:o,action:"skipped",reason:"no worker dirs on disk"});continue}Ie(i),n.push({runId:o,action:"repaired_run_json",reason:yn(se.join(t,o))?"synthesized run.json while worker artifacts still active":"synthesized run.json from orphan worker metadata dirs"})}return{runs:n}}function eu(e,r={}){let t=he(e??Ue()),n=Ae(t),o=r.now??Date.now(),s=r.archiveAgeMs??_N,i=[],a=null,l=()=>a??=(r.knownSecrets??(()=>Dy(process.env,[Ar,()=>Jt()])))();Zc(t);for(let c of Xc(n)){let u=se.join(n,c),d=se.join(u,"run.json"),p=I(d,void 0);if(!p?.id)continue;let m=new Set([...Object.keys(p.workers||{}),...Qc(u)]),f=!1;for(let y of m){let k=se.join(u,"workers",x(y)),b=se.join(k,"worker.json"),g=I(b,void 0);if(!g){let E=se.join(Fy(u),x(y));if(it(E)&&(p.workers[x(y)]||p.workers[y])){delete p.workers[x(y)],delete p.workers[y],f=!0,i.push({runId:p.id,worker:y,action:"archived",reason:"removed stale live index entry for archived worker metadata",archivePath:E});continue}i.push({runId:p.id,worker:y,action:"skipped",reason:"worker.json missing"});continue}let h=PN(k,g,o,s);if(!h.eligible){i.push({runId:p.id,worker:y,action:"skipped",reason:h.reason});continue}let w=EN(u,y);wN(se.dirname(w),{recursive:!0}),xN(k,w),Wy(w,l()),delete p.workers[x(y)],delete p.workers[y],f=!0,i.push({runId:p.id,worker:y,action:"archived",reason:h.reason,archivePath:w})}f&&Ie(p)}return{workers:i}}function Hy(e,r=Date.now()){let t=new Set,n=Ae(e);for(let o of Xc(n)){let s=se.join(n,o);yn(s,r)&&t.add(`${e}\0${o}`)}return t}B();O();function MN(e,r){let t=Gc(e,r),n;try{n=ON(t)}catch{return null}if(!n.isSymbolicLink())return null;let o=fr.resolve(fr.dirname(t),NN(t));if(yn(o)||yn(t))return null;let s=`${t}.materialize-${Date.now()}`;return ru(o,s),DN(t),ru(s,t),o}function WN(e){let r=[];for(let t of Yc()){let n=fr.join(e.fromDir,t),o=fr.join(e.toDir,t);!at(n)||at(o)||(ru(n,o),r.push(t))}return r}function $y(e,r){let t=Et(r),n=!1;return e.workerDir!==r&&(e.workerDir=r,n=!0),e.stdoutPath!==t.stdoutPath&&(e.stdoutPath=t.stdoutPath,n=!0),e.stderrPath!==t.stderrPath&&(e.stderrPath=t.stderrPath,n=!0),e.heartbeatPath!==t.heartbeatPath&&(e.heartbeatPath=t.heartbeatPath,n=!0),n}function LN(e){let r=typeof e.lastStatus?.status=="string"?e.lastStatus.status:void 0,t=e.lastStatus?.attention&&typeof e.lastStatus.attention=="object"?e.lastStatus.attention.state:void 0;return r==="done"||t==="done"||e.stdoutFinalResult||e.heartbeatFinalResult?"done":r==="blocked"?"blocked":r==="running"?"exited":r??"exited"}function BN(e){let r=Et(e.canonicalDir),t=I(r.lastStatusPath,void 0),n=at(r.stdoutPath),o=at(r.heartbeatPath);if(!(n||o||t!=null))return null;let i=n?ft(r.stdoutPath):{finalResult:null},a=o?me(r.heartbeatPath):me(""),l=xr(a),c=LN({lastStatus:t,stdoutFinalResult:i.finalResult,heartbeatFinalResult:l}),u={name:e.workerName,runId:e.run.id,status:c,branch:typeof t?.branch=="string"?t.branch:`agent/${e.run.id}/${e.workerName}`,worktreePath:typeof t?.worktreePath=="string"?t.worktreePath:fr.join(le().worktreesDir,e.run.id,e.workerName),workerDir:e.canonicalDir,stdoutPath:r.stdoutPath,stderrPath:r.stderrPath,heartbeatPath:r.heartbeatPath,startedAt:typeof t?.startedAt=="string"?t.startedAt:e.run.createdAt,reconciledAt:new Date().toISOString(),reconcileReason:"synthesized worker.json from on-disk artifacts after metadata repair"};return typeof t?.taskId=="string"&&(u.taskId=t.taskId),typeof t?.agentOsId=="string"&&(u.agentOsId=t.agentOsId),typeof t?.planId=="string"&&(u.planId=t.planId),typeof t?.pid=="number"&&(u.pid=t.pid),(i.finalResult||l)&&(u.completionSnapshot={finalResult:i.finalResult??l??"completed",summary:a.lastHeartbeatSummary}),$y(u,e.canonicalDir),u}function UN(e,r){let t=!1,n={...e.workers||{}};for(let[o,s]of Object.entries(n)){let i=st(r,e.id,o),a=fr.join(i,"worker.json");(Fi(s.workerDir)||Fi(s.statusPath)||s.workerDir!==i||s.statusPath!==a)&&(n[o]={workerDir:i,statusPath:a},t=!0)}return t&&(e.workers=n,Ie(e)),t}function FN(e){let r=[],t=st(e.harnessRoot,e.run.id,e.workerName),n=Oy(e.harnessRoot,e.run.id,e.workerName),o=Et(t),s=WN({fromDir:n,toDir:t});s.length>0&&r.push({runId:e.run.id,worker:e.workerName,action:"relocated_artifacts",reason:`moved ${s.join(", ")} from nested runs/runs layout`});let i=Ty({harnessRoot:e.harnessRoot,runId:e.run.id,workerName:e.workerName,statusPath:e.statusPath}),a=I(i,void 0);if(!a&&at(o.workerJsonPath)&&(a=I(o.workerJsonPath,void 0)),!a){let l=BN({run:e.run,workerName:e.workerName,canonicalDir:t,harnessRoot:e.harnessRoot});if(l)return L(e.run.id,l),r.push({runId:e.run.id,worker:e.workerName,action:"synthesized_worker_json",reason:l.reconcileReason??"synthesized from artifacts"}),r;let c=at(t),u=Yc().some(d=>at(fr.join(t,d)));if(c&&!u){let d={name:e.workerName,runId:e.run.id,status:"exited",branch:`agent/${e.run.id}/${e.workerName}`,worktreePath:fr.join(le().worktreesDir,e.run.id,e.workerName),workerDir:t,stdoutPath:o.stdoutPath,stderrPath:o.stderrPath,heartbeatPath:o.heartbeatPath,startedAt:e.run.createdAt,reconciledAt:new Date().toISOString(),reconcileReason:"empty worker dir \u2014 marked abandoned during metadata reconcile"};return L(e.run.id,d),r.push({runId:e.run.id,worker:e.workerName,action:"marked_abandoned",reason:d.reconcileReason??"empty worker dir"}),r}return r.push({runId:e.run.id,worker:e.workerName,action:"skipped",reason:"worker.json missing and no recoverable artifacts"}),r}return $y(a,t)?(a.reconciledAt=new Date().toISOString(),a.reconcileReason=a.reconcileReason??"repaired nested runs/runs path fields",L(e.run.id,a),r.push({runId:e.run.id,worker:e.workerName,action:"repaired_worker_paths",reason:a.reconcileReason})):r.push({runId:e.run.id,worker:e.workerName,action:"skipped",reason:"worker metadata already canonical"}),r}function KN(e,r){let t=fr.join(N(e.id),"workers");if(!at(t))return[];let n=new Set(Object.keys(e.workers||{})),o=[];for(let s of TN(t,{withFileTypes:!0}))s.isDirectory()&&(n.has(s.name)||o.push(s.name));return o}function jy(){let{harnessRoot:e}=le(),r=Zc(e),t=[];for(let n of Xe()){let o=MN(e,n.id);o&&t.push({runId:n.id,worker:"*",action:"materialized_run_symlink",reason:`replaced symlink with real run dir (was ${o})`}),UN(n,e)&&t.push({runId:n.id,worker:"*",action:"repaired_run_index",reason:"repaired nested runs/runs workerDir/statusPath entries in run.json"});let s=new Set(Object.keys(n.workers||{}));for(let i of KN(n,e))s.add(i),n.workers={...n.workers||{},[i]:{workerDir:st(e,n.id,i),statusPath:fr.join(st(e,n.id,i),"worker.json")}},Ie(n),t.push({runId:n.id,worker:i,action:"repaired_run_index",reason:"indexed orphan worker dir into run.json"});for(let i of s){let a=n.workers?.[i];t.push(...FN({run:n,workerName:i,harnessRoot:e,statusPath:a?.statusPath}))}}return{workers:t,runMetadataRetention:r}}pt();gs();fe();B();Bn();O();import{execFileSync as Vy}from"node:child_process";import Gy from"node:path";function tu(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`https://github.com/${r[1]}/pull/${r[2]}`:null}function HN(e){let r=tu(e)?.match(/\/pull\/(\d+)$/);if(!r)return null;let t=Number.parseInt(r[1],10);return Number.isFinite(t)?t:null}function $N(e){if(e==null)return"";if(typeof e=="string")return e;try{return JSON.stringify(e)}catch{return""}}function jN(e){let r=new Set;for(let t of e.matchAll(/github\.com\/[^/\s)>"']+\/[^/\s)>"']+\/(?:pull|pulls)\/(\d+)/gi)){let n=Number.parseInt(t[1],10);Number.isFinite(n)&&r.add(n)}for(let t of e.matchAll(/\bPR\s*#?\s*(\d{2,})\b/gi)){let n=Number.parseInt(t[1],10);Number.isFinite(n)&&r.add(n)}for(let t of e.matchAll(/\bpr[-_]?(\d{2,})\b/gi)){let n=Number.parseInt(t[1],10);Number.isFinite(n)&&r.add(n)}return[...r]}function VN(e){let r=null;if(typeof e=="string"?r=jt(e):e&&typeof e=="object"&&!Array.isArray(e)&&(r=e),!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=tu(String(s.prUrl??s.pr_url??"")),a=String(s.outcome??"").trim();!i||a!=="merged"||n.push({prUrl:i,mergeCommit:typeof s.mergeCommit=="string"?s.mergeCommit:typeof s.merge_commit=="string"?s.merge_commit:null,reason:typeof s.reason=="string"?s.reason:null})}return n}function GN(e){try{let n=Vy("git",["config","--get","remote.origin.url"],{windowsHide:!0,cwd:e.repoDir,encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trim().match(/github\.com[:/]([^/]+\/[^/.]+)(?:\.git)?$/i)?.[1];if(!n)return null;let o=Vy("gh",["pr","view",String(e.prNumber),"--repo",n,"--json","state,mergedAt,mergeCommit,url"],{windowsHide:!0,cwd:e.repoDir,encoding:"utf8",stdio:["ignore","pipe","ignore"]}),s=JSON.parse(o);return{prUrl:tu(s.url??`https://github.com/${n}/pull/${e.prNumber}`)??`https://github.com/${n}/pull/${e.prNumber}`,state:s.state??"",mergedAt:s.mergedAt??null,mergeCommit:s.mergeCommit?.oid??null}}catch{return null}}function YN(e){let r=me(e.heartbeatPath);return e.completionSnapshot?.finalResult??xr(r)}function qN(e){let r=new Map,t=N(e.id);for(let n of ar(e)){let o=I(Gy.join(t,"workers",x(n),"worker.json"),void 0);if(o)for(let s of VN(YN(o))){let i=HN(s.prUrl);i!=null&&!r.has(i)&&r.set(i,s)}}return r}function JN(e,r){let t=me(e.heartbeatPath),n=[e.name,e.repairTargetPrUrl,e.taskPrUrl,e.branch,t.lastHeartbeatSummary,$N(r)].filter(Boolean).join(`
175
+ `);return jN(n)}function zN(e){return e.localOnly===!0&&!e.taskId&&!e.agentOsId}function nu(e={}){let r=e.lookupPr??GN,t=[],n=new Map;for(let o of Xe()){let s=qN(o),i=N(o.id);for(let a of ar(o)){let l=Gy.join(i,"workers",x(a),"worker.json"),c=I(l,void 0);if(!c||!zN(c))continue;let u=J(c,{base:o.base,baseCommit:o.baseCommit});if(u.attention.state!=="needs_attention")continue;let d=null;for(let m of JN(c,u.finalResult)){if(d=s.get(m)??null,!d){let f=o.repo||c.worktreePath,y=`${f}#${m}`,k=n.has(y)?n.get(y)??null:r({repoDir:f,prNumber:m});n.has(y)||n.set(y,k),k&&(k.state==="MERGED"||k.mergedAt)&&(d={prUrl:k.prUrl,mergeCommit:k.mergeCommit??null,reason:"GitHub reports PR merged"})}if(d)break}if(!d){t.push({runId:o.id,worker:a,action:"skipped",reason:"no merged PR evidence"});continue}let p=new Date().toISOString();c.status="done",c.completionSnapshot={prUrl:d.prUrl,summary:`Local-only worker superseded by merged PR ${d.prUrl}`,finalResult:{summary:`Local-only repair/salvage worker superseded by merged PR ${d.prUrl}`,targetPrReconciliation:[{prUrl:d.prUrl,outcome:"merged",mergeCommit:d.mergeCommit??null,reason:d.reason??"PR already merged; local-only worker no longer requires attention"}]}},c.completionAckSource="local-pr-merged-reconcile",c.reconciledAt=p,c.reconcileReason="local-only needs_attention superseded by merged PR",L(o.id,c),t.push({runId:o.id,worker:a,action:"marked_done",reason:c.reconcileReason,prUrl:d.prUrl,mergeCommit:d.mergeCommit??null})}}return{workers:t}}var QN=900*1e3;function ZN(){return process.env.KYNVER_NO_STALE_CLEANUP==="1"}function Yy(e,r){let t=bi({worker:e,status:r}),n=t?Si(e,t):!1,o=r.attention.state==="blocked"?"blocked":r.attention.state==="done"||r.status==="done"||t?"done":"exited",s=t&&n?`captured exited-worker handoff (${t.source})`:t?"synced finished worker record after terminal stdout/heartbeat":r.attention.reason;return{nextStatus:o,reason:s,handoffCaptured:n}}function eD(e,r){r.stopClass&&(e.stopClass=r.stopClass),r.stopReason&&(e.stopReason=r.stopReason),r.exit&&(e.exitCode=r.exit.exitCode,e.exitSignal=r.exit.signal,e.oomEvidence=r.exit.oomEvidence??null);let t=r.error?.trim();t&&(e.exitStderrTail=t.slice(-1e3))}function qy(){let e=jy();if(ZN()){let s=nu(),i=eu();return{workers:[],finalizedRuns:Lo(),metadataReconcile:e,localPrAttentionReconcile:s,terminalWorkerArchive:i}}let r=[],t=Date.now();for(let s of Xe())for(let i of ar(s)){let a=XN.join(N(s.id),"workers",x(i),"worker.json"),l=I(a,void 0);if(!l||l.status!=="running"){r.push({runId:s.id,worker:i,action:"skipped",reason:l?`worker status is ${l.status}`:"worker.json missing"});continue}let c=J(l,{base:s.base,baseCommit:s.baseCommit});if(c.finalResult){if(l.status==="running"){let u=Yy(l,c);l.status=u.nextStatus,l.reconciledAt=new Date().toISOString(),l.reconcileReason=u.reason,l.stopClass="finished",L(s.id,l),r.push({runId:s.id,worker:i,action:"marked_exited",reason:l.reconcileReason})}else r.push({runId:s.id,worker:i,action:"skipped",reason:"final result present"});continue}if(!c.alive){let u=Yy(l,c);l.status=u.nextStatus,l.reconciledAt=new Date().toISOString(),l.reconcileReason=u.reason,eD(l,c),L(s.id,l),r.push({runId:s.id,worker:i,action:"marked_exited",reason:c.attention.reason});continue}if(c.attention.state==="stale"&&l.pid&&Y(l.pid)){let u=c.lastHeartbeatAt?Date.parse(c.lastHeartbeatAt):NaN,d=c.lastActivityAt?Date.parse(c.lastActivityAt):NaN,p=!Number.isFinite(u)||t-u>QN,m=Number.isFinite(d)&&t-d>Na;if(p&&m){Me(l.pid,"SIGTERM"),l.status="exited",l.reconciledAt=new Date().toISOString(),l.reconcileReason=`reconciled stale worker: ${c.attention.reason}`,l.stopClass="stuck",l.stopReason=`stuck (no progress) \u2014 ${c.attention.reason}`,L(s.id,l),r.push({runId:s.id,worker:i,action:"killed_stale",reason:c.attention.reason});continue}}r.push({runId:s.id,worker:i,action:"skipped",reason:c.attention.reason})}let n=nu(),o=eu();return{workers:r,finalizedRuns:Lo(),metadataReconcile:e,localPrAttentionReconcile:n,terminalWorkerArchive:o}}Yt();B();import lD from"node:path";import{readdirSync as rD,readFileSync as tD}from"node:fs";var nD="dispatch:claim:",oD=900*1e3,sD=10080*60*1e3,iD=200,Ct={recoveredStrandedClaims:0,recoveryDeferredOrphans:0,recoveryStoreFailures:0};function aD(e){if(process.platform!=="linux"||!e.trim())return null;let r=[];try{r=rD("/proc")}catch{return null}for(let t of r)if(/^\d+$/.test(t)&&Number(t)!==process.pid)try{if(tD(`/proc/${t}/cmdline`,"utf8").replace(/\0/g," ").includes(e))return Number(t)}catch{}return null}async function Jy(e){let r=Fr(),t={mode:r,scanned:0,outcomes:[]};if(r!=="enforce")return t;let n=z();if(!n)return t;let o=e.nowMs??Date.now(),s=e.strandedAfterMs??oD,i=e.findOrphanPid??aD,a=[],l;try{l=n.listOperationReceipts({operation:"dispatch-claim",recordedAfter:new Date(o-sD).toISOString(),limit:iD})}catch{return Ct.recoveryStoreFailures+=1,t}for(let c of l){let u=c.idempotencyKey.slice(nD.length),d=u.split(":")[0]??"",p=u.slice(d.length+1);if(!(!d||!p))try{let m=Date.parse(c.recordedAt);if(!Number.isFinite(m)||o-m<s||n.getOperationReceipt(`dispatch:spawned:${u}`)||n.getOperationReceipt(`dispatch:released:${u}`))continue;let f=_o(p);if(n.listOperationReceipts({keyPrefix:`dispatch:completion-acked:${d}:`,limit:10}).some(E=>{if(f===null)return!0;let S=_o(E.idempotencyKey.slice(`dispatch:completion-acked:${d}:`.length));return S===null||S>=f}))continue;let b={};try{b=c.resultJson?JSON.parse(c.resultJson):{}}catch{b={}}let g=b.runId??null,h=b.workerName??null;if(g&&h&&e.hasLiveWorker({runId:g,workerName:h})){Ci({taskId:d,leaseToken:p}),a.push({taskId:d,leaseToken:p,runId:g,workerName:h,action:"finalized_late"});continue}if(g&&h){let E=e.worktreePathFor({runId:g,workerName:h}),S=E?i(E):null;if(S!==null){Ct.recoveryDeferredOrphans+=1,a.push({taskId:d,leaseToken:p,runId:g,workerName:h,action:"deferred_orphan",detail:`live pid ${S} references ${E}`});continue}}if(!g){a.push({taskId:d,leaseToken:p,runId:g,workerName:h,action:"skipped",detail:"claim intent missing runId \u2014 cannot resolve lease owner"});continue}let w=await e.releaseClaim({taskId:d,leaseToken:p,runId:g});w.released?(cn({taskId:d,leaseToken:p},"restart_recovery"),h&&(Co(g,h),nt(g,h)),Ct.recoveredStrandedClaims+=1,a.push({taskId:d,leaseToken:p,runId:g,workerName:h,action:"released"})):w.transportError?a.push({taskId:d,leaseToken:p,runId:g,workerName:h,action:"deferred_transport",detail:w.detail}):(cn({taskId:d,leaseToken:p},"restart_recovery_refused"),a.push({taskId:d,leaseToken:p,runId:g,workerName:h,action:"release_refused",detail:w.detail}))}catch{Ct.recoveryStoreFailures+=1}}return{mode:r,scanned:l.length,outcomes:a}}function zy(){return{"dispatchReceipts.recoveredStrandedClaims":Ct.recoveredStrandedClaims,"dispatchReceipts.recoveryDeferredOrphans":Ct.recoveryDeferredOrphans,"dispatchReceipts.recoveryStoreFailures":Ct.recoveryStoreFailures}}var Xy=!1;async function Qy(e){if(Xy||Fr()!=="enforce")return null;Xy=!0;try{let r=He().runnerId,t=await Jy({hasLiveWorker:e.hasLiveWorker,worktreePathFor:({runId:n,workerName:o})=>lD.join(le().worktreesDir,n,o),releaseClaim:async({taskId:n,leaseToken:o,runId:s})=>{let i=await Mo({baseUrl:e.baseUrl,secret:e.secret,agentOsId:e.agentOsId,taskId:n,leaseOwner:ho(s,r),leaseToken:o});return{released:i.released,transportError:i.transportError,detail:i.httpOk?void 0:JSON.stringify(i.releaseResponse).slice(0,200)}}});return t.outcomes.length>0&&console.error(`[daemon] D1b claim recovery: ${t.outcomes.map(n=>`${n.taskId}:${n.action}`).join(", ")}`),t}catch{return null}}H();Le();Es();import SD from"node:os";Ua();import{mkdirSync as mD,readFileSync as fD,renameSync as gD,writeFileSync as hD}from"node:fs";import{homedir as kD}from"node:os";import Ki from"node:path";import{existsSync as cD,readFileSync as uD}from"node:fs";import{dirname as ou,join as eR}from"node:path";import{fileURLToPath as Zy}from"node:url";function dD(e){let r=ou(Zy(e));for(let t=0;t<6;t+=1){if(cD(eR(r,"package.json")))return r;let n=ou(r);if(n===r)break;r=n}throw new Error(`package.json not found above ${ou(Zy(e))}`)}function pD(e=import.meta.url){let r=eR(dD(e),"package.json"),t=JSON.parse(uD(r,"utf8"));if(typeof t.version!="string"||!t.version.trim())throw new Error(`Missing package.json version at ${r}`);return t.version}var rR=pD();function tR(){return Ki.join(kD(),".kynver")}function yD(e=tR()){return Ki.join(e,"doctor-native-windows.json")}function nR(e=tR()){return Ki.join(e,"native-windows-state.json")}function RD(e,r){mD(Ki.dirname(e),{recursive:!0});let t=`${e}.tmp-${process.pid}`;hD(t,`${JSON.stringify(r,null,2)}
176
+ `,{mode:384}),gD(t,e)}function iu(e){try{return JSON.parse(fD(e,"utf8"))}catch{return null}}function vD(e){let r=iu(yD(e));return!r||typeof r.checkedAt!="string"||typeof r.verdict!="string"?null:{checkedAt:r.checkedAt,runtimeVersion:typeof r.runtimeVersion=="string"?r.runtimeVersion:"unknown",verdict:r.verdict,failing:Array.isArray(r.failing)?r.failing.filter(t=>typeof t=="string"):[],warnings:Array.isArray(r.warnings)?r.warnings.filter(t=>typeof t=="string"):[],providers:r.providers&&typeof r.providers=="object"?Object.fromEntries(Object.entries(r.providers).filter(t=>typeof t[1]=="string")):{},orphanedProcesses:typeof r.orphanedProcesses=="number"?r.orphanedProcesses:0}}function oR(e=new Date,r){try{let t=nR(r),n=iu(t)??{};RD(t,{...n,lastWorkerCompletedAt:e.toISOString()})}catch{}}function bD(e){let r=iu(nR(e));return typeof r?.lastWorkerCompletedAt=="string"?r.lastWorkerCompletedAt:null}var su=null,sR=null;function iR(e){su=e.admission,sR=e.ownerKind}function aR(e={}){let r=e.platform??process.platform,t=e.hostKind??Ba(),n=t==="win32";return{hostKind:t,wsl:t==="wsl",platform:r,arch:process.arch,nodeVersion:process.versions.node,runtimeVersion:rR,ownerKind:sR,nativeWindows:n?{admission:su?.basis??null,hostCapability:su?.hostCapability??null,lastDoctor:vD(e.root),lastWorkerCompletedAt:bD(e.root)}:null}}function lR(e,r={}){let t=U(),n=(r.boxKind??wr(t)).trim().toLowerCase()||"forge",o=r.hostLabel??SD.hostname();return{boxId:_s({boxKind:n,hostLabel:o,explicitBoxId:r.boxId,config:t,env:process.env}),boxKind:n,displayName:r.displayName??null,hostLabel:o,observedAt:r.observedAt??new Date().toISOString(),totalMemBytes:e.totalMemBytes,freeMemBytes:e.freeMemBytes,activeWorkers:e.activeWorkers,maxConcurrentWorkers:e.maxConcurrentWorkers,autoCap:e.autoCap,slotsAvailable:e.slotsAvailable,harnessRunId:r.harnessRunId??null,queuedTasks:r.queuedTasks??null,reason:e.reason,...r.prEvidence?.length?{prEvidence:r.prEvidence}:{},host:aR()}}B();Ze();ps();fe();H();import wD from"node:path";B();fe();O();async function cR(e){let r=e.pipeline===!0||e.pipeline==="true";try{let t=q(String(vr(String(e.run||""),"--run"))),n=String(vr(String(e.agentOsId||""),"--agent-os-id")),o=Q(e.baseUrl?String(e.baseUrl):void 0),s=await ee(e.secret?String(e.secret):void 0,n,{baseUrl:o}),i=He({runId:t.id}).runnerId,a=await Nk({run:t.id,agentOsId:n,...e},"run_sweep"),l=[];for(let p of Object.keys(t.workers||{})){let m=I(wD.join(N(t.id),"workers",x(p),"worker.json"),void 0);if(!m||!m.dispatched||!m.taskId)continue;let f=J(m);if(f.alive||f.finalResult||m.completionReportedAt)continue;try{let g=await To({run:t.id,name:p,agentOsId:n,...e.baseUrl?{baseUrl:String(e.baseUrl)}:{},...e.secret?{secret:String(e.secret)}:{}});if(g.ok&&!g.skipped){l.push({worker:p,taskId:m.taskId,pid:m.pid,released:!1,deathReported:!0,stopClass:f.stopClass??null});continue}}catch{}let y=oi({runId:t.id,workerLeaseOwner:m.leaseOwner??null,runnerId:i}),k=`${o}/api/agent-os/by-id/${encodeURIComponent(n)}/tasks/${encodeURIComponent(String(m.taskId))}/release`,b;try{b=await X(k,s,{agentOsId:n,leaseOwner:y,...m.leaseToken?.trim()?{leaseToken:m.leaseToken.trim()}:{}},{agentOsId:n,baseUrl:o})}catch(g){b={ok:!1,error:g.message}}l.push({worker:p,taskId:m.taskId,pid:m.pid,released:b.ok===!0||b.response?.ok===!0,response:b.response??b})}let c=`${o}/api/agent-os/by-id/${encodeURIComponent(n)}/tasks/reap`,u;try{u=await X(c,s,{agentOsId:n,...Number(e.graceMs)>=0&&e.graceMs!==void 0&&e.graceMs!==!0?{graceMs:Math.floor(Number(e.graceMs))}:{}},{agentOsId:n,baseUrl:o})}catch(p){u={ok:!1,error:p.message}}let d={runId:t.id,agentOsId:n,snapshotPublished:a,releasedLocalOrphans:l,reap:u.response??u};if(r)return{ok:!0,...d};console.log(JSON.stringify(d,null,2))}catch(t){if(r)return{ok:!1,error:t.message};console.error(`run sweep failed: ${t.message}`),process.exit(1)}}O();fe();B();O();import xD from"node:path";H();async function uR(e){let r=Q(e.baseUrl),t=await ee(e.secret,e.agentOsId,{baseUrl:r}),n=`${r}/api/agent-os/by-id/${encodeURIComponent(e.agentOsId)}/tasks/${encodeURIComponent(e.taskId)}/plan-progress-sync`,o=await X(n,t,{phase:e.phase,taskId:e.taskId,blocker:e.blocker,artifact:e.artifact},{agentOsId:e.agentOsId,baseUrl:r});return{ok:o.ok,status:o.status,response:o.response}}async function dR(e,r){let t=q(e),n=String(r.agentOsId||"");if(!n)return[];let o=[];for(let s of Object.keys(t.workers||{})){let i=I(xD.join(N(t.id),"workers",x(s),"worker.json"),void 0);if(!i?.dispatched||!i.taskId)continue;let a=J(i);if(!a.heartbeatBlocker)continue;if(i.lastSyncedHeartbeatBlocker===a.heartbeatBlocker){o.push({worker:s,phase:"heartbeat_blocker",ok:!0,skipped:!0});continue}let l=await uR({agentOsId:n,taskId:i.taskId,phase:"heartbeat_blocker",blocker:a.heartbeatBlocker,baseUrl:r.baseUrl?String(r.baseUrl):void 0,secret:r.secret?String(r.secret):void 0});l.ok&&(i.lastSyncedHeartbeatBlocker=a.heartbeatBlocker,L(t.id,i)),o.push({worker:s,phase:"heartbeat_blocker",ok:l.ok})}return o}ks();H();Le();Ze();import Ge from"node:path";fs();import $i from"node:path";de();fe();var au=[".next",".turbo","dist","build",".cache","node_modules/.cache"];function pR(e){let r=e.replace(/\\/g,"/").replace(/\/+$/,"");if(r==="node_modules"||r.startsWith("node_modules/"))return!0;for(let t of au)if(r===t||r.startsWith(`${t}/`))return!0;return!1}function $e(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!pR(n)})}function Pt(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 Uo(e){let r=e.gitAncestry?.relation;return r==="merged"||r==="synced"?$e(e.changedFiles).length>0:!!(Pt(e.finalResult)||r==="ahead"||r==="diverged"||e.changedFiles.length>0&&e.finalResult)}O();function Fo(e){return e.status||(e.status=J(e.worker,{base:e.run.base,baseCommit:e.run.baseCommit})),e.status}function lu(e,r){if(e.status)return $e(e.status.changedFiles).length>0;let t=r?r.porcelain(e.worktreePath):In(e.worktreePath);return $e(t).length>0}function _D(e){let r=e.worker.completionSnapshot?.finalResult;return r??(e.worker.taskPrUrl?{prUrl:e.worker.taskPrUrl}:null)}function cu(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=_D(e);if(o&&!Y(t.pid)){let i=r?.gitStatusCache?r.gitStatusCache.porcelain(e.worktreePath):In(e.worktreePath),a=e.run.baseCommit?.trim()||e.run.base?.trim()||"origin/main",c=r?.gitRevCache?.countAheadOfMain(e.worktreePath,a)===0?{checked:!0,base:a,relation:"synced"}:Zo(e.worktreePath,{base:e.run.base,baseCommit:e.run.baseCommit}),u={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:c,finalResult:s,completionBlocker:typeof t.completionBlocker=="string"&&t.completionBlocker.trim()||null,prUrl:t.repairTargetPrUrl??t.taskPrUrl??Pt(s)};return e.status=u,u}return Fo(e)}fe();fe();pt();O();function ED(e,r=Date.now(),t=Bo){let n=me(e.heartbeatPath);if(!n.lastHeartbeatAt)return!1;let o=r-Date.parse(n.lastHeartbeatAt);return Number.isFinite(o)&&o>=0&&o<t}function Rn(e,r=Date.now(),t=Bo){return Y(e.pid)?!0:ED(e,r,t)}function CD(e,r){return r?r.runTerminalCache.derive(e.run):_t(e.run)}function Hr(e,r=Date.now()){return Rn(e.worker,r)}function uu(e,r){return xt.has(e.run.status)?!1:CD(e,r)!==null}function mR(e,r,t=Date.now()){if(Hr(e,t))return!0;if(xt.has(e.run.status)||uu(e,r))return!1;let n=Fo(e);return xe(n)?!1:!!Hr(e,t)}fs();fe();function fR(e,r){if(!(typeof e.worker.completionBlocker=="string"?e.worker.completionBlocker.trim():""))return!1;if(Hr(e))return!0;let n=r??Fo(e);return!!(!xe(n)||Uo(n)||$e(n.changedFiles).length>0||$t({finalResult:n.finalResult,changedFiles:n.changedFiles,gitAncestry:n.gitAncestry,prUrl:Pt(n.finalResult)}).blocked)}de();O();import{existsSync as hR,mkdirSync as PD,writeFileSync as gR}from"node:fs";import Hi from"node:path";function kR(e,r,t){return Hi.join(e,"salvage",x(r),x(t))}function yR(e){return hR(Hi.join(kR(e.harnessRoot,e.runId,e.workerName),"evidence.json"))}function RR(e){let r=kR(e.harnessRoot,e.indexed.runId,e.indexed.workerName);PD(r,{recursive:!0});let t=Hi.join(r,"salvage.patch"),n=!1;if(hR(e.indexed.worktreePath)){let s=ne(e.indexed.worktreePath,["diff","HEAD"]),i=ne(e.indexed.worktreePath,["diff","--cached"]),a=[s.stdout,i.stdout].filter(l=>l.trim()).join(`
177
177
  `);a.trim()&&(gR(t,a.endsWith(`
178
178
  `)?a:`${a}
179
179
  `),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 gR(Hi.join(r,"evidence.json"),`${JSON.stringify(o,null,2)}
180
- `),o}var AD=new Set(["completion_blocked","dirty_worktree","pr_or_unmerged_commits","landing_blocked"]);function ID(e){e.writeSalvageEvidence&&AD.has(e.skipReason)&&(Kr(e.indexed,e.now)||yR({harnessRoot:e.harnessRoot,runId:e.indexed.runId,workerName:e.indexed.workerName})||RR({harnessRoot:e.harnessRoot,indexed:e.indexed,skipReason:e.skipReason,status:e.status,now:e.now}))}function OD(e){let{indexed:r,worktreesAgeMs:t,terminalWorktreesAgeMs:n}=e;return r&&(wt.has(r.run.status)||e.liveness&&uu(r,e.liveness)||e.liveness&&xe(cu(r,e.liveness))&&!Kr(r))?n:t}function TD(e){return!e.indexed||e.includeOrphans&&e.worktreesAgeMs<=0?0:OD(e)}function ND(e,r){if(e.harnessRoot?.trim())return $i.resolve(e.harnessRoot);let t=r.worker.workerDir;if(!t)return null;let n=`${$i.sep}runs${$i.sep}`,o=t.indexOf(n);return o<0?null:t.slice(0,o+n.length-1)}function vR(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 l=TD(e);if(n<=0&&!t&&l<=0)return"worktrees_disabled";if(l>0&&o<l)return"below_age_threshold";if(Kr(r,a))return"active_worker";let c=cu(r,e.liveness),u=ND(e,r),d=f=>{if(u)try{ID({indexed:r,harnessRoot:u,skipReason:f,status:c,now:a,writeSalvageEvidence:e.writeSalvageEvidence===!0})}catch{}return f};if(fR(r,c)){let f=d("completion_blocked");if(f)return f}if(lu(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(mR(r,e.liveness,a)||!xe(c))return"run_still_active";if(Bo(c)){let f=d("pr_or_unmerged_commits");if(f)return f}if($e(c.changedFiles).length>0){let f=d("dirty_worktree");if(f)return f}if(Ht({finalResult:c.finalResult,changedFiles:c.changedFiles,gitAncestry:c.gitAncestry,prUrl:Ct(c.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 du(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($i.resolve(o))||r&&Kr(r)?"active_worker":r&&lu(r,e.gitStatusCache)?"dirty_worktree":null}function bR(e){return du(e)}var SR=new Set(["active_worker","run_still_active","completion_blocked","landing_blocked"]);function wR(e,r){let t=[],n=new Set,o=(s,i,a)=>{let l=`${s}\0${i}`;n.has(l)||t.length>=24||(n.add(l),t.push({path:s,reason:i,...a?{detail:a}:{}}))};for(let s of r)SR.has(s.reason)&&o(s.path,s.reason,s.detail);for(let s of e)!s.skipped||!s.skipReason||SR.has(s.skipReason)&&o(s.path,s.skipReason);return t}import{existsSync as CR,readdirSync as PR,statSync as WD}from"node:fs";import AR from"node:path";B();Ze();import xR from"node:path";O();function MD(e,r){return yn(e,r)}function _R(e,r=Date.now()){let t=new Set,n=new Set;for(let o of e){for(let s of Ws(o)){let i=!1;for(let a of Object.keys(s.workers||{})){let l=I(xR.join(Qn(o,s.id),"workers",x(a),"worker.json"),void 0);if(!l?.worktreePath)continue;let c=xR.resolve(l.worktreePath);MD(l,r)&&(i=!0,t.add(c))}i&&n.add(`${o}\0${s.id}`)}for(let s of Hy(o))n.add(s)}return{activeWorktreePaths:t,liveRunKeys:n}}function ER(e,r,t,n){return t?n.has(`${r}\0${t}`):!1}O();function LD(e,r){try{let t=WD(e).mtimeMs;return Math.max(0,r-t)}catch{return 0}}function BD(e,r){let t=AR.join(e,"runs",r,"run.json");return CR(t)?I(t,null):null}function IR(e){try{return PR(e).length===0}catch{return!1}}function OR(e){let{harnessRoot:r,runId:t,runPath:n,ageMs:o,runDirectoriesAgeMs:s,activeGuards:i}=e;if(ER(n,r,t,i.liveRunKeys)||!IR(n))return"run_still_active";let a=BD(r,t);return a&&!wt.has(a.status)&&!xt(a)?"run_still_active":s>0&&o<s?"below_age_threshold":null}function TR(e){if(!CR(e.worktreesDir))return[];let r=[],t;try{t=PR(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=AR.join(e.worktreesDir,o);IR(s)&&r.push({kind:"remove_run_directory",path:s,bytes:null,harnessRoot:e.harnessRoot,runId:o,ageMs:LD(s,e.now)})}return r}de();import{existsSync as mu,rmSync as $R}from"node:fs";import{execFileSync as UD}from"node:child_process";import{existsSync as NR,readdirSync as FD,statSync as KD}from"node:fs";import HD from"node:path";var $D=2500;function jD(e,r=$D){if(!NR(e))return 0;try{let n=UD("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 Hr(e,r=5e4){if(!NR(e))return 0;let t=jD(e);if(t!==null)return t;let n=0,o=0,s=[e];for(;s.length>0;){let i=s.pop(),a;try{a=FD(i)}catch{continue}for(let l of a){if(o++>r)return null;let c=HD.join(i,l),u;try{u=KD(c)}catch{continue}u.isDirectory()?s.push(c):n+=u.size}}return n}import{existsSync as qD,rmSync as JD}from"node:fs";Ze();import{lstatSync as VD,readdirSync as GD}from"node:fs";function DR(e){try{let r=VD(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 MR(e,r=32){let t=DR(e);if(!t)return!1;if(t.foreign)return!0;try{let n=GD(e),o=0;for(let s of n){if(o>=r)break;let i=`${e.replace(/\/$/,"")}/${s}`,a=DR(i);if(o+=1,a?.foreign)return!0}}catch{}return!1}import{spawnSync as YD}from"node:child_process";import BR from"node:path";import je from"node:path";function WR(e,r,t,n){let o=je.resolve(e),s=`${je.sep}${n}`,i=o.endsWith(s)?o:null;if(!i)return"path_outside_harness";let a=je.relative(t,i);if(a.startsWith("..")||je.isAbsolute(a))return"path_outside_harness";let l=a.split(je.sep);return l.length<3||l[l.length-1]!==n||!o.startsWith(je.resolve(r))?"path_outside_harness":null}function ji(e,r,t){return WR(e,r,t,"node_modules")}function Vi(e,r,t){return WR(e,r,t,".next")}function Gi(e,r,t){let n=je.resolve(e),o=je.relative(t,n);return o.startsWith("..")||je.isAbsolute(o)||o.split(je.sep).length<3||!n.startsWith(je.resolve(r))?"path_outside_harness":null}function LR(e,r,t){let n=je.resolve(e);return ji(n,r,t)===null||Vi(n,r,t)===null||Gi(n,r,t)===null}function FR(){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 UR(e){let r=YD("sudo",["-n",...e],{encoding:"utf8",stdio:["ignore","pipe","pipe"]});return{ok:r.status===0,stderr:`${r.stderr??""}${r.stdout??""}`.trim()}}function KR(e,r,t){if(!LR(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=UR(["chown","-R",`${n}:${o}`,BR.resolve(e)]);if(s.ok)return{ok:!0,method:"chown_then_rm"};let i=UR(["rm","-rf",BR.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 pu="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 zD(e){let r=e?.code;return r==="EACCES"||r==="EPERM"}function HR(e,r,t={}){if(!qD(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?Jt(n):null,i=e.bytes??Hr(e.path)??void 0,a=t.removePath??JD,l=t.hasForeignOwnedEntry??MR;try{return a(e.path,{recursive:!0,force:!0}),{executed:!0,skipped:!1,bytes:i}}catch(c){if(!zD(c)||!n||!o)return{executed:!1,skipped:!0,skipReason:"remove_failed",error:c.message};let u=l(e.path),d=FR();if(!(d==="force"||d==="auto"&&u))return u?{executed:!1,skipped:!0,skipReason:"foreign_owner",error:`${c.message}; ${pu}`}:{executed:!1,skipped:!0,skipReason:"remove_failed",error:c.message};let m=KR(e.path,n,o);if(m.ok&&m.method==="sudo_rm")return{executed:!0,skipped:!1,bytes:i,privilegedReclaim:!0};if(m.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:`${c.message}; privileged reclaim failed: ${m.error}; ${pu}`}}}function fu(e){let r=e.harnessRoot;return!r||!Uy(e.path,r)?null:{...e,executed:!1,skipped:!0,skipReason:"run_metadata_protected"}}function gu(e,r){let t=fu(e);if(t)return t;let n=HR(e,r);return{...e,bytes:n.bytes??e.bytes,executed:n.executed,skipped:n.skipped,skipReason:n.skipReason,error:n.error}}function jR(e,r){return gu(e,r)}function VR(e,r){return gu(e,r)}function GR(e,r){return gu(e,r)}function YR(e,r){let t=fu(e);if(t)return t;if(!mu(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??Hr(e.path);return $R(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 qR(e,r){let t=fu(e);if(t)return t;if(!mu(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??Hr(e.path);return n&&Z(n,["worktree","remove","--force",e.path],{allowFailure:!0}),mu(e.path)&&$R(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 Yi,readdirSync as qi,statSync as XD}from"node:fs";import fr from"node:path";function hu(e,r){try{let t=XD(e).mtimeMs;return Math.max(0,r-t)}catch{return 0}}function zR(e,r){let t=fr.relative(r,e);return t===""||!t.startsWith("..")&&!fr.isAbsolute(t)}function JR(e,r,t,n){let o=[];for(let s of au){if(s===".next")continue;let i=fr.join(e,s);if(!Yi(i))continue;let a=fr.resolve(i);t.has(a)||zR(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:hu(a,r.now)}))}return o}function XR(e){let r=[],t=new Set;for(let n of e.index.values())e.runIdFilter&&n.runId!==e.runIdFilter||r.push(...JR(n.worktreePath,e,t,{runId:n.runId,worker:n.workerName,repo:n.run.repo}));if(!e.includeOrphans||!Yi(e.worktreesDir))return r;for(let n of qi(e.worktreesDir,{withFileTypes:!0})){if(!n.isDirectory())continue;let o=fr.join(e.worktreesDir,n.name);for(let s of qi(o,{withFileTypes:!0})){if(!s.isDirectory())continue;let i=fr.join(o,s.name);r.push(...JR(i,e,t,{runId:n.name,worker:s.name}))}}return r}function QR(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;Yi(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:hu(a,e.now)})))}if(!t||!Yi(e.worktreesDir))return n;let s=new Set;for(let i of e.index.values())s.add(fr.resolve(i.worktreePath));for(let i of qi(e.worktreesDir,{withFileTypes:!0})){if(!i.isDirectory()||e.runIdFilter&&i.name!==e.runIdFilter)continue;let a=fr.join(e.worktreesDir,i.name),l;try{l=qi(a,{withFileTypes:!0})}catch{continue}for(let c of l){if(!c.isDirectory())continue;let u=fr.resolve(fr.join(a,c.name));o.has(u)||s.has(u)||zR(u,e.harnessRoot)&&(o.add(u),n.push({kind:"remove_worktree",path:u,bytes:null,runId:i.name,worker:c.name,ageMs:hu(u,e.now)}))}}return n}import{existsSync as rv,readdirSync as ZR,statSync as QD}from"node:fs";import Rn from"node:path";var ZD=[{dirName:"node_modules",kind:"remove_node_modules"},{dirName:".next",kind:"remove_next_cache"}];function eM(e,r){try{let t=QD(e).mtimeMs;return Math.max(0,r-t)}catch{return 0}}function rM(e,r){let t=Rn.relative(r,e);return t===""||!t.startsWith("..")&&!Rn.isAbsolute(t)}function tM(e,r,t,n,o,s){if(!rv(n))return;let i=Rn.resolve(n);r.has(i)||rM(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:eM(i,t.now)}))}function ev(e,r,t,n,o){for(let s of ZD)tM(e,r,t,Rn.join(n,s.dirName),s.kind,o)}function tv(e){let r=[],t=new Set;for(let n of e.index.values())e.runIdFilter&&n.runId!==e.runIdFilter||ev(r,t,e,n.worktreePath,{runId:n.runId,worker:n.workerName,repo:n.run.repo});if(!e.includeOrphans||!rv(e.worktreesDir))return r;for(let n of ZR(e.worktreesDir,{withFileTypes:!0})){if(!n.isDirectory()||e.runIdFilter&&n.name!==e.runIdFilter)continue;let o=Rn.join(e.worktreesDir,n.name),s;try{s=ZR(o,{withFileTypes:!0})}catch{continue}for(let i of s){if(!i.isDirectory())continue;let a=Rn.join(o,i.name);ev(r,t,e,a,{runId:n.name,worker:i.name})}}return r}de();import{existsSync as nv,statSync as nM}from"node:fs";import gr from"node:path";function oM(e,r){try{let t=nM(e).mtimeMs;return Math.max(0,r-t)}catch{return 0}}function sM(e){let r=[],t=null;for(let n of e.split(`
181
- `)){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 iM(e,r){let t=gr.relative(gr.resolve(r),gr.resolve(e));return t!==""&&!t.startsWith("..")&&!gr.isAbsolute(t)}var aM=200;function ov(e){if(!e.includeOrphans||!nv(e.worktreesDir))return[];let r=new Set;for(let s of e.index.values())s.run.repo&&r.add(gr.resolve(s.run.repo));let t=new Set;for(let s of e.index.values())t.add(gr.resolve(s.worktreePath));let n=[],o=new Set;for(let s of r){let i=0,a;try{a=Z(s,["worktree","list","--porcelain"],{allowFailure:!0})}catch{continue}let l=sM(a);for(let c of l){if(i>=aM)break;let u=gr.resolve(c.path);if(u===gr.resolve(s)||!iM(u,e.worktreesDir)||t.has(u)||o.has(u)||!nv(u))continue;let p=gr.relative(e.worktreesDir,u).split(gr.sep),m=p[0],f=p[1]??"unknown";o.add(u),i+=1,n.push({kind:"remove_worktree",path:u,bytes:null,runId:m,worker:f,repo:s,ageMs:oM(u,e.now)})}}return n}B();O();import Fo from"node:path";function sv(e,r){let t=Fo.resolve(r),n=new Map;for(let[o,s]of e){let i=s.harnessRoot?Fo.resolve(s.harnessRoot):null;i&&i!==t||n.set(o,s)}return n}function iv(e){let r=new Map;for(let t of Ws(e))for(let n of Object.keys(t.workers||{})){let o=Fo.join(Qn(e,t.id),"workers",x(n),"worker.json"),s=I(o,void 0);s?.worktreePath&&r.set(Fo.resolve(s.worktreePath),{harnessRoot:e,worktreePath:Fo.resolve(s.worktreePath),runId:t.id,workerName:n,run:t,worker:s})}return r}function Ko(e){let r=process.env[e];return r==="1"||r==="true"||r==="yes"}function Pt(e,r){let t=process.env[e];if(!t)return r;let n=Number(t);return Number.isFinite(n)&&n>=0?n:r}function yu(e={}){let r=e.execute===!0||e.execute!==!1&&Ko("KYNVER_CLEANUP_EXECUTE"),t=e.finalizeStaleRuns!==!1&&!Ko("KYNVER_CLEANUP_SKIP_FINALIZE"),n=e.nodeModulesAgeMs??Pt("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??Pt("KYNVER_CLEANUP_WORKTREES_AGE_MS",0),i=e.terminalWorktreesAgeMs??Pt("KYNVER_CLEANUP_TERMINAL_WORKTREES_AGE_MS",216e5),a=e.runDirectoriesAgeMs??Pt("KYNVER_CLEANUP_RUN_DIRECTORIES_AGE_MS",36e5),l=e.maxActionsPerSweep??Pt("KYNVER_CLEANUP_MAX_ACTIONS_PER_SWEEP",120),c=e.includeOrphans===!0||Ko("KYNVER_CLEANUP_INCLUDE_ORPHANS"),d=Ko("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&&!Ko("KYNVER_CLEANUP_SKIP_BYTE_ACCOUNTING"),m=Pt("KYNVER_CLEANUP_STORAGE_ENTRY_CAP",2e3),f=e.storagePerRunEntryCap!==void 0?e.storagePerRunEntryCap:p&&m>0?m:null,y=Pt("KYNVER_CLEANUP_BYTE_ENTRY_CAP",2e3),k=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(l)&&l>0?Math.floor(l):120,includeOrphans:c,runIdFilter:d?String(d):void 0,accountBytes:p,storagePerRunEntryCap:f,byteAccountingEntryCap:k}}function uv(e){let r=process.env.KYNVER_CLEANUP_SCOPE==="all",t=Number(process.env.KYNVER_CLEANUP_WORKTREES_AGE_MS),n=r?Number.isFinite(t)&&t>0?t:6048e5:Number.isFinite(t)&&t>0?t:0;return yu({runIdFilter:r?void 0:e,worktreesAgeMs:n,terminalWorktreesAgeMs:r?216e5:void 0,runDirectoriesAgeMs:r?36e5:void 0,includeOrphans:r?!0:void 0,finalizeStaleRuns:!0,accountBytes:!0,scanDependencyCaches:!0})}de();import{existsSync as Ru,statSync as cM}from"node:fs";import At from"node:path";O();var dv=1800*1e3;function uM(e,r){let t=At.relative(r,e);return t===""||!t.startsWith("..")&&!At.isAbsolute(t)}function dM(e,r,t){if(!Ru(e))return!1;try{let n=r-cM(e).mtimeMs;return Number.isFinite(n)&&n>=0&&n<t}catch{return!1}}function vu(e){if(!e.runId||!e.workerName)return!1;let r=e.now??Date.now(),t=e.heartbeatFreshMs??dv,n=At.resolve(e.harnessRoot,"runs"),o=At.resolve(n,e.runId,"workers",e.workerName);if(!uM(o,n))return!1;let s=I(At.join(o,"worker.json"),void 0);return s&&yn(s,r,t)?!0:s?!1:dM(At.join(o,"heartbeat.jsonl"),r,t)}function pv(e){let r=e.now??Date.now(),t=e.heartbeatFreshMs??dv;if(!Ru(e.worktreePath))return null;if(e.runId&&e.workerName&&vu(e))return"active_worker";let n=At.join(e.worktreePath,".git");if(!Ru(n))return null;let o=ne(e.worktreePath,["status","--porcelain"]);if(o.status!==0)return"pr_or_unmerged_commits";let s=o.stdout.split(`
182
- `).map(c=>c.trim()).filter(c=>c.length>0);if($e(s).length>0)return"dirty_worktree";let i=ne(e.worktreePath,["rev-list","--count","@{u}..HEAD"]);if(i.status===0){let c=Number(i.stdout.trim());if(Number.isFinite(c)&&c>0)return"pr_or_unmerged_commits"}let a=ne(e.worktreePath,["rev-list","--count","origin/main..HEAD"]);if(a.status!==0)return i.status!==0?"pr_or_unmerged_commits":null;let l=Number(a.stdout.trim());return Number.isFinite(l)&&l>0?"pr_or_unmerged_commits":null}Ze();import{existsSync as pM,readdirSync as mv,statSync as mM}from"node:fs";import fM from"node:path";function fv(e={}){let r=he(e.harnessRoot??Ue()),t=Jt(r),n=e.now??Date.now(),o=new Date(n).toISOString();if(!pM(t))return{harnessRoot:r,worktreesDir:t,worktreesBytes:0,runCount:0,workerCount:0,oldestRunAt:null,scannedAt:o};let s=0,i=0,a=0,l=null,c;try{c=mv(t,{withFileTypes:!0})}catch{return{harnessRoot:r,worktreesDir:t,worktreesBytes:null,runCount:0,workerCount:0,oldestRunAt:null,scannedAt:o}}for(let u of c){if(!u.isDirectory())continue;i+=1;let d=fM.join(t,u.name);try{let p=mM(d);l=l===null?p.mtimeMs:Math.min(l,p.mtimeMs)}catch{}try{for(let p of mv(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 m=Hr(d,p);m===null?s=null:s+=m}}}return{harnessRoot:r,worktreesDir:t,worktreesBytes:s,runCount:i,workerCount:a,oldestRunAt:l===null?null:new Date(l).toISOString(),scannedAt:o}}Ze();import{existsSync as gM}from"node:fs";import{homedir as hM}from"node:os";import gv from"node:path";var kM=["/var/tmp/kynver-harness",gv.join(hM(),".openclaw","harness")];function bu(e,r,t){if(!t?.trim())return;let n=he(t.trim());e.has(n)||(e.add(n),r.push(n))}function yM(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 hv(e={}){let r=new Set,t=[];bu(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??[])bu(r,t,o);if(yM(e))for(let o of kM){let s=gv.resolve(o);!r.has(s)&&gM(s)&&bu(r,t,s)}return t}Wn();function RM(e){let r=process.env[e];return r==="1"||r==="true"||r==="yes"}function vM(e,r){let t=process.env[e];if(!t)return r;let n=Number(t);return Number.isFinite(n)?n:r}function kv(e={}){let r=e.diskPath?.trim()||process.env.KYNVER_DISK_GUARD_PATH?.trim()||"/",t=vM("KYNVER_DISK_GUARD_MAX_USED_PERCENT",75),n=Gr({...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 yv(e,r){if(!r.pressured)return e;let t=e.execute||!RM("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}}os();import{unlinkSync as bM}from"node:fs";function Ji(e){let r=process.env[e];return r==="1"||r==="true"||r==="yes"}function Rv(e,r){let t=process.env[e];if(!t)return r;let n=Number(t);return Number.isFinite(n)?n:r}function SM(e,r,t){return e.length===0?[]:t?[...e]:e.length<=r?[]:e.slice(r)}function vv(e={}){let r=e.execute===!0||Ji("KYNVER_WSL_CRASH_DUMP_EXECUTE")||Ji("KYNVER_CLEANUP_EXECUTE"),t=e.purgeAll===!0||Ji("KYNVER_WSL_CRASH_DUMP_PURGE_ALL"),n=Math.max(0,e.keepNewest??Rv("KYNVER_WSL_CRASH_DUMP_KEEP_NEWEST",t?0:1)),o=Ut({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=SM(o.dumps,n,t),i=[],a=[],l=0;for(let c of s){if(!r){a.push({path:c.path,reason:"dry_run"});continue}try{bM(c.path),i.push({path:c.path,bytes:c.bytes,name:c.name}),l+=c.bytes}catch(u){a.push({path:c.path,reason:u.message})}}return{observation:o,execute:r,keepNewest:n,removed:i,removedBytes:l,skipped:a}}function bv(e){return e?Ji("KYNVER_WSL_CRASH_DUMP_CLEANUP")||!e.ok?!0:e.dumpCount>Rv("KYNVER_WSL_CRASH_DUMP_KEEP_NEWEST",1):!1}os();function Ve(e,r){if(process.env.KYNVER_CLEANUP_QUIET==="1")return;let t=r?`: ${r}`:"";console.error(`[kynver cleanup] ${e}${t}`)}de();var zi=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=ne(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 wM}from"node:child_process";import{existsSync as xM}from"node:fs";import _M from"node:path";var EM=5e3;function CM(e,r){if(!xM(_M.join(e,".git")))return{status:null,stdout:"",stderr:"",error:"not_a_git_repo"};try{let t=wM("git",r,{windowsHide:!0,cwd:e,encoding:"utf8",timeout:EM}),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 Sv(e){let r=CM(e,["status","--short"]);return r.error==="not_a_git_repo"?[]:r.error==="git_timeout"||r.status!==0?null:r.stdout.split(`
183
- `).map(t=>t.trim()).filter(Boolean)}var Xi=class{cache=new Map;porcelain(r){let t=r,n=this.cache.get(t);if(n!==void 0)return n;let o=Sv(t)??[];return this.cache.set(t,o),o}};var Qi=class{cache=new Map;derive(r){let t=this.cache.get(r.id);if(t!==void 0)return t;let n=xt(r);return this.cache.set(r.id,n),n}};function PM(e){let r={};for(let t of e)r[t.kind]=(r[t.kind]??0)+1;return r}function wv(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:PM(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 AM(e={}){let r=e.harnessRoot?he(e.harnessRoot):Ue(),t=hv({harnessRoot:r}),n=e.now??Date.now();return{harnessRoot:r,scanRoots:t,now:n}}function IM(e){return typeof e=="string"?{reason:e}:e}function vn(e,r,t,n){e.push({path:r,reason:t,...n?{detail:n}:{}})}function Zi(e,r,t){return!r||e.bytes!=null?e:{...e,bytes:Hr(e.path,t)}}function xv(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 OM(e,r){return e.kind==="remove_next_cache"?VR(e,r):jR(e,r)}function TM(e,r,t){return e.kind==="remove_next_cache"?Vi(e.path,r,t):ji(e.path,r,t)}function NM(e){let r=new Map;for(let t of e)for(let[n,o]of iv(t))r.set(n,o);return r}function _v(e,r){return e.runId&&e.worker?Ge.join(r,e.runId,e.worker):Ge.resolve(e.path,"..")}function Ev(e){return e.indexed?!1:vu({harnessRoot:e.harnessRoot,runId:e.candidate.runId,workerName:e.candidate.worker,now:e.now})}function DM(e={}){let r=yu(e),t=kv();r=yv(r,t);let n=AM(e);Ve("scan",`${n.scanRoots.length} harness root(s)`);let o=_R(n.scanRoots,n.now),s=r.finalizeStaleRuns?Wo().map(C=>({runId:C.runId,from:C.from,to:C.to})):[];s.length>0&&Ve("finalize",`${s.length} stale run(s) marked terminal`),Ve("index","building worktree index");let i=NM(n.scanRoots);Ve("index",`${i.size} indexed worktree(s)`);let a={runTerminalCache:new Qi,gitStatusCache:new Xi,gitRevCache:new zi},l=[],c=[],u=new Set,d=r.maxActionsPerSweep,p=()=>c.length>=d;for(let C of n.scanRoots){if(p())break;Ve("root",C);let re=Ge.join(C,"worktrees"),ke=sv(i,C),Ye={harnessRoot:C,worktreesDir:re,nodeModulesAgeMs:r.nodeModulesAgeMs,worktreesAgeMs:r.worktreesAgeMs,includeOrphans:r.includeOrphans,runIdFilter:r.runIdFilter,index:ke,now:n.now},hr=r.scanDependencyCaches?tv(Ye):[];Ve("dependency",r.scanDependencyCaches?`${hr.length} cache candidate(s) at ${C}`:"skipped (worktree-only sweep)");let $r=0;for(let F of hr){if(p())break;$r+=1,$r%50===0&&Ve("dependency",`${$r}/${hr.length} evaluated`);let D=Ge.resolve(F.path);if(u.has(D))continue;u.add(D);let M={...F,path:D},ie=TM(M,C,re);if(ie){vn(l,M.path,ie),c.push({...M,executed:!1,skipped:!0,skipReason:ie});continue}let ye=_v(M,re),Re=ke.get(Ge.resolve(ye))??null,kr=Ev({candidate:M,indexed:Re,harnessRoot:C,now:n.now}),V=du({indexed:Re,includeOrphans:!0,nodeModulesAgeMs:r.nodeModulesAgeMs,ageMs:M.ageMs,worktreePath:ye,activeWorktreePaths:o.activeWorktreePaths,workerFilesystemLive:kr,diskPressure:r.diskPressure,gitStatusCache:a.gitStatusCache});if(V){vn(l,M.path,V),c.push({...M,executed:!1,skipped:!0,skipReason:V});continue}c.push(OM(Zi(M,r.accountBytes,r.byteAccountingEntryCap),r.execute))}if(r.scanDependencyCaches)for(let F of XR(Ye)){if(p())break;let D=Ge.resolve(F.path);if(u.has(D))continue;u.add(D);let M={...F,path:D},ie=Gi(M.path,C,re);if(ie){vn(l,M.path,ie),c.push({...M,executed:!1,skipped:!0,skipReason:ie});continue}let ye=_v(M,re),Re=ke.get(Ge.resolve(ye))??null,kr=Ev({candidate:M,indexed:Re,harnessRoot:C,now:n.now}),V=bR({indexed:Re,includeOrphans:!0,nodeModulesAgeMs:r.nodeModulesAgeMs,ageMs:M.ageMs,worktreePath:ye,activeWorktreePaths:o.activeWorktreePaths,workerFilesystemLive:kr,diskPressure:r.diskPressure,gitStatusCache:a.gitStatusCache});if(V){vn(l,M.path,V),c.push({...M,executed:!1,skipped:!0,skipReason:V});continue}c.push(GR(Zi(M,r.accountBytes,r.byteAccountingEntryCap),r.execute))}let j=[...QR(Ye),...ov(Ye)];Ve("worktrees",`${j.length} candidate(s) at ${C}`);let T=new Set,te=0;for(let F of j){if(p())break;te+=1,te%50===0&&Ve("worktrees",`${te}/${j.length} evaluated`);let D=Ge.resolve(F.path);if(T.has(D))continue;T.add(D);let M={...F,path:D},ie=ke.get(Ge.resolve(M.path))??null,ye=ie?null:pv({worktreePath:M.path,harnessRoot:C,runId:M.runId,workerName:M.worker,now:n.now}),Re=vR({indexed:ie,worktreePath:Ge.resolve(M.path),includeOrphans:r.includeOrphans,worktreesAgeMs:r.worktreesAgeMs,terminalWorktreesAgeMs:r.terminalWorktreesAgeMs,ageMs:M.ageMs,orphanSafety:ye,worktreeRemovalGuard:e.worktreeRemovalGuard,liveness:a,now:n.now,harnessRoot:C,writeSalvageEvidence:r.execute});if(Re){let{reason:kr,detail:V}=IM(Re);vn(l,M.path,kr,V),c.push({...M,executed:!1,skipped:!0,skipReason:kr});continue}c.push(qR(Zi(M,r.accountBytes,r.byteAccountingEntryCap),r.execute))}if(!p()&&r.runDirectoriesAgeMs>=0)for(let F of TR({harnessRoot:C,worktreesDir:re,runDirectoriesAgeMs:r.runDirectoriesAgeMs,runIdFilter:r.runIdFilter,activeGuards:o,now:n.now})){if(p())break;let D=Ge.resolve(F.path);if(u.has(D))continue;u.add(D);let M={...F,path:D},ie=M.runId??Ge.basename(D),ye=OR({harnessRoot:C,runId:ie,runPath:D,ageMs:M.ageMs,runDirectoriesAgeMs:r.runDirectoriesAgeMs,activeGuards:o});if(ye){vn(l,M.path,ye),c.push({...M,executed:!1,skipped:!0,skipReason:ye});continue}c.push(YR(Zi(M,r.accountBytes,r.byteAccountingEntryCap),r.execute))}}let m=0,f=0,y=0,k=0,b=0,g=0;for(let C of c)C.bytes&&(m+=C.bytes),!C.skipped&&!C.executed&&C.bytes&&(y+=C.bytes),C.executed?(b+=1,k+=C.bytes??0,C.kind==="remove_run_directory"&&(f+=1)):C.skipped&&(g+=1,C.skipReason==="dry_run"&&C.bytes&&(y+=C.bytes));let h=r.accountBytes?fv({harnessRoot:n.harnessRoot,now:n.now,perRunEntryCap:r.storagePerRunEntryCap}):void 0,w=Ut(),E=r.execute&&bv(w),S=E?vv({execute:!0}):null,_=w?{observed:!0,execute:E,dumpCount:w.dumpCount,totalBytes:w.totalBytes,removedCount:S?.removed.length??0,removedBytes:S?.removedBytes??0,executables:w.executables,path:w.path,reason:w.reason}:void 0;S&&S.removed.length>0&&(k+=S.removedBytes,b+=S.removed.length,Ve("wsl-crashes",`removed ${S.removed.length} dump(s), ${S.removedBytes} bytes`)),Ve("complete",`${c.length} action(s), ${g} skipped, ${b} removed`);let K=wR(c,l),$=wv({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:c,skips:l,totals:{candidateBytes:m,reclaimableBytes:y,removedBytes:k,removedPaths:b,skippedPaths:g,skipReasons:xv(c,l)},...h?{storage:h}:{},...K.length>0?{preservedLivePaths:K}:{},...f>0?{removedRunDirectories:f}:{},..._?{wslCrashDumps:_}:{}});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:c,skips:l,totals:{candidateBytes:m,reclaimableBytes:y,removedBytes:k,removedPaths:b,skippedPaths:g,skipReasons:xv(c,l)},...h?{storage:h}:{},...K.length>0?{preservedLivePaths:K}:{},...f>0?{removedRunDirectories:f}:{},..._?{wslCrashDumps:_}:{},compactSummary:$}}function Cv(e){let r=uv(e);return DM({execute:r.execute,finalizeStaleRuns:r.finalizeStaleRuns,accountBytes:r.accountBytes,nodeModulesAgeMs:r.nodeModulesAgeMs,worktreesAgeMs:r.worktreesAgeMs,includeOrphans:r.includeOrphans,runIdFilter:r.runIdFilter})}function Pv(){return process.env.KYNVER_PIPELINE_CLEANUP!=="0"}import{readFile as WM}from"node:fs/promises";import{homedir as LM}from"node:os";import It from"node:path";In();var MM={"@kynver-app/runtime":"0.1.83","@kynver-app/openclaw-agent-os":"0.1.43","@kynver-app/mcp-agent-os":"0.3.34"},H9=Object.keys(MM);function Av(e){let r=e.trim().split("-")[0]?.split("+")[0];if(!r)return null;let t=r.split(".");if(t.length<1||t.length>3)return null;let n=t.map(o=>Number.parseInt(o,10));if(n.some(o=>!Number.isFinite(o)||o<0))return null;for(;n.length<3;)n.push(0);return[n[0],n[1],n[2]]}function Iv(e,r){let t=Av(e),n=Av(r);if(!t||!n)return 0;for(let o=0;o<3;o+=1){if(t[o]>n[o])return 1;if(t[o]<n[o])return-1}return 0}var BM=["@kynver-app/runtime","@kynver-app/openclaw-agent-os","@kynver-app/mcp-agent-os"];function bn(e){let r=e?.trim();return r||null}function UM(e){return[...new Set(e.filter(r=>!!r))]}function FM(){let e=LM(),r=bn(process.env.KYNVER_OPENCLAW_NPM_ROOT)??bn(process.env.OPENCLAW_NPM_ROOT)??It.join(e,".openclaw","npm"),t=bn(process.env.KYNVER_NPM_GLOBAL_ROOT)??bn(process.env.KYNVER_NPM_GLOBAL_MODULES_ROOT)??(bn(process.env.NPM_CONFIG_PREFIX)?It.join(bn(process.env.NPM_CONFIG_PREFIX),"lib","node_modules"):It.join(e,".npm-global","lib","node_modules"));return UM([It.join(r,"lib","node_modules"),It.join(r,"node_modules"),t.endsWith("node_modules")?t:It.join(t,"lib","node_modules")])}async function KM(e){try{let r=JSON.parse(await WM(e,"utf8"));return typeof r.version=="string"&&r.version.trim()?r.version.trim():null}catch{return null}}function HM(e){let r=FM(),t=new Set,n=[];for(let o of r){let s=It.join(o,e,"package.json");t.has(s)||(t.add(s),n.push(s))}return n}async function Ov(e=new Date().toISOString()){let r={};for(let t of BM){let n=null;for(let o of HM(t)){let s=await KM(o);s&&(!n||Iv(s,n.version)>0)&&(n={version:s,path:o})}n&&(r[t]={version:n.version,observedAt:e,path:n.path})}return r}import{spawnSync as $M}from"node:child_process";var jM=1e4,VM=4*1024*1024,Tv=(e,r,t)=>{try{let n=$M(e,r,{windowsHide:!0,encoding:"utf8",stdio:["ignore","pipe","pipe"],timeout:t?.timeoutMs??jM,maxBuffer:VM});return{ok:n.status===0,stdout:typeof n.stdout=="string"?n.stdout:"",stderr:typeof n.stderr=="string"?n.stderr:""}}catch(n){return{ok:!1,stdout:"",stderr:n instanceof Error?n.message:String(n)}}};function ea(e,r,t){return`${e} ${r} ${t}`}function Su(e){let r=e.lastIndexOf("@");if(r<=0||r===e.length-1)return null;let t=e.slice(0,r),n=e.slice(r+1);return!/^[^/\s]+\/[^/\s]+$/.test(t)||!/^[0-9a-f]{7,40}$/i.test(n)?null:{repo:t,sha:n}}function Nv(e){let r=e.trim().match(/[/:]([^/]+\/[^/]+)\/(?:pull|pulls|merge_requests|pull-requests)\/(\d+)/i);if(!r)return null;let t=Number(r[2]);return!Number.isFinite(t)||t<=0?null:{repo:r[1],number:t}}var GM=8e3,YM=30,qM=100,JM=400,zM=3600*1e3,wu=0;function _u(){return Date.now()<wu}function XM(e){let r=`${e.stdout}
184
- ${e.stderr}`.toLowerCase();return r.includes("api rate limit exceeded")||r.includes("rate limit exceeded")||r.includes("secondary rate limit")}function Dv(e){XM(e)&&(wu=Math.max(wu,Date.now()+zM))}function xu(e,r){if(_u())return null;let t=e("gh",["api",...r]);if(!t.ok||!t.stdout.trim())return Dv(t),null;try{return JSON.parse(t.stdout)}catch{return null}}function QM(e,r,t,n){if(_u())return null;let o=e("gh",["pr","view",String(t),"--repo",r,"--json",n.join(",")]);if(!o.ok||!o.stdout.trim())return Dv(o),null;try{return JSON.parse(o.stdout)}catch{return null}}function Eu(e){return _u()?!1:process.env.GITHUB_TOKEN?.trim()||process.env.GH_TOKEN?.trim()?!0:e("gh",["auth","token"]).ok}function Sn(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function ZM(e){return Array.isArray(e)?e.map(r=>Sn(r)).filter(r=>r!==null).slice(0,YM).map(r=>({context:r.context??null,state:r.state??null,target_url:r.target_url??null,description:r.description??null})):[]}function eW(e,r,t){let n=xu(e,[`repos/${r}/commits/${t}/status`]);return n?{state:n.state??null,statuses:ZM(n.statuses)}:null}var Mv={provider:"github",kind:"pr_snapshot",version:"2",isAvailable:Eu,collect(e,r){let t=Nv(e);if(!t)return null;let n=QM(r,t.repo,t.number,["url","title","body","author","state","isDraft","mergedAt","mergeCommit","mergeable","headRefName","headRefOid","headRepositoryOwner","statusCheckRollup","files"]);if(!n)return null;let o=Sn(n.author),s=Sn(n.mergeCommit),i=Sn(n.headRepositoryOwner),a=typeof n.body=="string"?n.body.slice(0,GM):null,l=Array.isArray(n.statusCheckRollup)?n.statusCheckRollup.map(u=>Sn(u)).filter(u=>u!==null).slice(0,qM).map(u=>({name:u.name??u.context??null,status:u.status??u.state??null,conclusion:u.conclusion??null,workflowName:u.workflowName??null,detailsUrl:u.detailsUrl??null})):[],c=Array.isArray(n.files)?n.files.map(u=>Sn(u)).map(u=>typeof u?.path=="string"?u.path.trim():"").filter(Boolean).slice(0,JM):[];return{pull:{html_url:n.url??null,title:n.title??null,body:a,user:{login:o?.login??null},state:typeof n.state=="string"?n.state.toLowerCase():null,draft:n.isDraft??null,merged:!!n.mergedAt,merged_at:n.mergedAt??null,merge_commit_sha:s?.oid??null,mergeable:null,mergeable_state:n.mergeable??null,head:{sha:n.headRefOid??null,ref:n.headRefName??null,repo:{owner:{login:i?.login??null}}}},checkRuns:l,combinedStatus:{state:null,statuses:[]},changedFiles:c}}},Wv={provider:"github",kind:"commit_status",version:"1",isAvailable:Eu,collect(e,r){let t=Su(e);return t?eW(r,t.repo,t.sha):null}},Lv={provider:"github",kind:"branch_reachability",version:"1",isAvailable:Eu,collect(e,r){let t=Su(e);if(!t)return null;let n=xu(r,[`repos/${t.repo}`]),o=typeof n?.default_branch=="string"&&n.default_branch.trim()?n.default_branch.trim():null;if(!o)return null;let s=xu(r,[`repos/${t.repo}/compare/${encodeURIComponent(o)}...${t.sha}`]);if(!s)return null;let i=typeof s.status=="string"?s.status:null;return{defaultBranch:o,compareStatus:i,reachable:i==="identical"||i==="behind"}}};var Pu=[];function Cu(e){Pu.some(r=>r.provider===e.provider&&r.kind===e.kind)||Pu.push(e)}function Bv(e,r){return Pu.find(t=>t.provider===e&&t.kind===r)??null}function Uv(){Cu(Mv),Cu(Wv),Cu(Lv)}var rW=1,tW=25e3;function Fv(e,r={}){Uv();let t=r.run??Tv,n=r.now??(()=>new Date),o=r.maxSubjects??rW,s=Date.now()+(r.deadlineMs??tW),i=new Set,a=e.filter(m=>{let f=ea(m.provider,m.kind,m.subject);return i.has(f)?!1:(i.add(f),!0)}),l=a.length>0?Math.floor(n().getTime()/6e4)%a.length:0,u=a.map((m,f)=>a[(l+f)%a.length]).slice(0,o),d={attempted:0,collected:0,cached:0,items:[],skipped:[]},p=new Map;for(let m of u){let f=ea(m.provider,m.kind,m.subject),y=n(),k=r.cache?.get(f,y)??null;if(k){d.cached+=1,d.collected+=1,d.items.push(k);continue}if(Date.now()>s){d.skipped.push({...m,reason:"budget_exhausted"});continue}let b=Bv(m.provider,m.kind);if(!b){d.skipped.push({...m,reason:"no_recipe"});continue}let g=`${b.provider} ${b.kind}`,h=p.get(g);if(h===void 0&&(h=b.isAvailable(t),p.set(g,h)),!h){d.skipped.push({...m,reason:"provider_unavailable"});continue}if(r.cache?.reserve?.(m,f,n())===!1){d.skipped.push({...m,reason:"budget_exhausted"});continue}d.attempted+=1;let w=b.collect(m.subject,t);if(w==null){d.skipped.push({...m,reason:"collect_failed"});continue}d.collected+=1;let E={provider:m.provider,kind:m.kind,subject:m.subject,payload:w,observedAt:n().toISOString(),collectorVersion:b.version};d.items.push(E),r.cache?.set(f,E,n())}return d}B();O();import aW from"node:path";B();O();import Kv from"node:path";var nW="provider-evidence-wanted.json",oW="provider-evidence-cache.json",sW=600*1e3;function Hv(e){return Kv.join(N(e),nW)}function iW(e){return Kv.join(N(e),oW)}function $v(e){if(!Array.isArray(e))return[];let r=[];for(let t of e){if(!t||typeof t!="object"||Array.isArray(t))continue;let n=t,o=typeof n.provider=="string"?n.provider.trim():"",s=typeof n.kind=="string"?n.kind.trim():"",i=typeof n.subject=="string"?n.subject.trim():"";!o||!s||!i||r.push({provider:o,kind:s,subject:i})}return r}function jv(e){let r=I(Hv(e),null);return $v(r?.wanted)}function Vv(e,r){ue(Hv(e),{savedAt:new Date().toISOString(),wanted:r})}function Gv(e,r={}){let t=r.ttlMs??sW,n=iW(e),s={...I(n,null)?.items??{}},i=!1;return{get(l,c){let u=s[l];if(!u)return null;let d=Date.parse(u.observedAt);return!Number.isFinite(d)||c.getTime()-d>t?(delete s[l],i=!0,null):u},set(l,c){s[l]=c,i=!0},flush(){i&&(ue(n,{savedAt:new Date().toISOString(),items:s}),i=!1)}}}function Yv(e){if(!e||typeof e!="object"||Array.isArray(e))return null;let r=e.providerEvidenceWanted;return Array.isArray(r)?$v(r):null}var lW="provider-evidence-shared-cache.json",cW=6e4,uW=1,dW=1;function Au(e,r){let t=process.env[e];if(!t)return r;let n=Number.parseInt(t,10);return Number.isFinite(n)&&n>=0?n:r}function pW(){return aW.join(le().harnessRoot,lW)}function mW(e){let r=e.toUpperCase().replace(/[^A-Z0-9]+/g,"_"),t=e==="github"?uW:dW;return Au(`KYNVER_PROVIDER_EVIDENCE_${r}_PER_MINUTE`,Au("KYNVER_PROVIDER_EVIDENCE_LIVE_COLLECTS_PER_MINUTE",t))}function qv(){return Au("KYNVER_PROVIDER_EVIDENCE_SHARED_CACHE_TTL_MS",cW)}function fW(e){return Math.floor(e.getTime()/6e4)*6e4}function gW(e){return`${e.provider}:${e.kind}`}function Jv(e,r={}){let t=Gv(e,{ttlMs:r.ttlMs??qv()}),n=r.file??pW(),o=I(n,null),s={...o?.items??{}},i={...o?.budget??{}},a=r.ttlMs??qv(),l=!1;return{get(u,d){let p=t.get(u,d);if(p)return p;let m=s[u];if(!m)return null;let f=Date.parse(m.observedAt);return!Number.isFinite(f)||d.getTime()-f>a?(delete s[u],l=!0,null):(t.set(u,m,d),m)},set(u,d,p){t.set(u,d,p),s[u]=d,l=!0},reserve(u,d,p){let m=mW(u.provider);if(m===0)return!0;let f=gW(u),y=fW(p),k=i[f];return!k||k.windowStartMs!==y?(i[f]={windowStartMs:y,used:1},l=!0,!0):k.used>=m?!1:(k.used+=1,l=!0,!0)},flush(){t.flush(),l&&(ue(n,{savedAt:new Date().toISOString(),items:s,budget:i}),l=!1)}}}O();B();import zv from"node:path";var Xv="mesh-cron-lease.json";function Qv(e){let r=I(zv.join(N(e),Xv),null);return ok(e,r)??r}function Zv(e,r){let t={...r,updatedAt:new Date().toISOString()};ue(zv.join(N(e),Xv),t),nk(e,t)}function eb(e){if(!e||typeof e!="object"||Array.isArray(e))return null;let r=e.response;if(!r||typeof r!="object"||Array.isArray(r))return null;let t=r.meshLiveness;if(!t||typeof t!="object"||Array.isArray(t))return null;let n=t.cronLease;if(!n||typeof n!="object"||Array.isArray(n))return null;let o=n;return{leaseToken:typeof o.leaseToken=="string"?o.leaseToken:null,holderBoxId:typeof o.holderBoxId=="string"?o.holderBoxId:null,authorized:o.authorized===!0,updatedAt:new Date().toISOString()}}function rb(e){let r=Th(),t=Br(e?.env??process.env),n=(e?.now??(()=>new Date))().getTime(),o={};if(t.flags.dispatchReceipts!=="off"){Object.assign(o,Vh());let s=jh({nowMs:n,hasLiveWorker:e?.hasLiveWorker});o["dispatchReceipts.strandedClaimCandidates"]=s.strandedClaimCandidates,t.flags.dispatchReceipts==="enforce"&&Object.assign(o,zy())}return t.flags.planOutbox!=="off"&&Object.assign(o,zk()),t.flags.admission!=="off"&&(Object.assign(o,Jh()),t.flags.admission==="enforce"&&Object.assign(o,Zh())),(t.flags.keeper!=="off"||t.flags.meshLease!=="off"||t.flags.quota!=="off")&&Object.assign(o,ck()),{contractVersion:1,observedAt:new Date(n).toISOString(),state:r.state,schemaVersion:r.schemaVersion,recovered:r.recovered,unavailableClass:r.reason?r.reason.split(":")[0]??null:null,flags:t.flags,flagSources:t.sources,flagWarningCount:t.warnings.length,divergenceCounters:o}}H();import{createHash as tb}from"node:crypto";import{access as hW,mkdir as TQ,readFile as nb,rename as NQ,writeFile as DQ}from"node:fs/promises";import{constants as kW}from"node:fs";import{homedir as Iu}from"node:os";import Ee from"node:path";var yW=/^(?:@[a-z0-9][a-z0-9._-]*\/[a-z0-9][a-z0-9._-]*|[a-z0-9][a-z0-9._-]*)$/i,RW=/^[A-Za-z0-9._:-]{8,128}$/;function vW(){return process.env.KYNVER_MCP_UPDATE_INVENTORY_FILE?.trim()||Ee.join(Iu(),".kynver","mcp-installations.json")}function bW(e){return e==="openclaw"?process.env.KYNVER_OPENCLAW_NPM_ROOT?.trim()||Ee.join(Iu(),".openclaw","npm"):process.env.KYNVER_NPM_GLOBAL_ROOT?.trim()||process.env.NPM_CONFIG_PREFIX?.trim()||Ee.join(Iu(),".npm-global")}function SW(e){let r=Ee.resolve(e);if(Ee.basename(r)!=="node_modules")return r;let t=Ee.dirname(r);return Ee.basename(t)==="lib"?Ee.dirname(t):t}function wW(e,r){return[Ee.join(e,"lib","node_modules",r,"package.json"),Ee.join(e,"node_modules",r,"package.json")]}async function xW(e){try{return await hW(e,kW.R_OK),!0}catch{return!1}}async function _W(e=vW()){let r;try{r=JSON.parse(await nb(e,"utf8"))}catch{return[]}if(r.version!==1||!Array.isArray(r.installations)||r.installations.length>100)throw new Error("invalid MCP installation inventory");return r.installations.map(t=>{if(!t||!RW.test(t.inventoryKey)||!yW.test(t.packageName)||!["kynver","openclaw"].includes(t.prefix))throw new Error("invalid adopted MCP installation");if(t.packageName.includes("..")||t.packageName.includes("%"))throw new Error("invalid adopted MCP package identity");if(t.connectionId&&t.connectionId.length>128)throw new Error("invalid connection identity");if(t.binName&&!/^[A-Za-z0-9._-]{1,80}$/.test(t.binName))throw new Error("invalid MCP bin name");let n=t.envAllowlist??[];if(!Array.isArray(n)||n.length>32||n.some(o=>!/^[A-Z][A-Z0-9_]{1,80}$/.test(o)))throw new Error("invalid MCP environment allow-list");return{...t,envAllowlist:[...new Set(n)],lifecycle:t.lifecycle??"runtime_stdio"}})}function EW(e,r,t){if(typeof e.bin=="string")return Ee.join(t,e.bin);if(!e.bin||typeof e.bin!="object"||Array.isArray(e.bin))return null;let n=e.bin,o=r.binName??(Object.keys(n).length===1?Object.keys(n)[0]:void 0),s=o?n[o]:null;return typeof s=="string"&&!Ee.isAbsolute(s)&&!s.split(/[\\/]/).includes("..")?Ee.join(t,s):null}function CW(e){return tb("sha256").update(JSON.stringify({inventoryKey:e.inventoryKey,connectionId:e.connectionId,packageName:e.packageName,managerKind:e.managerKind,sourceKind:e.sourceKind,installedVersion:e.installedVersion,nodeVersion:e.nodeVersion,policyChannel:e.policyChannel,executionConfigDigest:e.executionConfigDigest,capabilities:[...e.capabilities].sort()})).digest("hex")}async function PW(e){let r=[];for(let t of e){let n=SW(bW(t.prefix)),o=(await Promise.all(wW(n,t.packageName).map(async m=>({candidate:m,ok:await xW(m)})))).find(m=>m.ok)?.candidate;if(!o)continue;let s=JSON.parse(await nb(o,"utf8"));if(s.name!==t.packageName||typeof s.version!="string"||!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(s.version))continue;let i=Ee.dirname(o),a=EW(s,t,i),l=t.packageName==="@kynver-app/runtime",c=t.lifecycle??"runtime_stdio",u=tb("sha256").update(JSON.stringify({prefix:n,binName:t.binName??null,envAllowlist:[...t.envAllowlist??[]].sort(),lifecycle:c})).digest("hex"),d=l?[]:c==="runtime_stdio"&&a?["update","restart","rollback","verify_mcp"]:["update","rollback"],p={inventoryKey:t.inventoryKey,connectionId:t.connectionId??null,packageName:t.packageName,managerKind:"npm_global",sourceKind:"configured_stdio",installedVersion:s.version,nodeVersion:process.versions.node,policyChannel:"latest",executionConfigDigest:u,capabilities:d};r.push({report:{...p,displayName:t.displayName?.trim()||t.packageName,inventoryFingerprint:CW(p),capabilityExplanation:l?"Runtime self-update requires a supervisor-owned durable handoff and is not enabled by this adapter.":c==="runtime_stdio"&&a?"The authorized runtime can install, start, and verify this configured stdio package.":"The package can be installed, but its external supervisor must restart and verify it."},local:{prefix:n,packageJsonPath:o,packageDir:i,binPath:a,envAllowlist:t.envAllowlist??[],lifecycle:c}})}return r}async function ob(){return PW(await _W())}import{createHash as AW,createHmac as IW,timingSafeEqual as OW}from"node:crypto";function Ou(e){let r=e.trim().split(".");return r.length!==3||r[0]!=="krc1"||!r[1]||!r[2]?null:{tokenId:r[1],tokenHash:AW("sha256").update(`krc1.${r[1]}.${r[2]}`,"utf8").digest("hex")}}function sb(e,r,t){let n=Ou(r);if(!n||e.algorithm!=="hmac-sha256-runner-v1"||e.keyId!==n.tokenId)return!1;let o=Date.parse(e.claims.expiresAt);if(e.claims.version!==1||e.claims.agentOsId!==t||!Number.isFinite(o)||o<=Date.now()||o>Date.now()+10*6e4||![null,"installing","restarting","verifying"].includes(e.claims.resumePhase))return!1;let s=IW("sha256",Buffer.from(n.tokenHash,"hex")).update(JSON.stringify(e.claims),"utf8").digest(),i=Buffer.from(e.signature,"base64url");return i.length===s.length&&OW(i,s)}aa();vr();import{createHash as TW}from"node:crypto";import{access as Tu,mkdtemp as NW,readFile as ub,rm as DW}from"node:fs/promises";import{constants as Nu}from"node:fs";import{tmpdir as MW}from"node:os";import wn from"node:path";import{spawn as WW}from"node:child_process";import{Client as LW}from"@modelcontextprotocol/sdk/client/index.js";import{StdioClientTransport as BW}from"@modelcontextprotocol/sdk/client/stdio.js";var Du="https://registry.npmjs.org",ib=512*1024,Mu=2*6e4,UW=2e4;function db(){return"npm"}function ab(e,r){return Buffer.byteLength(e)>=ib?e:(e+r.toString("utf8")).slice(0,ib)}function FW(e){let r=process.env.KYNVER_MCP_UPDATE_NPM_CACHE?.trim(),t=r&&wn.isAbsolute(r)?r:e,n={PATH:process.env.PATH,SystemRoot:process.env.SystemRoot,TEMP:process.env.TEMP,TMP:process.env.TMP,npm_config_registry:Du,npm_config_audit:"false",npm_config_fund:"false",npm_config_update_notifier:"false",npm_config_cache:t};return Object.fromEntries(Object.entries(n).filter(o=>typeof o[1]=="string"))}async function pb(e,r,t=Mu,n){return new Promise((o,s)=>{let i,a;try{[i,a]=pe(e,r)}catch(m){s(m);return}let l=WW(i,a,{shell:!1,windowsHide:!0,detached:ce(),env:FW(n),stdio:["ignore","pipe","pipe"]}),c="",u="",d=!1;l.stdout.on("data",m=>{c=ab(c,m)}),l.stderr.on("data",m=>{u=ab(u,m)});let p=setTimeout(()=>{d=!0,l.pid&&Me(l.pid,"SIGKILL")},t);l.once("error",m=>{clearTimeout(p),s(m)}),l.once("close",m=>{clearTimeout(p),d?s(new Error("process_timeout")):o({code:m,stdout:c,stderr:u})})})}function KW(e,r){let[t,n]=r.split("-",2);return!n||!["sha256","sha384","sha512"].includes(t)?!1:TW(t).update(e).digest("base64")===n}async function HW(e,r,t,n){let o=await pb(db(),["pack",`${e}@${r}`,"--json","--pack-destination",n,`--registry=${Du}`,"--ignore-scripts"],Mu,wn.join(n,"npm-cache"));if(o.code!==0)throw new Error("artifact_download_failed");let s;try{s=JSON.parse(o.stdout)}catch{throw new Error("artifact_receipt_invalid")}let i=s[0]?.filename;if(typeof i!="string"||wn.basename(i)!==i)throw new Error("artifact_receipt_invalid");let a=wn.join(n,i);if(!KW(await ub(a),t))throw new Error("artifact_integrity_mismatch");return a}async function $W(e,r,t){if((await pb(db(),["install","--global","--prefix",e,r,`--registry=${Du}`,"--no-audit","--fund=false"],Mu,t)).code!==0)throw new Error("package_install_failed")}async function mb(e){let r=JSON.parse(await ub(e.local.packageJsonPath,"utf8"));if(r.name!==e.report.packageName||typeof r.version!="string")throw new Error("installed_identity_mismatch");return r.version}function jW(e){let r={};for(let t of["PATH","SystemRoot","TEMP","TMP",...e]){let n=process.env[t];n!==void 0&&(r[t]=n)}return r}async function lb(e){if(!e.local.binPath)throw new Error("mcp_binary_missing");await Tu(e.local.binPath,Nu.X_OK).catch(async()=>Tu(e.local.binPath,Nu.R_OK));let r=new BW({command:e.local.binPath,args:[],env:jW(e.local.envAllowlist),stderr:"pipe"}),t=new LW({name:"kynver-managed-update-verifier",version:"1.0.0"}),n;try{await Promise.race([t.connect(r),new Promise((s,i)=>{n=setTimeout(()=>i(new Error("mcp_handshake_timeout")),UW)})]);let o=await t.listTools();return{toolCount:Array.isArray(o.tools)?o.tools.length:0}}finally{n&&clearTimeout(n),await t.close().catch(()=>{})}}async function cb(e,r,t,n,o){let s=await NW(wn.join(MW(),"kynver-mcp-update-"));try{let i=await HW(r,t,n,s);if(await o(),await $W(e.local.prefix,i,wn.join(s,"npm-cache")),await mb(e)!==t)throw new Error("installed_version_mismatch")}finally{await DW(s,{recursive:!0,force:!0})}}async function fb(e,r,t,n={}){if(typeof process.getuid=="function"&&process.getuid()===0)throw new Error("root_execution_refused");if(e.report.inventoryKey!==r.inventoryKey||e.report.inventoryFingerprint!==r.inventoryFingerprint||e.report.packageName!==r.packageName)throw new Error("local_inventory_mismatch");if(r.packageName==="@kynver-app/runtime")throw new Error("runtime_self_update_requires_supervisor");await t("preflight"),await Tu(e.local.prefix,Nu.W_OK).catch(()=>{throw new Error("npm_prefix_not_writable")});let o=await mb(e),s=r.resumePhase!==null&&o===r.targetVersion,i=s&&n.recoveryVerifiedTargetInstalled===!0;if(!i&&o!==r.installedVersion&&!s)throw new Error("installed_version_changed");try{if(i?await t("installing"):(await cb(e,r.packageName,r.targetVersion,r.targetIntegrity,async()=>{await t("installing"),await n.beforePackageMutation?.()}),await n.onTargetInstalled?.()),e.local.lifecycle!=="runtime_stdio")return{outcome:"manual_restart_required",observedVersion:r.targetVersion,handshakeVerified:!1,toolCount:null,failureCode:"external_supervisor_restart_required"};await t("restarting"),await t("verifying");let a=await lb(e);return{outcome:"succeeded",observedVersion:r.targetVersion,handshakeVerified:!0,toolCount:a.toolCount}}catch(a){let l=a instanceof Error?a.message:"update_failed";if(l==="progress_rejected")throw a;if(!r.rollbackIntegrity)return{outcome:"failed",observedVersion:null,handshakeVerified:!1,toolCount:null,failureCode:l};await n.beforePackageMutation?.();try{if(await cb(e,r.packageName,r.installedVersion,r.rollbackIntegrity,async()=>{await n.beforePackageMutation?.()}),e.local.lifecycle==="runtime_stdio"){let c=await lb(e);return{outcome:"rollback_succeeded",observedVersion:r.installedVersion,handshakeVerified:!0,toolCount:c.toolCount,failureCode:l}}return{outcome:"manual_restart_required",observedVersion:r.installedVersion,handshakeVerified:!1,toolCount:null,failureCode:l}}catch(c){if(c instanceof Error&&c.message==="progress_rejected")throw c;return{outcome:"rollback_failed",observedVersion:null,handshakeVerified:!1,toolCount:null,failureCode:l}}}}import{randomBytes as Bu}from"node:crypto";import{mkdir as Uu,readFile as Fu,rename as QW,rm as ra,stat as ZW,writeFile as Rb}from"node:fs/promises";import Ot from"node:path";import{createHmac as VW,timingSafeEqual as GW}from"node:crypto";import{mkdir as YW,readFile as qW,rename as JW,writeFile as zW}from"node:fs/promises";import{homedir as XW}from"node:os";import Wu from"node:path";function Lu(){return process.env.KYNVER_MCP_UPDATE_STATE_ROOT?.trim()||Wu.join(XW(),".kynver","state","mcp-updates")}function gb(e){if(!/^[A-Za-z0-9_-]{8,128}$/.test(e))throw new Error("invalid update operation identity");return Wu.join(Lu(),`${e}.json`)}function hb(e,r){let t=Ou(r);return t?VW("sha256",Buffer.from(t.tokenHash,"hex")).update(JSON.stringify(e),"utf8").digest("base64url"):null}async function kb(e,r){try{let t=JSON.parse(await qW(gb(e),"utf8"));if(t.version!==2||t.operationId!==e||typeof t.integrityMac!="string")return null;let{integrityMac:n,...o}=t,s=hb(o,r);if(!s)return null;let i=Buffer.from(n,"utf8"),a=Buffer.from(s,"utf8");return i.length!==a.length||!GW(i,a)?null:t}catch{return null}}async function yb(e,r){let t=hb(e,r);if(!t)throw new Error("invalid_runner_credential_for_receipt");let n=gb(e.operationId);await YW(Wu.dirname(n),{recursive:!0,mode:448});let o=`${n}.${process.pid}.tmp`;await zW(o,`${JSON.stringify({...e,integrityMac:t},null,2)}
185
- `,{mode:384}),await JW(o,n)}var eL="host-mutation.lock";function vb(){return Ot.join(Lu(),eL)}async function bb(){try{let e=JSON.parse(await Fu(Ot.join(vb(),"owner.json"),"utf8"));return!Number.isSafeInteger(e.pid)||typeof e.acquiredAt!="string"?null:{holder:e.holder==="desktop_update"?"desktop_update":"mcp_update",pid:e.pid,acquiredAt:e.acquiredAt,alive:Sb(e.pid)}}catch{return null}}function Sb(e){if(!Number.isSafeInteger(e)||e<=0)return!0;try{return process.kill(e,0),!0}catch(r){return r.code==="EPERM"}}async function rL(e){try{return await ZW(e),!0}catch(r){if(r.code==="ENOENT")return!1;throw r}}async function wb(){return tL("mcp_update")}async function tL(e){let r=vb(),t=`${r}.reclaiming`;await Uu(Ot.dirname(r),{recursive:!0,mode:448});let n=!1;try{if(await rL(t))return null;for(let o=0;o<2;o+=1)try{await Uu(r,{mode:448});let s={pid:process.pid,nonce:Bu(18).toString("base64url"),acquiredAt:new Date().toISOString(),holder:e};return await Rb(Ot.join(r,"owner.json"),JSON.stringify(s),{mode:384}),n&&(await ra(t,{recursive:!0,force:!0}),n=!1),{release:async()=>{try{let i=JSON.parse(await Fu(Ot.join(r,"owner.json"),"utf8"));i.pid===s.pid&&i.nonce===s.nonce&&await ra(r,{recursive:!0,force:!0})}catch{}}}}catch(s){if(s.code!=="EEXIST")throw s;if(!n)try{await Uu(t,{mode:448}),n=!0,await Rb(Ot.join(t,"owner.json"),JSON.stringify({pid:process.pid,nonce:Bu(18).toString("base64url"),acquiredAt:new Date().toISOString()}),{mode:384})}catch(l){if(l.code==="EEXIST")return null;throw l}let i=null;try{i=JSON.parse(await Fu(Ot.join(r,"owner.json"),"utf8"))}catch{return null}if(Sb(i.pid))return null;let a=`${r}.stale-${process.pid}-${Bu(8).toString("hex")}`;await QW(r,a),await ra(a,{recursive:!0,force:!0})}return null}finally{n&&await ra(t,{recursive:!0,force:!0})}}function ta(e,r,t){return`${e}/api/agent-os/by-id/${encodeURIComponent(r)}/mcp-updates/${t}`}function nL(e){if(!e||typeof e!="object")return null;let r=e.claim;if(!r||typeof r!="object"||r.waitingForIdle!==!1)return null;let t=r.command;return t&&typeof t=="object"?t:null}function xb(e,r){let t=r.claims;return e.inventoryKey===t.inventoryKey&&e.packageName===t.packageName&&e.installedVersion===t.installedVersion&&e.targetVersion===t.targetVersion&&e.targetIntegrity===t.targetIntegrity&&e.rollbackIntegrity===t.rollbackIntegrity&&e.item.report.inventoryKey===t.inventoryKey&&e.item.report.packageName===t.packageName}function oL(e,r){return{inventoryKey:r.claims.inventoryKey,packageName:r.claims.packageName,installedVersion:r.claims.installedVersion,targetVersion:r.claims.targetVersion,targetIntegrity:r.claims.targetIntegrity,rollbackIntegrity:r.claims.rollbackIntegrity,verifiedTargetInstalled:!1,item:e}}async function _b(e){let r=Q(e.baseUrl),t=await ob();if(t.length===0)return{ok:!0,stage:"not_configured"};let n=await ht(ta(r,e.agentOsId,"inventory"),e.secret,{items:t.map(s=>s.report)});if(!n.ok)return{ok:!1,stage:"inventory",status:n.status};let o=await wb();if(!o){let s=await bb();return{ok:!0,stage:"host_mutation_busy",...s?{heldBy:s.holder}:{}}}try{let s=await ht(ta(r,e.agentOsId,"claim"),e.secret,{activeOwnedSessions:e.activeOwnedSessions});if(!s.ok)return{ok:!1,stage:"claim",status:s.status};let i=nL(s.response);if(!i)return{ok:!0,stage:"idle"};if(!sb(i,e.secret,e.agentOsId))return{ok:!1,stage:"command_auth"};let a=await kb(i.claims.operationId,e.secret);if(a?.terminal&&a.attempt===i.claims.attempt&&a.nonce===i.claims.nonce)return{ok:!0,stage:"already_completed",outcome:a.outcome};let l,c;if(i.claims.resumePhase!==null){if(!a||!xb(a.recovery,i))return{ok:!1,stage:"recovery_receipt_invalid"};c=a.recovery,l={...c.item,report:{...c.item.report,inventoryFingerprint:i.claims.inventoryFingerprint}}}else{let g=t.find(h=>h.report.inventoryKey===i.claims.inventoryKey);if(!g||g.report.inventoryFingerprint!==i.claims.inventoryFingerprint)return{ok:!1,stage:"inventory_changed"};l=g,c=a&&xb(a.recovery,i)?a.recovery:oL(g,i)}let u=a?.acceptedAt??new Date().toISOString(),d=async(g,h,w)=>{await yb({version:2,operationId:i.claims.operationId,attempt:i.claims.attempt,nonce:i.claims.nonce,acceptedAt:u,phase:g,terminal:h,...w?{outcome:w}:{},recovery:c},e.secret)};await d(a?.attempt===i.claims.attempt?a.phase:"claimed",!1);let p="claimed",m=async g=>{if(!(await ht(ta(r,e.agentOsId,`operations/${encodeURIComponent(i.claims.operationId)}/events`),e.secret,{attempt:i.claims.attempt,fenceToken:i.claims.fenceToken,phase:g})).ok)throw new Error("progress_rejected");p=g,await d(g,!1)},f=g=>m(g),y=()=>m(p),k;try{k=await fb(l,i.claims,f,{recoveryVerifiedTargetInstalled:c.verifiedTargetInstalled,beforePackageMutation:y,onTargetInstalled:async()=>{c={...c,verifiedTargetInstalled:!0},await d("target_installed",!1)}})}catch(g){k={outcome:"failed",observedVersion:null,handshakeVerified:!1,toolCount:null,failureCode:g instanceof Error?g.message:"update_failed"}}let b=await ht(ta(r,e.agentOsId,`operations/${encodeURIComponent(i.claims.operationId)}/complete`),e.secret,{attempt:i.claims.attempt,fenceToken:i.claims.fenceToken,...k});return b.ok?(await d(k.outcome,!0,k.outcome),{ok:k.outcome==="succeeded",stage:"complete",outcome:k.outcome}):{ok:!1,stage:"complete",status:b.status,outcome:k.outcome}}finally{await o.release()}}function sL(){let e=process.env.KYNVER_PIPELINE_SWEEP_ENABLED;return e?e==="1"||e.toLowerCase()==="true":!1}async function iL(e,r){let t=q(e),n=[],o=Math.max(0,Number.parseInt(process.env.KYNVER_PIPELINE_COMPLETION_REPLAY_MAX_DEEP_CHECKS_PER_TICK??"0",10)||0),s=0;for(let i of Object.keys(t.workers||{})){let a=I(Eb.join(N(t.id),"workers",x(i),"worker.json"),void 0);if(!a?.taskId||a.localOnly||qr(a))continue;if(ko(a)){n.push({worker:i,ok:!0,taskId:a.taskId??null,skipped:!0});continue}if(s>=o)break;s++;let l=J(a);if(!xe(l))continue;let c=Kt({alive:l.alive,finalResult:l.finalResult,changedFiles:l.changedFiles,gitAncestry:l.gitAncestry});if(!a.dispatched&&!l.finalResult&&!c?.salvageable)continue;let u=await Oo({run:e,name:i,agentOsId:String(r.agentOsId||a.agentOsId||""),...r});n.push({worker:i,ok:u.ok,taskId:a.taskId??null})}return n}async function aL(e,r,t,n,o){let s=Q(n.baseUrl?String(n.baseUrl):void 0),i=await ee(n.secret?String(n.secret):void 0,e,{baseUrl:s}),a=`${s}/api/agent-os/by-id/${encodeURIComponent(e)}/operator/tick`,l=await Ov(),c=Ls(r),u=null;try{let E=jv(r);if(E.length>0){let S=Jv(r);u=Fv(E,{cache:S}),S.flush?.()}else u=null}catch{u=null}try{if(Fr()!=="off"){let E=Vt();qh({liveWorkers:E}),Qh({liveWorkers:E})}else Gh()}catch{}let d=({runId:E,workerName:S})=>{try{let{runsDir:_}=le(),K=Eb.join(Ar(_,x(E)),"workers",x(S),"worker.json"),$=I(K,null);return $?qr($):!1}catch{return!1}};await Qy({agentOsId:e,baseUrl:s,secret:i,hasLiveWorker:d});let p=null;try{p=rb({hasLiveWorker:d})}catch{p=null}let m=null;try{m=cd({control:Wt(e),supervisor:md(),inFlightWorkers:Vt().length})}catch{m=null}let f=Qv(r),y=Qu(),k=await X(a,i,{agentOsId:e,runId:r,ingestHarness:!0,harnessBoardSnapshot:Tc(r),resourceGate:t,boxResourceSnapshot:lR(t,{harnessRunId:r,boxKind:Sr(U())}),packageVersions:l,...o?{harnessCleanup:o}:{},runnerPresence:He({runId:r}),activeHarnessWorkers:c,...f?.leaseToken?{meshCronLeaseToken:f.leaseToken}:{},...p?{localRunStore:p}:{},...m?{runtimeControlAck:m}:{},...y?{daemonEventLoop:y}:{},...u&&u.items.length>0?{providerEvidence:u.items}:{}},{agentOsId:e,baseUrl:s}),b=Yv(k.response);if(b)try{Vv(r,b)}catch{}let g=eb(k);if(g)try{Zv(r,g)}catch{}let h=Dh(k);h&&Mh(e,h);let w=id(k);return w&&ld(e,w),{ok:k.ok,httpStatus:k.status,response:k.response,...u?{providerEvidence:{attempted:u.attempted,collected:u.collected,skipped:u.skipped.length}}:{}}}async function Cb(e){let r=String(Rr(String(e.run||""),"--run")),t=String(Rr(String(e.agentOsId||""),"--agent-os-id")),n=e.execute!==!1&&e.execute!=="false";Tc(r);let o=await Fs(t,e),s=Us(o),i=Gn({runId:r,configuredMaxWorkersOverride:s}),a=Pv()?Cv(r):void 0,l=await aL(t,r,i,e,a),c;if(n)try{let C=Q(e.baseUrl?String(e.baseUrl):void 0),re=await ee(e.secret?String(e.secret):void 0,t,{baseUrl:C});c=await _b({agentOsId:t,secret:re,baseUrl:C,activeOwnedSessions:Vt().length})}catch(C){c={ok:!1,stage:"cycle",error:C instanceof Error?C.message:"update cycle failed"}}let u=yh(r,l),d=await kg(r,e),p=await iL(r,e);p.some(C=>C.ok&&!C.skipped)&&oR();let m=Gn({runId:r,configuredMaxWorkersOverride:s}),f=qy(),y=await dR(r,e),k=Iy(m,l),b=k.maxStarts,g=Wt(t),h=ud(g);h&&(b=0);let w=sL()?await cR({run:r,agentOsId:t,pipeline:!0,...e}):{ok:!0,skipped:!0,reason:"pipeline_sweep_disabled"},E=null,S=0,_=Ay(l),K=b;if(n&&K>0&&_.length>0){let C=Math.min(K,_.length),re=await Vc({...e,run:r,agentOsId:t,targetTaskIds:_.join(",")},C),ke=hn(re);S+=ke,K=Math.max(0,K-ke),E={exactTargetTaskIds:_,exact:re,startedCount:S}}if(n&&K>0){let C=await Vc({...e,run:r,agentOsId:t},K),re=hn(C);S+=re,E=E&&typeof E=="object"?{...E,broad:C,startedCount:S}:C}else!n||b<=0?E||(E={ok:!0,skipped:!0,reason:h??(n?m.reason??"no slots or queued work":"execute disabled"),maxStarts:0,dispatchAdvice:k,..._.length?{exactTargetTaskIds:_,exactOnly:!0}:{}}):E&&typeof E=="object"&&(E={...E,broadSkipped:!0,startedCount:S});let $=!k.underutilized&&b===0&&p.length===0&&S===0;return{runId:r,agentOsId:t,execute:n,resourceGate:i,dispatchResourceGate:m,leaseRenewal:d,completedWorkers:p,staleReconcile:f,harnessCleanup:a,planProgressSync:y,completionAckSync:u,operatorTick:l,mcpUpdates:c,sweep:w,dispatchAdvice:k,dispatch:E,idle:$,runtimeControl:g?{desiredState:g.desiredState,policyVersion:g.policyVersion}:null}}Pn();Gt();Pn();function Pb(e){return Xo(Wt(e))!=="stopped"?null:Vt().length}function Ab(e){if(!e||typeof e!="object")return!1;let r=e;return r.type==="tick"&&typeof r.id=="number"&&typeof r.agentOsId=="string"&&!!r.args&&typeof r.args=="object"}function lL(e){e&&(iR({admission:e.admission,ownerKind:e.ownerKind}),pd(e.ownerKind))}async function cL(e,r={}){try{e.instructionBundle&&ed(e.instructionBundle.bundle,e.instructionBundle.source),Xu(e.eventLoopReport);let t=await(r.runTick??Cb)(e.args),n=(r.countInFlightWorkers??Pb)(e.agentOsId);return{type:"result",id:e.id,ok:!0,tick:JSON.parse(JSON.stringify(t)),inFlightWorkers:n}}catch(t){return{type:"result",id:e.id,ok:!1,error:t instanceof Error?t.message:String(t)}}}function Ib(e,r,t={}){lL(r);let n=Promise.resolve();e.on("message",o=>{Ab(o)&&(n=n.then(async()=>{e.postMessage(await cL(o,t))}))})}Ob?Ib(Ob,uL):(console.error(JSON.stringify({event:"daemon_tick_thread_misuse",error:"must run as a worker thread"})),process.exitCode=1);
180
+ `),o}var AD=new Set(["completion_blocked","dirty_worktree","pr_or_unmerged_commits","landing_blocked"]);function ID(e){e.writeSalvageEvidence&&AD.has(e.skipReason)&&(Hr(e.indexed,e.now)||yR({harnessRoot:e.harnessRoot,runId:e.indexed.runId,workerName:e.indexed.workerName})||RR({harnessRoot:e.harnessRoot,indexed:e.indexed,skipReason:e.skipReason,status:e.status,now:e.now}))}function OD(e){let{indexed:r,worktreesAgeMs:t,terminalWorktreesAgeMs:n}=e;return r&&(xt.has(r.run.status)||e.liveness&&uu(r,e.liveness)||e.liveness&&xe(cu(r,e.liveness))&&!Hr(r))?n:t}function TD(e){return!e.indexed||e.includeOrphans&&e.worktreesAgeMs<=0?0:OD(e)}function ND(e,r){if(e.harnessRoot?.trim())return $i.resolve(e.harnessRoot);let t=r.worker.workerDir;if(!t)return null;let n=`${$i.sep}runs${$i.sep}`,o=t.indexOf(n);return o<0?null:t.slice(0,o+n.length-1)}function vR(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 l=TD(e);if(n<=0&&!t&&l<=0)return"worktrees_disabled";if(l>0&&o<l)return"below_age_threshold";if(Hr(r,a))return"active_worker";let c=cu(r,e.liveness),u=ND(e,r),d=f=>{if(u)try{ID({indexed:r,harnessRoot:u,skipReason:f,status:c,now:a,writeSalvageEvidence:e.writeSalvageEvidence===!0})}catch{}return f};if(fR(r,c)){let f=d("completion_blocked");if(f)return f}if(lu(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(mR(r,e.liveness,a)||!xe(c))return"run_still_active";if(Uo(c)){let f=d("pr_or_unmerged_commits");if(f)return f}if($e(c.changedFiles).length>0){let f=d("dirty_worktree");if(f)return f}if($t({finalResult:c.finalResult,changedFiles:c.changedFiles,gitAncestry:c.gitAncestry,prUrl:Pt(c.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 du(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($i.resolve(o))||r&&Hr(r)?"active_worker":r&&lu(r,e.gitStatusCache)?"dirty_worktree":null}function bR(e){return du(e)}var SR=new Set(["active_worker","run_still_active","completion_blocked","landing_blocked"]);function wR(e,r){let t=[],n=new Set,o=(s,i,a)=>{let l=`${s}\0${i}`;n.has(l)||t.length>=24||(n.add(l),t.push({path:s,reason:i,...a?{detail:a}:{}}))};for(let s of r)SR.has(s.reason)&&o(s.path,s.reason,s.detail);for(let s of e)!s.skipped||!s.skipReason||SR.has(s.skipReason)&&o(s.path,s.skipReason);return t}import{existsSync as CR,readdirSync as PR,statSync as WD}from"node:fs";import AR from"node:path";B();Ze();import xR from"node:path";O();function MD(e,r){return Rn(e,r)}function _R(e,r=Date.now()){let t=new Set,n=new Set;for(let o of e){for(let s of Ls(o)){let i=!1;for(let a of Object.keys(s.workers||{})){let l=I(xR.join(Zn(o,s.id),"workers",x(a),"worker.json"),void 0);if(!l?.worktreePath)continue;let c=xR.resolve(l.worktreePath);MD(l,r)&&(i=!0,t.add(c))}i&&n.add(`${o}\0${s.id}`)}for(let s of Hy(o))n.add(s)}return{activeWorktreePaths:t,liveRunKeys:n}}function ER(e,r,t,n){return t?n.has(`${r}\0${t}`):!1}O();function LD(e,r){try{let t=WD(e).mtimeMs;return Math.max(0,r-t)}catch{return 0}}function BD(e,r){let t=AR.join(e,"runs",r,"run.json");return CR(t)?I(t,null):null}function IR(e){try{return PR(e).length===0}catch{return!1}}function OR(e){let{harnessRoot:r,runId:t,runPath:n,ageMs:o,runDirectoriesAgeMs:s,activeGuards:i}=e;if(ER(n,r,t,i.liveRunKeys)||!IR(n))return"run_still_active";let a=BD(r,t);return a&&!xt.has(a.status)&&!_t(a)?"run_still_active":s>0&&o<s?"below_age_threshold":null}function TR(e){if(!CR(e.worktreesDir))return[];let r=[],t;try{t=PR(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=AR.join(e.worktreesDir,o);IR(s)&&r.push({kind:"remove_run_directory",path:s,bytes:null,harnessRoot:e.harnessRoot,runId:o,ageMs:LD(s,e.now)})}return r}de();import{existsSync as mu,rmSync as $R}from"node:fs";import{execFileSync as UD}from"node:child_process";import{existsSync as NR,readdirSync as FD,statSync as KD}from"node:fs";import HD from"node:path";var $D=2500;function jD(e,r=$D){if(!NR(e))return 0;try{let n=UD("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 $r(e,r=5e4){if(!NR(e))return 0;let t=jD(e);if(t!==null)return t;let n=0,o=0,s=[e];for(;s.length>0;){let i=s.pop(),a;try{a=FD(i)}catch{continue}for(let l of a){if(o++>r)return null;let c=HD.join(i,l),u;try{u=KD(c)}catch{continue}u.isDirectory()?s.push(c):n+=u.size}}return n}import{existsSync as qD,rmSync as JD}from"node:fs";Ze();import{lstatSync as VD,readdirSync as GD}from"node:fs";function DR(e){try{let r=VD(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 MR(e,r=32){let t=DR(e);if(!t)return!1;if(t.foreign)return!0;try{let n=GD(e),o=0;for(let s of n){if(o>=r)break;let i=`${e.replace(/\/$/,"")}/${s}`,a=DR(i);if(o+=1,a?.foreign)return!0}}catch{}return!1}import{spawnSync as YD}from"node:child_process";import BR from"node:path";import je from"node:path";function WR(e,r,t,n){let o=je.resolve(e),s=`${je.sep}${n}`,i=o.endsWith(s)?o:null;if(!i)return"path_outside_harness";let a=je.relative(t,i);if(a.startsWith("..")||je.isAbsolute(a))return"path_outside_harness";let l=a.split(je.sep);return l.length<3||l[l.length-1]!==n||!o.startsWith(je.resolve(r))?"path_outside_harness":null}function ji(e,r,t){return WR(e,r,t,"node_modules")}function Vi(e,r,t){return WR(e,r,t,".next")}function Gi(e,r,t){let n=je.resolve(e),o=je.relative(t,n);return o.startsWith("..")||je.isAbsolute(o)||o.split(je.sep).length<3||!n.startsWith(je.resolve(r))?"path_outside_harness":null}function LR(e,r,t){let n=je.resolve(e);return ji(n,r,t)===null||Vi(n,r,t)===null||Gi(n,r,t)===null}function FR(){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 UR(e){let r=YD("sudo",["-n",...e],{encoding:"utf8",stdio:["ignore","pipe","pipe"]});return{ok:r.status===0,stderr:`${r.stderr??""}${r.stdout??""}`.trim()}}function KR(e,r,t){if(!LR(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=UR(["chown","-R",`${n}:${o}`,BR.resolve(e)]);if(s.ok)return{ok:!0,method:"chown_then_rm"};let i=UR(["rm","-rf",BR.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 pu="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 zD(e){let r=e?.code;return r==="EACCES"||r==="EPERM"}function HR(e,r,t={}){if(!qD(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?zt(n):null,i=e.bytes??$r(e.path)??void 0,a=t.removePath??JD,l=t.hasForeignOwnedEntry??MR;try{return a(e.path,{recursive:!0,force:!0}),{executed:!0,skipped:!1,bytes:i}}catch(c){if(!zD(c)||!n||!o)return{executed:!1,skipped:!0,skipReason:"remove_failed",error:c.message};let u=l(e.path),d=FR();if(!(d==="force"||d==="auto"&&u))return u?{executed:!1,skipped:!0,skipReason:"foreign_owner",error:`${c.message}; ${pu}`}:{executed:!1,skipped:!0,skipReason:"remove_failed",error:c.message};let m=KR(e.path,n,o);if(m.ok&&m.method==="sudo_rm")return{executed:!0,skipped:!1,bytes:i,privilegedReclaim:!0};if(m.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:`${c.message}; privileged reclaim failed: ${m.error}; ${pu}`}}}function fu(e){let r=e.harnessRoot;return!r||!Uy(e.path,r)?null:{...e,executed:!1,skipped:!0,skipReason:"run_metadata_protected"}}function gu(e,r){let t=fu(e);if(t)return t;let n=HR(e,r);return{...e,bytes:n.bytes??e.bytes,executed:n.executed,skipped:n.skipped,skipReason:n.skipReason,error:n.error}}function jR(e,r){return gu(e,r)}function VR(e,r){return gu(e,r)}function GR(e,r){return gu(e,r)}function YR(e,r){let t=fu(e);if(t)return t;if(!mu(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??$r(e.path);return $R(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 qR(e,r){let t=fu(e);if(t)return t;if(!mu(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??$r(e.path);return n&&Z(n,["worktree","remove","--force",e.path],{allowFailure:!0}),mu(e.path)&&$R(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 Yi,readdirSync as qi,statSync as XD}from"node:fs";import gr from"node:path";function hu(e,r){try{let t=XD(e).mtimeMs;return Math.max(0,r-t)}catch{return 0}}function zR(e,r){let t=gr.relative(r,e);return t===""||!t.startsWith("..")&&!gr.isAbsolute(t)}function JR(e,r,t,n){let o=[];for(let s of au){if(s===".next")continue;let i=gr.join(e,s);if(!Yi(i))continue;let a=gr.resolve(i);t.has(a)||zR(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:hu(a,r.now)}))}return o}function XR(e){let r=[],t=new Set;for(let n of e.index.values())e.runIdFilter&&n.runId!==e.runIdFilter||r.push(...JR(n.worktreePath,e,t,{runId:n.runId,worker:n.workerName,repo:n.run.repo}));if(!e.includeOrphans||!Yi(e.worktreesDir))return r;for(let n of qi(e.worktreesDir,{withFileTypes:!0})){if(!n.isDirectory())continue;let o=gr.join(e.worktreesDir,n.name);for(let s of qi(o,{withFileTypes:!0})){if(!s.isDirectory())continue;let i=gr.join(o,s.name);r.push(...JR(i,e,t,{runId:n.name,worker:s.name}))}}return r}function QR(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;Yi(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:hu(a,e.now)})))}if(!t||!Yi(e.worktreesDir))return n;let s=new Set;for(let i of e.index.values())s.add(gr.resolve(i.worktreePath));for(let i of qi(e.worktreesDir,{withFileTypes:!0})){if(!i.isDirectory()||e.runIdFilter&&i.name!==e.runIdFilter)continue;let a=gr.join(e.worktreesDir,i.name),l;try{l=qi(a,{withFileTypes:!0})}catch{continue}for(let c of l){if(!c.isDirectory())continue;let u=gr.resolve(gr.join(a,c.name));o.has(u)||s.has(u)||zR(u,e.harnessRoot)&&(o.add(u),n.push({kind:"remove_worktree",path:u,bytes:null,runId:i.name,worker:c.name,ageMs:hu(u,e.now)}))}}return n}import{existsSync as rv,readdirSync as ZR,statSync as QD}from"node:fs";import vn from"node:path";var ZD=[{dirName:"node_modules",kind:"remove_node_modules"},{dirName:".next",kind:"remove_next_cache"}];function eM(e,r){try{let t=QD(e).mtimeMs;return Math.max(0,r-t)}catch{return 0}}function rM(e,r){let t=vn.relative(r,e);return t===""||!t.startsWith("..")&&!vn.isAbsolute(t)}function tM(e,r,t,n,o,s){if(!rv(n))return;let i=vn.resolve(n);r.has(i)||rM(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:eM(i,t.now)}))}function ev(e,r,t,n,o){for(let s of ZD)tM(e,r,t,vn.join(n,s.dirName),s.kind,o)}function tv(e){let r=[],t=new Set;for(let n of e.index.values())e.runIdFilter&&n.runId!==e.runIdFilter||ev(r,t,e,n.worktreePath,{runId:n.runId,worker:n.workerName,repo:n.run.repo});if(!e.includeOrphans||!rv(e.worktreesDir))return r;for(let n of ZR(e.worktreesDir,{withFileTypes:!0})){if(!n.isDirectory()||e.runIdFilter&&n.name!==e.runIdFilter)continue;let o=vn.join(e.worktreesDir,n.name),s;try{s=ZR(o,{withFileTypes:!0})}catch{continue}for(let i of s){if(!i.isDirectory())continue;let a=vn.join(o,i.name);ev(r,t,e,a,{runId:n.name,worker:i.name})}}return r}de();import{existsSync as nv,statSync as nM}from"node:fs";import hr from"node:path";function oM(e,r){try{let t=nM(e).mtimeMs;return Math.max(0,r-t)}catch{return 0}}function sM(e){let r=[],t=null;for(let n of e.split(`
181
+ `)){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 iM(e,r){let t=hr.relative(hr.resolve(r),hr.resolve(e));return t!==""&&!t.startsWith("..")&&!hr.isAbsolute(t)}var aM=200;function ov(e){if(!e.includeOrphans||!nv(e.worktreesDir))return[];let r=new Set;for(let s of e.index.values())s.run.repo&&r.add(hr.resolve(s.run.repo));let t=new Set;for(let s of e.index.values())t.add(hr.resolve(s.worktreePath));let n=[],o=new Set;for(let s of r){let i=0,a;try{a=Z(s,["worktree","list","--porcelain"],{allowFailure:!0})}catch{continue}let l=sM(a);for(let c of l){if(i>=aM)break;let u=hr.resolve(c.path);if(u===hr.resolve(s)||!iM(u,e.worktreesDir)||t.has(u)||o.has(u)||!nv(u))continue;let p=hr.relative(e.worktreesDir,u).split(hr.sep),m=p[0],f=p[1]??"unknown";o.add(u),i+=1,n.push({kind:"remove_worktree",path:u,bytes:null,runId:m,worker:f,repo:s,ageMs:oM(u,e.now)})}}return n}B();O();import Ko from"node:path";function sv(e,r){let t=Ko.resolve(r),n=new Map;for(let[o,s]of e){let i=s.harnessRoot?Ko.resolve(s.harnessRoot):null;i&&i!==t||n.set(o,s)}return n}function iv(e){let r=new Map;for(let t of Ls(e))for(let n of Object.keys(t.workers||{})){let o=Ko.join(Zn(e,t.id),"workers",x(n),"worker.json"),s=I(o,void 0);s?.worktreePath&&r.set(Ko.resolve(s.worktreePath),{harnessRoot:e,worktreePath:Ko.resolve(s.worktreePath),runId:t.id,workerName:n,run:t,worker:s})}return r}function Ho(e){let r=process.env[e];return r==="1"||r==="true"||r==="yes"}function At(e,r){let t=process.env[e];if(!t)return r;let n=Number(t);return Number.isFinite(n)&&n>=0?n:r}function yu(e={}){let r=e.execute===!0||e.execute!==!1&&Ho("KYNVER_CLEANUP_EXECUTE"),t=e.finalizeStaleRuns!==!1&&!Ho("KYNVER_CLEANUP_SKIP_FINALIZE"),n=e.nodeModulesAgeMs??At("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??At("KYNVER_CLEANUP_WORKTREES_AGE_MS",0),i=e.terminalWorktreesAgeMs??At("KYNVER_CLEANUP_TERMINAL_WORKTREES_AGE_MS",216e5),a=e.runDirectoriesAgeMs??At("KYNVER_CLEANUP_RUN_DIRECTORIES_AGE_MS",36e5),l=e.maxActionsPerSweep??At("KYNVER_CLEANUP_MAX_ACTIONS_PER_SWEEP",120),c=e.includeOrphans===!0||Ho("KYNVER_CLEANUP_INCLUDE_ORPHANS"),d=Ho("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&&!Ho("KYNVER_CLEANUP_SKIP_BYTE_ACCOUNTING"),m=At("KYNVER_CLEANUP_STORAGE_ENTRY_CAP",2e3),f=e.storagePerRunEntryCap!==void 0?e.storagePerRunEntryCap:p&&m>0?m:null,y=At("KYNVER_CLEANUP_BYTE_ENTRY_CAP",2e3),k=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(l)&&l>0?Math.floor(l):120,includeOrphans:c,runIdFilter:d?String(d):void 0,accountBytes:p,storagePerRunEntryCap:f,byteAccountingEntryCap:k}}function uv(e){let r=process.env.KYNVER_CLEANUP_SCOPE==="all",t=Number(process.env.KYNVER_CLEANUP_WORKTREES_AGE_MS),n=r?Number.isFinite(t)&&t>0?t:6048e5:Number.isFinite(t)&&t>0?t:0;return yu({runIdFilter:r?void 0:e,worktreesAgeMs:n,terminalWorktreesAgeMs:r?216e5:void 0,runDirectoriesAgeMs:r?36e5:void 0,includeOrphans:r?!0:void 0,finalizeStaleRuns:!0,accountBytes:!0,scanDependencyCaches:!0})}de();import{existsSync as Ru,statSync as cM}from"node:fs";import It from"node:path";O();var dv=1800*1e3;function uM(e,r){let t=It.relative(r,e);return t===""||!t.startsWith("..")&&!It.isAbsolute(t)}function dM(e,r,t){if(!Ru(e))return!1;try{let n=r-cM(e).mtimeMs;return Number.isFinite(n)&&n>=0&&n<t}catch{return!1}}function vu(e){if(!e.runId||!e.workerName)return!1;let r=e.now??Date.now(),t=e.heartbeatFreshMs??dv,n=It.resolve(e.harnessRoot,"runs"),o=It.resolve(n,e.runId,"workers",e.workerName);if(!uM(o,n))return!1;let s=I(It.join(o,"worker.json"),void 0);return s&&Rn(s,r,t)?!0:s?!1:dM(It.join(o,"heartbeat.jsonl"),r,t)}function pv(e){let r=e.now??Date.now(),t=e.heartbeatFreshMs??dv;if(!Ru(e.worktreePath))return null;if(e.runId&&e.workerName&&vu(e))return"active_worker";let n=It.join(e.worktreePath,".git");if(!Ru(n))return null;let o=ne(e.worktreePath,["status","--porcelain"]);if(o.status!==0)return"pr_or_unmerged_commits";let s=o.stdout.split(`
182
+ `).map(c=>c.trim()).filter(c=>c.length>0);if($e(s).length>0)return"dirty_worktree";let i=ne(e.worktreePath,["rev-list","--count","@{u}..HEAD"]);if(i.status===0){let c=Number(i.stdout.trim());if(Number.isFinite(c)&&c>0)return"pr_or_unmerged_commits"}let a=ne(e.worktreePath,["rev-list","--count","origin/main..HEAD"]);if(a.status!==0)return i.status!==0?"pr_or_unmerged_commits":null;let l=Number(a.stdout.trim());return Number.isFinite(l)&&l>0?"pr_or_unmerged_commits":null}Ze();import{existsSync as pM,readdirSync as mv,statSync as mM}from"node:fs";import fM from"node:path";function fv(e={}){let r=he(e.harnessRoot??Ue()),t=zt(r),n=e.now??Date.now(),o=new Date(n).toISOString();if(!pM(t))return{harnessRoot:r,worktreesDir:t,worktreesBytes:0,runCount:0,workerCount:0,oldestRunAt:null,scannedAt:o};let s=0,i=0,a=0,l=null,c;try{c=mv(t,{withFileTypes:!0})}catch{return{harnessRoot:r,worktreesDir:t,worktreesBytes:null,runCount:0,workerCount:0,oldestRunAt:null,scannedAt:o}}for(let u of c){if(!u.isDirectory())continue;i+=1;let d=fM.join(t,u.name);try{let p=mM(d);l=l===null?p.mtimeMs:Math.min(l,p.mtimeMs)}catch{}try{for(let p of mv(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 m=$r(d,p);m===null?s=null:s+=m}}}return{harnessRoot:r,worktreesDir:t,worktreesBytes:s,runCount:i,workerCount:a,oldestRunAt:l===null?null:new Date(l).toISOString(),scannedAt:o}}Ze();import{existsSync as gM}from"node:fs";import{homedir as hM}from"node:os";import gv from"node:path";var kM=["/var/tmp/kynver-harness",gv.join(hM(),".openclaw","harness")];function bu(e,r,t){if(!t?.trim())return;let n=he(t.trim());e.has(n)||(e.add(n),r.push(n))}function yM(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 hv(e={}){let r=new Set,t=[];bu(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??[])bu(r,t,o);if(yM(e))for(let o of kM){let s=gv.resolve(o);!r.has(s)&&gM(s)&&bu(r,t,s)}return t}Ln();function RM(e){let r=process.env[e];return r==="1"||r==="true"||r==="yes"}function vM(e,r){let t=process.env[e];if(!t)return r;let n=Number(t);return Number.isFinite(n)?n:r}function kv(e={}){let r=e.diskPath?.trim()||process.env.KYNVER_DISK_GUARD_PATH?.trim()||"/",t=vM("KYNVER_DISK_GUARD_MAX_USED_PERCENT",75),n=Yr({...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 yv(e,r){if(!r.pressured)return e;let t=e.execute||!RM("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}}ss();import{unlinkSync as bM}from"node:fs";function Ji(e){let r=process.env[e];return r==="1"||r==="true"||r==="yes"}function Rv(e,r){let t=process.env[e];if(!t)return r;let n=Number(t);return Number.isFinite(n)?n:r}function SM(e,r,t){return e.length===0?[]:t?[...e]:e.length<=r?[]:e.slice(r)}function vv(e={}){let r=e.execute===!0||Ji("KYNVER_WSL_CRASH_DUMP_EXECUTE")||Ji("KYNVER_CLEANUP_EXECUTE"),t=e.purgeAll===!0||Ji("KYNVER_WSL_CRASH_DUMP_PURGE_ALL"),n=Math.max(0,e.keepNewest??Rv("KYNVER_WSL_CRASH_DUMP_KEEP_NEWEST",t?0:1)),o=Ft({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=SM(o.dumps,n,t),i=[],a=[],l=0;for(let c of s){if(!r){a.push({path:c.path,reason:"dry_run"});continue}try{bM(c.path),i.push({path:c.path,bytes:c.bytes,name:c.name}),l+=c.bytes}catch(u){a.push({path:c.path,reason:u.message})}}return{observation:o,execute:r,keepNewest:n,removed:i,removedBytes:l,skipped:a}}function bv(e){return e?Ji("KYNVER_WSL_CRASH_DUMP_CLEANUP")||!e.ok?!0:e.dumpCount>Rv("KYNVER_WSL_CRASH_DUMP_KEEP_NEWEST",1):!1}ss();function Ve(e,r){if(process.env.KYNVER_CLEANUP_QUIET==="1")return;let t=r?`: ${r}`:"";console.error(`[kynver cleanup] ${e}${t}`)}de();var zi=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=ne(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 wM}from"node:child_process";import{existsSync as xM}from"node:fs";import _M from"node:path";var EM=5e3;function CM(e,r){if(!xM(_M.join(e,".git")))return{status:null,stdout:"",stderr:"",error:"not_a_git_repo"};try{let t=wM("git",r,{windowsHide:!0,cwd:e,encoding:"utf8",timeout:EM}),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 Sv(e){let r=CM(e,["status","--short"]);return r.error==="not_a_git_repo"?[]:r.error==="git_timeout"||r.status!==0?null:r.stdout.split(`
183
+ `).map(t=>t.trim()).filter(Boolean)}var Xi=class{cache=new Map;porcelain(r){let t=r,n=this.cache.get(t);if(n!==void 0)return n;let o=Sv(t)??[];return this.cache.set(t,o),o}};var Qi=class{cache=new Map;derive(r){let t=this.cache.get(r.id);if(t!==void 0)return t;let n=_t(r);return this.cache.set(r.id,n),n}};function PM(e){let r={};for(let t of e)r[t.kind]=(r[t.kind]??0)+1;return r}function wv(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:PM(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 AM(e={}){let r=e.harnessRoot?he(e.harnessRoot):Ue(),t=hv({harnessRoot:r}),n=e.now??Date.now();return{harnessRoot:r,scanRoots:t,now:n}}function IM(e){return typeof e=="string"?{reason:e}:e}function bn(e,r,t,n){e.push({path:r,reason:t,...n?{detail:n}:{}})}function Zi(e,r,t){return!r||e.bytes!=null?e:{...e,bytes:$r(e.path,t)}}function xv(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 OM(e,r){return e.kind==="remove_next_cache"?VR(e,r):jR(e,r)}function TM(e,r,t){return e.kind==="remove_next_cache"?Vi(e.path,r,t):ji(e.path,r,t)}function NM(e){let r=new Map;for(let t of e)for(let[n,o]of iv(t))r.set(n,o);return r}function _v(e,r){return e.runId&&e.worker?Ge.join(r,e.runId,e.worker):Ge.resolve(e.path,"..")}function Ev(e){return e.indexed?!1:vu({harnessRoot:e.harnessRoot,runId:e.candidate.runId,workerName:e.candidate.worker,now:e.now})}function DM(e={}){let r=yu(e),t=kv();r=yv(r,t);let n=AM(e);Ve("scan",`${n.scanRoots.length} harness root(s)`);let o=_R(n.scanRoots,n.now),s=r.finalizeStaleRuns?Lo().map(C=>({runId:C.runId,from:C.from,to:C.to})):[];s.length>0&&Ve("finalize",`${s.length} stale run(s) marked terminal`),Ve("index","building worktree index");let i=NM(n.scanRoots);Ve("index",`${i.size} indexed worktree(s)`);let a={runTerminalCache:new Qi,gitStatusCache:new Xi,gitRevCache:new zi},l=[],c=[],u=new Set,d=r.maxActionsPerSweep,p=()=>c.length>=d;for(let C of n.scanRoots){if(p())break;Ve("root",C);let re=Ge.join(C,"worktrees"),ke=sv(i,C),Ye={harnessRoot:C,worktreesDir:re,nodeModulesAgeMs:r.nodeModulesAgeMs,worktreesAgeMs:r.worktreesAgeMs,includeOrphans:r.includeOrphans,runIdFilter:r.runIdFilter,index:ke,now:n.now},kr=r.scanDependencyCaches?tv(Ye):[];Ve("dependency",r.scanDependencyCaches?`${kr.length} cache candidate(s) at ${C}`:"skipped (worktree-only sweep)");let jr=0;for(let F of kr){if(p())break;jr+=1,jr%50===0&&Ve("dependency",`${jr}/${kr.length} evaluated`);let D=Ge.resolve(F.path);if(u.has(D))continue;u.add(D);let M={...F,path:D},ie=TM(M,C,re);if(ie){bn(l,M.path,ie),c.push({...M,executed:!1,skipped:!0,skipReason:ie});continue}let ye=_v(M,re),Re=ke.get(Ge.resolve(ye))??null,yr=Ev({candidate:M,indexed:Re,harnessRoot:C,now:n.now}),V=du({indexed:Re,includeOrphans:!0,nodeModulesAgeMs:r.nodeModulesAgeMs,ageMs:M.ageMs,worktreePath:ye,activeWorktreePaths:o.activeWorktreePaths,workerFilesystemLive:yr,diskPressure:r.diskPressure,gitStatusCache:a.gitStatusCache});if(V){bn(l,M.path,V),c.push({...M,executed:!1,skipped:!0,skipReason:V});continue}c.push(OM(Zi(M,r.accountBytes,r.byteAccountingEntryCap),r.execute))}if(r.scanDependencyCaches)for(let F of XR(Ye)){if(p())break;let D=Ge.resolve(F.path);if(u.has(D))continue;u.add(D);let M={...F,path:D},ie=Gi(M.path,C,re);if(ie){bn(l,M.path,ie),c.push({...M,executed:!1,skipped:!0,skipReason:ie});continue}let ye=_v(M,re),Re=ke.get(Ge.resolve(ye))??null,yr=Ev({candidate:M,indexed:Re,harnessRoot:C,now:n.now}),V=bR({indexed:Re,includeOrphans:!0,nodeModulesAgeMs:r.nodeModulesAgeMs,ageMs:M.ageMs,worktreePath:ye,activeWorktreePaths:o.activeWorktreePaths,workerFilesystemLive:yr,diskPressure:r.diskPressure,gitStatusCache:a.gitStatusCache});if(V){bn(l,M.path,V),c.push({...M,executed:!1,skipped:!0,skipReason:V});continue}c.push(GR(Zi(M,r.accountBytes,r.byteAccountingEntryCap),r.execute))}let j=[...QR(Ye),...ov(Ye)];Ve("worktrees",`${j.length} candidate(s) at ${C}`);let T=new Set,te=0;for(let F of j){if(p())break;te+=1,te%50===0&&Ve("worktrees",`${te}/${j.length} evaluated`);let D=Ge.resolve(F.path);if(T.has(D))continue;T.add(D);let M={...F,path:D},ie=ke.get(Ge.resolve(M.path))??null,ye=ie?null:pv({worktreePath:M.path,harnessRoot:C,runId:M.runId,workerName:M.worker,now:n.now}),Re=vR({indexed:ie,worktreePath:Ge.resolve(M.path),includeOrphans:r.includeOrphans,worktreesAgeMs:r.worktreesAgeMs,terminalWorktreesAgeMs:r.terminalWorktreesAgeMs,ageMs:M.ageMs,orphanSafety:ye,worktreeRemovalGuard:e.worktreeRemovalGuard,liveness:a,now:n.now,harnessRoot:C,writeSalvageEvidence:r.execute});if(Re){let{reason:yr,detail:V}=IM(Re);bn(l,M.path,yr,V),c.push({...M,executed:!1,skipped:!0,skipReason:yr});continue}c.push(qR(Zi(M,r.accountBytes,r.byteAccountingEntryCap),r.execute))}if(!p()&&r.runDirectoriesAgeMs>=0)for(let F of TR({harnessRoot:C,worktreesDir:re,runDirectoriesAgeMs:r.runDirectoriesAgeMs,runIdFilter:r.runIdFilter,activeGuards:o,now:n.now})){if(p())break;let D=Ge.resolve(F.path);if(u.has(D))continue;u.add(D);let M={...F,path:D},ie=M.runId??Ge.basename(D),ye=OR({harnessRoot:C,runId:ie,runPath:D,ageMs:M.ageMs,runDirectoriesAgeMs:r.runDirectoriesAgeMs,activeGuards:o});if(ye){bn(l,M.path,ye),c.push({...M,executed:!1,skipped:!0,skipReason:ye});continue}c.push(YR(Zi(M,r.accountBytes,r.byteAccountingEntryCap),r.execute))}}let m=0,f=0,y=0,k=0,b=0,g=0;for(let C of c)C.bytes&&(m+=C.bytes),!C.skipped&&!C.executed&&C.bytes&&(y+=C.bytes),C.executed?(b+=1,k+=C.bytes??0,C.kind==="remove_run_directory"&&(f+=1)):C.skipped&&(g+=1,C.skipReason==="dry_run"&&C.bytes&&(y+=C.bytes));let h=r.accountBytes?fv({harnessRoot:n.harnessRoot,now:n.now,perRunEntryCap:r.storagePerRunEntryCap}):void 0,w=Ft(),E=r.execute&&bv(w),S=E?vv({execute:!0}):null,_=w?{observed:!0,execute:E,dumpCount:w.dumpCount,totalBytes:w.totalBytes,removedCount:S?.removed.length??0,removedBytes:S?.removedBytes??0,executables:w.executables,path:w.path,reason:w.reason}:void 0;S&&S.removed.length>0&&(k+=S.removedBytes,b+=S.removed.length,Ve("wsl-crashes",`removed ${S.removed.length} dump(s), ${S.removedBytes} bytes`)),Ve("complete",`${c.length} action(s), ${g} skipped, ${b} removed`);let K=wR(c,l),$=wv({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:c,skips:l,totals:{candidateBytes:m,reclaimableBytes:y,removedBytes:k,removedPaths:b,skippedPaths:g,skipReasons:xv(c,l)},...h?{storage:h}:{},...K.length>0?{preservedLivePaths:K}:{},...f>0?{removedRunDirectories:f}:{},..._?{wslCrashDumps:_}:{}});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:c,skips:l,totals:{candidateBytes:m,reclaimableBytes:y,removedBytes:k,removedPaths:b,skippedPaths:g,skipReasons:xv(c,l)},...h?{storage:h}:{},...K.length>0?{preservedLivePaths:K}:{},...f>0?{removedRunDirectories:f}:{},..._?{wslCrashDumps:_}:{},compactSummary:$}}function Cv(e){let r=uv(e);return DM({execute:r.execute,finalizeStaleRuns:r.finalizeStaleRuns,accountBytes:r.accountBytes,nodeModulesAgeMs:r.nodeModulesAgeMs,worktreesAgeMs:r.worktreesAgeMs,includeOrphans:r.includeOrphans,runIdFilter:r.runIdFilter})}function Pv(){return process.env.KYNVER_PIPELINE_CLEANUP!=="0"}import{readFile as WM}from"node:fs/promises";import{homedir as LM}from"node:os";import Ot from"node:path";On();var MM={"@kynver-app/runtime":"0.1.83","@kynver-app/openclaw-agent-os":"0.1.43","@kynver-app/mcp-agent-os":"0.3.34"},V9=Object.keys(MM);function Av(e){let r=e.trim().split("-")[0]?.split("+")[0];if(!r)return null;let t=r.split(".");if(t.length<1||t.length>3)return null;let n=t.map(o=>Number.parseInt(o,10));if(n.some(o=>!Number.isFinite(o)||o<0))return null;for(;n.length<3;)n.push(0);return[n[0],n[1],n[2]]}function Iv(e,r){let t=Av(e),n=Av(r);if(!t||!n)return 0;for(let o=0;o<3;o+=1){if(t[o]>n[o])return 1;if(t[o]<n[o])return-1}return 0}var BM=["@kynver-app/runtime","@kynver-app/openclaw-agent-os","@kynver-app/mcp-agent-os"];function Sn(e){let r=e?.trim();return r||null}function UM(e){return[...new Set(e.filter(r=>!!r))]}function FM(){let e=LM(),r=Sn(process.env.KYNVER_OPENCLAW_NPM_ROOT)??Sn(process.env.OPENCLAW_NPM_ROOT)??Ot.join(e,".openclaw","npm"),t=Sn(process.env.KYNVER_NPM_GLOBAL_ROOT)??Sn(process.env.KYNVER_NPM_GLOBAL_MODULES_ROOT)??(Sn(process.env.NPM_CONFIG_PREFIX)?Ot.join(Sn(process.env.NPM_CONFIG_PREFIX),"lib","node_modules"):Ot.join(e,".npm-global","lib","node_modules"));return UM([Ot.join(r,"lib","node_modules"),Ot.join(r,"node_modules"),t.endsWith("node_modules")?t:Ot.join(t,"lib","node_modules")])}async function KM(e){try{let r=JSON.parse(await WM(e,"utf8"));return typeof r.version=="string"&&r.version.trim()?r.version.trim():null}catch{return null}}function HM(e){let r=FM(),t=new Set,n=[];for(let o of r){let s=Ot.join(o,e,"package.json");t.has(s)||(t.add(s),n.push(s))}return n}async function Ov(e=new Date().toISOString()){let r={};for(let t of BM){let n=null;for(let o of HM(t)){let s=await KM(o);s&&(!n||Iv(s,n.version)>0)&&(n={version:s,path:o})}n&&(r[t]={version:n.version,observedAt:e,path:n.path})}return r}import{spawnSync as $M}from"node:child_process";var jM=1e4,VM=4*1024*1024,Tv=(e,r,t)=>{try{let n=$M(e,r,{windowsHide:!0,encoding:"utf8",stdio:["ignore","pipe","pipe"],timeout:t?.timeoutMs??jM,maxBuffer:VM});return{ok:n.status===0,stdout:typeof n.stdout=="string"?n.stdout:"",stderr:typeof n.stderr=="string"?n.stderr:""}}catch(n){return{ok:!1,stdout:"",stderr:n instanceof Error?n.message:String(n)}}};function ea(e,r,t){return`${e} ${r} ${t}`}function Su(e){let r=e.lastIndexOf("@");if(r<=0||r===e.length-1)return null;let t=e.slice(0,r),n=e.slice(r+1);return!/^[^/\s]+\/[^/\s]+$/.test(t)||!/^[0-9a-f]{7,40}$/i.test(n)?null:{repo:t,sha:n}}function Nv(e){let r=e.trim().match(/[/:]([^/]+\/[^/]+)\/(?:pull|pulls|merge_requests|pull-requests)\/(\d+)/i);if(!r)return null;let t=Number(r[2]);return!Number.isFinite(t)||t<=0?null:{repo:r[1],number:t}}var GM=8e3,YM=30,qM=100,JM=400,zM=3600*1e3,wu=0;function _u(){return Date.now()<wu}function XM(e){let r=`${e.stdout}
184
+ ${e.stderr}`.toLowerCase();return r.includes("api rate limit exceeded")||r.includes("rate limit exceeded")||r.includes("secondary rate limit")}function Dv(e){XM(e)&&(wu=Math.max(wu,Date.now()+zM))}function xu(e,r){if(_u())return null;let t=e("gh",["api",...r]);if(!t.ok||!t.stdout.trim())return Dv(t),null;try{return JSON.parse(t.stdout)}catch{return null}}function QM(e,r,t,n){if(_u())return null;let o=e("gh",["pr","view",String(t),"--repo",r,"--json",n.join(",")]);if(!o.ok||!o.stdout.trim())return Dv(o),null;try{return JSON.parse(o.stdout)}catch{return null}}function Eu(e){return _u()?!1:process.env.GITHUB_TOKEN?.trim()||process.env.GH_TOKEN?.trim()?!0:e("gh",["auth","token"]).ok}function wn(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function ZM(e){return Array.isArray(e)?e.map(r=>wn(r)).filter(r=>r!==null).slice(0,YM).map(r=>({context:r.context??null,state:r.state??null,target_url:r.target_url??null,description:r.description??null})):[]}function eW(e,r,t){let n=xu(e,[`repos/${r}/commits/${t}/status`]);return n?{state:n.state??null,statuses:ZM(n.statuses)}:null}var Mv={provider:"github",kind:"pr_snapshot",version:"2",isAvailable:Eu,collect(e,r){let t=Nv(e);if(!t)return null;let n=QM(r,t.repo,t.number,["url","title","body","author","state","isDraft","mergedAt","mergeCommit","mergeable","headRefName","headRefOid","headRepositoryOwner","statusCheckRollup","files"]);if(!n)return null;let o=wn(n.author),s=wn(n.mergeCommit),i=wn(n.headRepositoryOwner),a=typeof n.body=="string"?n.body.slice(0,GM):null,l=Array.isArray(n.statusCheckRollup)?n.statusCheckRollup.map(u=>wn(u)).filter(u=>u!==null).slice(0,qM).map(u=>({name:u.name??u.context??null,status:u.status??u.state??null,conclusion:u.conclusion??null,workflowName:u.workflowName??null,detailsUrl:u.detailsUrl??null})):[],c=Array.isArray(n.files)?n.files.map(u=>wn(u)).map(u=>typeof u?.path=="string"?u.path.trim():"").filter(Boolean).slice(0,JM):[];return{pull:{html_url:n.url??null,title:n.title??null,body:a,user:{login:o?.login??null},state:typeof n.state=="string"?n.state.toLowerCase():null,draft:n.isDraft??null,merged:!!n.mergedAt,merged_at:n.mergedAt??null,merge_commit_sha:s?.oid??null,mergeable:null,mergeable_state:n.mergeable??null,head:{sha:n.headRefOid??null,ref:n.headRefName??null,repo:{owner:{login:i?.login??null}}}},checkRuns:l,combinedStatus:{state:null,statuses:[]},changedFiles:c}}},Wv={provider:"github",kind:"commit_status",version:"1",isAvailable:Eu,collect(e,r){let t=Su(e);return t?eW(r,t.repo,t.sha):null}},Lv={provider:"github",kind:"branch_reachability",version:"1",isAvailable:Eu,collect(e,r){let t=Su(e);if(!t)return null;let n=xu(r,[`repos/${t.repo}`]),o=typeof n?.default_branch=="string"&&n.default_branch.trim()?n.default_branch.trim():null;if(!o)return null;let s=xu(r,[`repos/${t.repo}/compare/${encodeURIComponent(o)}...${t.sha}`]);if(!s)return null;let i=typeof s.status=="string"?s.status:null;return{defaultBranch:o,compareStatus:i,reachable:i==="identical"||i==="behind"}}};var Pu=[];function Cu(e){Pu.some(r=>r.provider===e.provider&&r.kind===e.kind)||Pu.push(e)}function Bv(e,r){return Pu.find(t=>t.provider===e&&t.kind===r)??null}function Uv(){Cu(Mv),Cu(Wv),Cu(Lv)}var rW=1,tW=25e3;function Fv(e,r={}){Uv();let t=r.run??Tv,n=r.now??(()=>new Date),o=r.maxSubjects??rW,s=Date.now()+(r.deadlineMs??tW),i=new Set,a=e.filter(m=>{let f=ea(m.provider,m.kind,m.subject);return i.has(f)?!1:(i.add(f),!0)}),l=a.length>0?Math.floor(n().getTime()/6e4)%a.length:0,u=a.map((m,f)=>a[(l+f)%a.length]).slice(0,o),d={attempted:0,collected:0,cached:0,items:[],skipped:[]},p=new Map;for(let m of u){let f=ea(m.provider,m.kind,m.subject),y=n(),k=r.cache?.get(f,y)??null;if(k){d.cached+=1,d.collected+=1,d.items.push(k);continue}if(Date.now()>s){d.skipped.push({...m,reason:"budget_exhausted"});continue}let b=Bv(m.provider,m.kind);if(!b){d.skipped.push({...m,reason:"no_recipe"});continue}let g=`${b.provider} ${b.kind}`,h=p.get(g);if(h===void 0&&(h=b.isAvailable(t),p.set(g,h)),!h){d.skipped.push({...m,reason:"provider_unavailable"});continue}if(r.cache?.reserve?.(m,f,n())===!1){d.skipped.push({...m,reason:"budget_exhausted"});continue}d.attempted+=1;let w=b.collect(m.subject,t);if(w==null){d.skipped.push({...m,reason:"collect_failed"});continue}d.collected+=1;let E={provider:m.provider,kind:m.kind,subject:m.subject,payload:w,observedAt:n().toISOString(),collectorVersion:b.version};d.items.push(E),r.cache?.set(f,E,n())}return d}B();O();import aW from"node:path";B();O();import Kv from"node:path";var nW="provider-evidence-wanted.json",oW="provider-evidence-cache.json",sW=600*1e3;function Hv(e){return Kv.join(N(e),nW)}function iW(e){return Kv.join(N(e),oW)}function $v(e){if(!Array.isArray(e))return[];let r=[];for(let t of e){if(!t||typeof t!="object"||Array.isArray(t))continue;let n=t,o=typeof n.provider=="string"?n.provider.trim():"",s=typeof n.kind=="string"?n.kind.trim():"",i=typeof n.subject=="string"?n.subject.trim():"";!o||!s||!i||r.push({provider:o,kind:s,subject:i})}return r}function jv(e){let r=I(Hv(e),null);return $v(r?.wanted)}function Vv(e,r){ue(Hv(e),{savedAt:new Date().toISOString(),wanted:r})}function Gv(e,r={}){let t=r.ttlMs??sW,n=iW(e),s={...I(n,null)?.items??{}},i=!1;return{get(l,c){let u=s[l];if(!u)return null;let d=Date.parse(u.observedAt);return!Number.isFinite(d)||c.getTime()-d>t?(delete s[l],i=!0,null):u},set(l,c){s[l]=c,i=!0},flush(){i&&(ue(n,{savedAt:new Date().toISOString(),items:s}),i=!1)}}}function Yv(e){if(!e||typeof e!="object"||Array.isArray(e))return null;let r=e.providerEvidenceWanted;return Array.isArray(r)?$v(r):null}var lW="provider-evidence-shared-cache.json",cW=6e4,uW=1,dW=1;function Au(e,r){let t=process.env[e];if(!t)return r;let n=Number.parseInt(t,10);return Number.isFinite(n)&&n>=0?n:r}function pW(){return aW.join(le().harnessRoot,lW)}function mW(e){let r=e.toUpperCase().replace(/[^A-Z0-9]+/g,"_"),t=e==="github"?uW:dW;return Au(`KYNVER_PROVIDER_EVIDENCE_${r}_PER_MINUTE`,Au("KYNVER_PROVIDER_EVIDENCE_LIVE_COLLECTS_PER_MINUTE",t))}function qv(){return Au("KYNVER_PROVIDER_EVIDENCE_SHARED_CACHE_TTL_MS",cW)}function fW(e){return Math.floor(e.getTime()/6e4)*6e4}function gW(e){return`${e.provider}:${e.kind}`}function Jv(e,r={}){let t=Gv(e,{ttlMs:r.ttlMs??qv()}),n=r.file??pW(),o=I(n,null),s={...o?.items??{}},i={...o?.budget??{}},a=r.ttlMs??qv(),l=!1;return{get(u,d){let p=t.get(u,d);if(p)return p;let m=s[u];if(!m)return null;let f=Date.parse(m.observedAt);return!Number.isFinite(f)||d.getTime()-f>a?(delete s[u],l=!0,null):(t.set(u,m,d),m)},set(u,d,p){t.set(u,d,p),s[u]=d,l=!0},reserve(u,d,p){let m=mW(u.provider);if(m===0)return!0;let f=gW(u),y=fW(p),k=i[f];return!k||k.windowStartMs!==y?(i[f]={windowStartMs:y,used:1},l=!0,!0):k.used>=m?!1:(k.used+=1,l=!0,!0)},flush(){t.flush(),l&&(ue(n,{savedAt:new Date().toISOString(),items:s,budget:i}),l=!1)}}}O();B();import zv from"node:path";var Xv="mesh-cron-lease.json";function Qv(e){let r=I(zv.join(N(e),Xv),null);return ok(e,r)??r}function Zv(e,r){let t={...r,updatedAt:new Date().toISOString()};ue(zv.join(N(e),Xv),t),nk(e,t)}function eb(e){if(!e||typeof e!="object"||Array.isArray(e))return null;let r=e.response;if(!r||typeof r!="object"||Array.isArray(r))return null;let t=r.meshLiveness;if(!t||typeof t!="object"||Array.isArray(t))return null;let n=t.cronLease;if(!n||typeof n!="object"||Array.isArray(n))return null;let o=n;return{leaseToken:typeof o.leaseToken=="string"?o.leaseToken:null,holderBoxId:typeof o.holderBoxId=="string"?o.holderBoxId:null,authorized:o.authorized===!0,updatedAt:new Date().toISOString()}}function rb(e){let r=Th(),t=Ur(e?.env??process.env),n=(e?.now??(()=>new Date))().getTime(),o={};if(t.flags.dispatchReceipts!=="off"){Object.assign(o,Vh());let s=jh({nowMs:n,hasLiveWorker:e?.hasLiveWorker});o["dispatchReceipts.strandedClaimCandidates"]=s.strandedClaimCandidates,t.flags.dispatchReceipts==="enforce"&&Object.assign(o,zy())}return t.flags.planOutbox!=="off"&&Object.assign(o,zk()),t.flags.admission!=="off"&&(Object.assign(o,Jh()),t.flags.admission==="enforce"&&Object.assign(o,Zh())),(t.flags.keeper!=="off"||t.flags.meshLease!=="off"||t.flags.quota!=="off")&&Object.assign(o,ck()),{contractVersion:1,observedAt:new Date(n).toISOString(),state:r.state,schemaVersion:r.schemaVersion,recovered:r.recovered,unavailableClass:r.reason?r.reason.split(":")[0]??null:null,flags:t.flags,flagSources:t.sources,flagWarningCount:t.warnings.length,divergenceCounters:o}}H();import{createHash as tb}from"node:crypto";import{access as hW,mkdir as MQ,readFile as nb,rename as WQ,writeFile as LQ}from"node:fs/promises";import{constants as kW}from"node:fs";import{homedir as Iu}from"node:os";import Ee from"node:path";var yW=/^(?:@[a-z0-9][a-z0-9._-]*\/[a-z0-9][a-z0-9._-]*|[a-z0-9][a-z0-9._-]*)$/i,RW=/^[A-Za-z0-9._:-]{8,128}$/;function vW(){return process.env.KYNVER_MCP_UPDATE_INVENTORY_FILE?.trim()||Ee.join(Iu(),".kynver","mcp-installations.json")}function bW(e){return e==="openclaw"?process.env.KYNVER_OPENCLAW_NPM_ROOT?.trim()||Ee.join(Iu(),".openclaw","npm"):process.env.KYNVER_NPM_GLOBAL_ROOT?.trim()||process.env.NPM_CONFIG_PREFIX?.trim()||Ee.join(Iu(),".npm-global")}function SW(e){let r=Ee.resolve(e);if(Ee.basename(r)!=="node_modules")return r;let t=Ee.dirname(r);return Ee.basename(t)==="lib"?Ee.dirname(t):t}function wW(e,r){return[Ee.join(e,"lib","node_modules",r,"package.json"),Ee.join(e,"node_modules",r,"package.json")]}async function xW(e){try{return await hW(e,kW.R_OK),!0}catch{return!1}}async function _W(e=vW()){let r;try{r=JSON.parse(await nb(e,"utf8"))}catch{return[]}if(r.version!==1||!Array.isArray(r.installations)||r.installations.length>100)throw new Error("invalid MCP installation inventory");return r.installations.map(t=>{if(!t||!RW.test(t.inventoryKey)||!yW.test(t.packageName)||!["kynver","openclaw"].includes(t.prefix))throw new Error("invalid adopted MCP installation");if(t.packageName.includes("..")||t.packageName.includes("%"))throw new Error("invalid adopted MCP package identity");if(t.connectionId&&t.connectionId.length>128)throw new Error("invalid connection identity");if(t.binName&&!/^[A-Za-z0-9._-]{1,80}$/.test(t.binName))throw new Error("invalid MCP bin name");let n=t.envAllowlist??[];if(!Array.isArray(n)||n.length>32||n.some(o=>!/^[A-Z][A-Z0-9_]{1,80}$/.test(o)))throw new Error("invalid MCP environment allow-list");return{...t,envAllowlist:[...new Set(n)],lifecycle:t.lifecycle??"runtime_stdio"}})}function EW(e,r,t){if(typeof e.bin=="string")return Ee.join(t,e.bin);if(!e.bin||typeof e.bin!="object"||Array.isArray(e.bin))return null;let n=e.bin,o=r.binName??(Object.keys(n).length===1?Object.keys(n)[0]:void 0),s=o?n[o]:null;return typeof s=="string"&&!Ee.isAbsolute(s)&&!s.split(/[\\/]/).includes("..")?Ee.join(t,s):null}function CW(e){return tb("sha256").update(JSON.stringify({inventoryKey:e.inventoryKey,connectionId:e.connectionId,packageName:e.packageName,managerKind:e.managerKind,sourceKind:e.sourceKind,installedVersion:e.installedVersion,nodeVersion:e.nodeVersion,policyChannel:e.policyChannel,executionConfigDigest:e.executionConfigDigest,capabilities:[...e.capabilities].sort()})).digest("hex")}async function PW(e){let r=[];for(let t of e){let n=SW(bW(t.prefix)),o=(await Promise.all(wW(n,t.packageName).map(async m=>({candidate:m,ok:await xW(m)})))).find(m=>m.ok)?.candidate;if(!o)continue;let s=JSON.parse(await nb(o,"utf8"));if(s.name!==t.packageName||typeof s.version!="string"||!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(s.version))continue;let i=Ee.dirname(o),a=EW(s,t,i),l=t.packageName==="@kynver-app/runtime",c=t.lifecycle??"runtime_stdio",u=tb("sha256").update(JSON.stringify({prefix:n,binName:t.binName??null,envAllowlist:[...t.envAllowlist??[]].sort(),lifecycle:c})).digest("hex"),d=l?[]:c==="runtime_stdio"&&a?["update","restart","rollback","verify_mcp"]:["update","rollback"],p={inventoryKey:t.inventoryKey,connectionId:t.connectionId??null,packageName:t.packageName,managerKind:"npm_global",sourceKind:"configured_stdio",installedVersion:s.version,nodeVersion:process.versions.node,policyChannel:"latest",executionConfigDigest:u,capabilities:d};r.push({report:{...p,displayName:t.displayName?.trim()||t.packageName,inventoryFingerprint:CW(p),capabilityExplanation:l?"Runtime self-update requires a supervisor-owned durable handoff and is not enabled by this adapter.":c==="runtime_stdio"&&a?"The authorized runtime can install, start, and verify this configured stdio package.":"The package can be installed, but its external supervisor must restart and verify it."},local:{prefix:n,packageJsonPath:o,packageDir:i,binPath:a,envAllowlist:t.envAllowlist??[],lifecycle:c}})}return r}async function ob(){return PW(await _W())}import{createHash as AW,createHmac as IW,timingSafeEqual as OW}from"node:crypto";function Ou(e){let r=e.trim().split(".");return r.length!==3||r[0]!=="krc1"||!r[1]||!r[2]?null:{tokenId:r[1],tokenHash:AW("sha256").update(`krc1.${r[1]}.${r[2]}`,"utf8").digest("hex")}}function sb(e,r,t){let n=Ou(r);if(!n||e.algorithm!=="hmac-sha256-runner-v1"||e.keyId!==n.tokenId)return!1;let o=Date.parse(e.claims.expiresAt);if(e.claims.version!==1||e.claims.agentOsId!==t||!Number.isFinite(o)||o<=Date.now()||o>Date.now()+10*6e4||![null,"installing","restarting","verifying"].includes(e.claims.resumePhase))return!1;let s=IW("sha256",Buffer.from(n.tokenHash,"hex")).update(JSON.stringify(e.claims),"utf8").digest(),i=Buffer.from(e.signature,"base64url");return i.length===s.length&&OW(i,s)}aa();br();import{createHash as TW}from"node:crypto";import{access as Tu,mkdtemp as NW,readFile as ub,rm as DW}from"node:fs/promises";import{constants as Nu}from"node:fs";import{tmpdir as MW}from"node:os";import xn from"node:path";import{spawn as WW}from"node:child_process";import{Client as LW}from"@modelcontextprotocol/sdk/client/index.js";import{StdioClientTransport as BW}from"@modelcontextprotocol/sdk/client/stdio.js";var Du="https://registry.npmjs.org",ib=512*1024,Mu=2*6e4,UW=2e4;function db(){return"npm"}function ab(e,r){return Buffer.byteLength(e)>=ib?e:(e+r.toString("utf8")).slice(0,ib)}function FW(e){let r=process.env.KYNVER_MCP_UPDATE_NPM_CACHE?.trim(),t=r&&xn.isAbsolute(r)?r:e,n={PATH:process.env.PATH,SystemRoot:process.env.SystemRoot,TEMP:process.env.TEMP,TMP:process.env.TMP,npm_config_registry:Du,npm_config_audit:"false",npm_config_fund:"false",npm_config_update_notifier:"false",npm_config_cache:t};return Object.fromEntries(Object.entries(n).filter(o=>typeof o[1]=="string"))}async function pb(e,r,t=Mu,n){return new Promise((o,s)=>{let i,a;try{[i,a]=pe(e,r)}catch(m){s(m);return}let l=WW(i,a,{shell:!1,windowsHide:!0,detached:ce(),env:FW(n),stdio:["ignore","pipe","pipe"]}),c="",u="",d=!1;l.stdout.on("data",m=>{c=ab(c,m)}),l.stderr.on("data",m=>{u=ab(u,m)});let p=setTimeout(()=>{d=!0,l.pid&&Me(l.pid,"SIGKILL")},t);l.once("error",m=>{clearTimeout(p),s(m)}),l.once("close",m=>{clearTimeout(p),d?s(new Error("process_timeout")):o({code:m,stdout:c,stderr:u})})})}function KW(e,r){let[t,n]=r.split("-",2);return!n||!["sha256","sha384","sha512"].includes(t)?!1:TW(t).update(e).digest("base64")===n}async function HW(e,r,t,n){let o=await pb(db(),["pack",`${e}@${r}`,"--json","--pack-destination",n,`--registry=${Du}`,"--ignore-scripts"],Mu,xn.join(n,"npm-cache"));if(o.code!==0)throw new Error("artifact_download_failed");let s;try{s=JSON.parse(o.stdout)}catch{throw new Error("artifact_receipt_invalid")}let i=s[0]?.filename;if(typeof i!="string"||xn.basename(i)!==i)throw new Error("artifact_receipt_invalid");let a=xn.join(n,i);if(!KW(await ub(a),t))throw new Error("artifact_integrity_mismatch");return a}async function $W(e,r,t){if((await pb(db(),["install","--global","--prefix",e,r,`--registry=${Du}`,"--no-audit","--fund=false"],Mu,t)).code!==0)throw new Error("package_install_failed")}async function mb(e){let r=JSON.parse(await ub(e.local.packageJsonPath,"utf8"));if(r.name!==e.report.packageName||typeof r.version!="string")throw new Error("installed_identity_mismatch");return r.version}function jW(e){let r={};for(let t of["PATH","SystemRoot","TEMP","TMP",...e]){let n=process.env[t];n!==void 0&&(r[t]=n)}return r}async function lb(e){if(!e.local.binPath)throw new Error("mcp_binary_missing");await Tu(e.local.binPath,Nu.X_OK).catch(async()=>Tu(e.local.binPath,Nu.R_OK));let r=new BW({command:e.local.binPath,args:[],env:jW(e.local.envAllowlist),stderr:"pipe"}),t=new LW({name:"kynver-managed-update-verifier",version:"1.0.0"}),n;try{await Promise.race([t.connect(r),new Promise((s,i)=>{n=setTimeout(()=>i(new Error("mcp_handshake_timeout")),UW)})]);let o=await t.listTools();return{toolCount:Array.isArray(o.tools)?o.tools.length:0}}finally{n&&clearTimeout(n),await t.close().catch(()=>{})}}async function cb(e,r,t,n,o){let s=await NW(xn.join(MW(),"kynver-mcp-update-"));try{let i=await HW(r,t,n,s);if(await o(),await $W(e.local.prefix,i,xn.join(s,"npm-cache")),await mb(e)!==t)throw new Error("installed_version_mismatch")}finally{await DW(s,{recursive:!0,force:!0})}}async function fb(e,r,t,n={}){if(typeof process.getuid=="function"&&process.getuid()===0)throw new Error("root_execution_refused");if(e.report.inventoryKey!==r.inventoryKey||e.report.inventoryFingerprint!==r.inventoryFingerprint||e.report.packageName!==r.packageName)throw new Error("local_inventory_mismatch");if(r.packageName==="@kynver-app/runtime")throw new Error("runtime_self_update_requires_supervisor");await t("preflight"),await Tu(e.local.prefix,Nu.W_OK).catch(()=>{throw new Error("npm_prefix_not_writable")});let o=await mb(e),s=r.resumePhase!==null&&o===r.targetVersion,i=s&&n.recoveryVerifiedTargetInstalled===!0;if(!i&&o!==r.installedVersion&&!s)throw new Error("installed_version_changed");try{if(i?await t("installing"):(await cb(e,r.packageName,r.targetVersion,r.targetIntegrity,async()=>{await t("installing"),await n.beforePackageMutation?.()}),await n.onTargetInstalled?.()),e.local.lifecycle!=="runtime_stdio")return{outcome:"manual_restart_required",observedVersion:r.targetVersion,handshakeVerified:!1,toolCount:null,failureCode:"external_supervisor_restart_required"};await t("restarting"),await t("verifying");let a=await lb(e);return{outcome:"succeeded",observedVersion:r.targetVersion,handshakeVerified:!0,toolCount:a.toolCount}}catch(a){let l=a instanceof Error?a.message:"update_failed";if(l==="progress_rejected")throw a;if(!r.rollbackIntegrity)return{outcome:"failed",observedVersion:null,handshakeVerified:!1,toolCount:null,failureCode:l};await n.beforePackageMutation?.();try{if(await cb(e,r.packageName,r.installedVersion,r.rollbackIntegrity,async()=>{await n.beforePackageMutation?.()}),e.local.lifecycle==="runtime_stdio"){let c=await lb(e);return{outcome:"rollback_succeeded",observedVersion:r.installedVersion,handshakeVerified:!0,toolCount:c.toolCount,failureCode:l}}return{outcome:"manual_restart_required",observedVersion:r.installedVersion,handshakeVerified:!1,toolCount:null,failureCode:l}}catch(c){if(c instanceof Error&&c.message==="progress_rejected")throw c;return{outcome:"rollback_failed",observedVersion:null,handshakeVerified:!1,toolCount:null,failureCode:l}}}}import{randomBytes as Bu}from"node:crypto";import{mkdir as Uu,readFile as Fu,rename as QW,rm as ra,stat as ZW,writeFile as Rb}from"node:fs/promises";import Tt from"node:path";import{createHmac as VW,timingSafeEqual as GW}from"node:crypto";import{mkdir as YW,readFile as qW,rename as JW,writeFile as zW}from"node:fs/promises";import{homedir as XW}from"node:os";import Wu from"node:path";function Lu(){return process.env.KYNVER_MCP_UPDATE_STATE_ROOT?.trim()||Wu.join(XW(),".kynver","state","mcp-updates")}function gb(e){if(!/^[A-Za-z0-9_-]{8,128}$/.test(e))throw new Error("invalid update operation identity");return Wu.join(Lu(),`${e}.json`)}function hb(e,r){let t=Ou(r);return t?VW("sha256",Buffer.from(t.tokenHash,"hex")).update(JSON.stringify(e),"utf8").digest("base64url"):null}async function kb(e,r){try{let t=JSON.parse(await qW(gb(e),"utf8"));if(t.version!==2||t.operationId!==e||typeof t.integrityMac!="string")return null;let{integrityMac:n,...o}=t,s=hb(o,r);if(!s)return null;let i=Buffer.from(n,"utf8"),a=Buffer.from(s,"utf8");return i.length!==a.length||!GW(i,a)?null:t}catch{return null}}async function yb(e,r){let t=hb(e,r);if(!t)throw new Error("invalid_runner_credential_for_receipt");let n=gb(e.operationId);await YW(Wu.dirname(n),{recursive:!0,mode:448});let o=`${n}.${process.pid}.tmp`;await zW(o,`${JSON.stringify({...e,integrityMac:t},null,2)}
185
+ `,{mode:384}),await JW(o,n)}var eL="host-mutation.lock";function vb(){return Tt.join(Lu(),eL)}async function bb(){try{let e=JSON.parse(await Fu(Tt.join(vb(),"owner.json"),"utf8"));return!Number.isSafeInteger(e.pid)||typeof e.acquiredAt!="string"?null:{holder:e.holder==="desktop_update"?"desktop_update":"mcp_update",pid:e.pid,acquiredAt:e.acquiredAt,alive:Sb(e.pid)}}catch{return null}}function Sb(e){if(!Number.isSafeInteger(e)||e<=0)return!0;try{return process.kill(e,0),!0}catch(r){return r.code==="EPERM"}}async function rL(e){try{return await ZW(e),!0}catch(r){if(r.code==="ENOENT")return!1;throw r}}async function wb(){return tL("mcp_update")}async function tL(e){let r=vb(),t=`${r}.reclaiming`;await Uu(Tt.dirname(r),{recursive:!0,mode:448});let n=!1;try{if(await rL(t))return null;for(let o=0;o<2;o+=1)try{await Uu(r,{mode:448});let s={pid:process.pid,nonce:Bu(18).toString("base64url"),acquiredAt:new Date().toISOString(),holder:e};return await Rb(Tt.join(r,"owner.json"),JSON.stringify(s),{mode:384}),n&&(await ra(t,{recursive:!0,force:!0}),n=!1),{release:async()=>{try{let i=JSON.parse(await Fu(Tt.join(r,"owner.json"),"utf8"));i.pid===s.pid&&i.nonce===s.nonce&&await ra(r,{recursive:!0,force:!0})}catch{}}}}catch(s){if(s.code!=="EEXIST")throw s;if(!n)try{await Uu(t,{mode:448}),n=!0,await Rb(Tt.join(t,"owner.json"),JSON.stringify({pid:process.pid,nonce:Bu(18).toString("base64url"),acquiredAt:new Date().toISOString()}),{mode:384})}catch(l){if(l.code==="EEXIST")return null;throw l}let i=null;try{i=JSON.parse(await Fu(Tt.join(r,"owner.json"),"utf8"))}catch{return null}if(Sb(i.pid))return null;let a=`${r}.stale-${process.pid}-${Bu(8).toString("hex")}`;await QW(r,a),await ra(a,{recursive:!0,force:!0})}return null}finally{n&&await ra(t,{recursive:!0,force:!0})}}function ta(e,r,t){return`${e}/api/agent-os/by-id/${encodeURIComponent(r)}/mcp-updates/${t}`}function nL(e){if(!e||typeof e!="object")return null;let r=e.claim;if(!r||typeof r!="object"||r.waitingForIdle!==!1)return null;let t=r.command;return t&&typeof t=="object"?t:null}function xb(e,r){let t=r.claims;return e.inventoryKey===t.inventoryKey&&e.packageName===t.packageName&&e.installedVersion===t.installedVersion&&e.targetVersion===t.targetVersion&&e.targetIntegrity===t.targetIntegrity&&e.rollbackIntegrity===t.rollbackIntegrity&&e.item.report.inventoryKey===t.inventoryKey&&e.item.report.packageName===t.packageName}function oL(e,r){return{inventoryKey:r.claims.inventoryKey,packageName:r.claims.packageName,installedVersion:r.claims.installedVersion,targetVersion:r.claims.targetVersion,targetIntegrity:r.claims.targetIntegrity,rollbackIntegrity:r.claims.rollbackIntegrity,verifiedTargetInstalled:!1,item:e}}async function _b(e){let r=Q(e.baseUrl),t=await ob();if(t.length===0)return{ok:!0,stage:"not_configured"};let n=await kt(ta(r,e.agentOsId,"inventory"),e.secret,{items:t.map(s=>s.report)});if(!n.ok)return{ok:!1,stage:"inventory",status:n.status};let o=await wb();if(!o){let s=await bb();return{ok:!0,stage:"host_mutation_busy",...s?{heldBy:s.holder}:{}}}try{let s=await kt(ta(r,e.agentOsId,"claim"),e.secret,{activeOwnedSessions:e.activeOwnedSessions});if(!s.ok)return{ok:!1,stage:"claim",status:s.status};let i=nL(s.response);if(!i)return{ok:!0,stage:"idle"};if(!sb(i,e.secret,e.agentOsId))return{ok:!1,stage:"command_auth"};let a=await kb(i.claims.operationId,e.secret);if(a?.terminal&&a.attempt===i.claims.attempt&&a.nonce===i.claims.nonce)return{ok:!0,stage:"already_completed",outcome:a.outcome};let l,c;if(i.claims.resumePhase!==null){if(!a||!xb(a.recovery,i))return{ok:!1,stage:"recovery_receipt_invalid"};c=a.recovery,l={...c.item,report:{...c.item.report,inventoryFingerprint:i.claims.inventoryFingerprint}}}else{let g=t.find(h=>h.report.inventoryKey===i.claims.inventoryKey);if(!g||g.report.inventoryFingerprint!==i.claims.inventoryFingerprint)return{ok:!1,stage:"inventory_changed"};l=g,c=a&&xb(a.recovery,i)?a.recovery:oL(g,i)}let u=a?.acceptedAt??new Date().toISOString(),d=async(g,h,w)=>{await yb({version:2,operationId:i.claims.operationId,attempt:i.claims.attempt,nonce:i.claims.nonce,acceptedAt:u,phase:g,terminal:h,...w?{outcome:w}:{},recovery:c},e.secret)};await d(a?.attempt===i.claims.attempt?a.phase:"claimed",!1);let p="claimed",m=async g=>{if(!(await kt(ta(r,e.agentOsId,`operations/${encodeURIComponent(i.claims.operationId)}/events`),e.secret,{attempt:i.claims.attempt,fenceToken:i.claims.fenceToken,phase:g})).ok)throw new Error("progress_rejected");p=g,await d(g,!1)},f=g=>m(g),y=()=>m(p),k;try{k=await fb(l,i.claims,f,{recoveryVerifiedTargetInstalled:c.verifiedTargetInstalled,beforePackageMutation:y,onTargetInstalled:async()=>{c={...c,verifiedTargetInstalled:!0},await d("target_installed",!1)}})}catch(g){k={outcome:"failed",observedVersion:null,handshakeVerified:!1,toolCount:null,failureCode:g instanceof Error?g.message:"update_failed"}}let b=await kt(ta(r,e.agentOsId,`operations/${encodeURIComponent(i.claims.operationId)}/complete`),e.secret,{attempt:i.claims.attempt,fenceToken:i.claims.fenceToken,...k});return b.ok?(await d(k.outcome,!0,k.outcome),{ok:k.outcome==="succeeded",stage:"complete",outcome:k.outcome}):{ok:!1,stage:"complete",status:b.status,outcome:k.outcome}}finally{await o.release()}}function sL(){let e=process.env.KYNVER_PIPELINE_SWEEP_ENABLED;return e?e==="1"||e.toLowerCase()==="true":!1}async function iL(e,r){let t=q(e),n=[],o=Math.max(0,Number.parseInt(process.env.KYNVER_PIPELINE_COMPLETION_REPLAY_MAX_DEEP_CHECKS_PER_TICK??"0",10)||0),s=0;for(let i of Object.keys(t.workers||{})){let a=I(Eb.join(N(t.id),"workers",x(i),"worker.json"),void 0);if(!a?.taskId||a.localOnly||Jr(a))continue;if(yo(a)){n.push({worker:i,ok:!0,taskId:a.taskId??null,skipped:!0});continue}if(s>=o)break;s++;let l=J(a);if(!xe(l))continue;let c=Ht({alive:l.alive,finalResult:l.finalResult,changedFiles:l.changedFiles,gitAncestry:l.gitAncestry});if(!a.dispatched&&!l.finalResult&&!c?.salvageable)continue;let u=await To({run:e,name:i,agentOsId:String(r.agentOsId||a.agentOsId||""),...r});n.push({worker:i,ok:u.ok,taskId:a.taskId??null})}return n}async function aL(e,r,t,n,o){let s=Q(n.baseUrl?String(n.baseUrl):void 0),i=await ee(n.secret?String(n.secret):void 0,e,{baseUrl:s}),a=`${s}/api/agent-os/by-id/${encodeURIComponent(e)}/operator/tick`,l=await Ov(),c=Bs(r),u=null;try{let E=jv(r);if(E.length>0){let S=Jv(r);u=Fv(E,{cache:S}),S.flush?.()}else u=null}catch{u=null}try{if(Kr()!=="off"){let E=Gt();qh({liveWorkers:E}),Qh({liveWorkers:E})}else Gh()}catch{}let d=({runId:E,workerName:S})=>{try{let{runsDir:_}=le(),K=Eb.join(Ir(_,x(E)),"workers",x(S),"worker.json"),$=I(K,null);return $?Jr($):!1}catch{return!1}};await Qy({agentOsId:e,baseUrl:s,secret:i,hasLiveWorker:d});let p=null;try{p=rb({hasLiveWorker:d})}catch{p=null}let m=null;try{m=cd({control:Lt(e),supervisor:md(),inFlightWorkers:Gt().length})}catch{m=null}let f=Qv(r),y=Qu(),k=await X(a,i,{agentOsId:e,runId:r,ingestHarness:!0,harnessBoardSnapshot:Tc(r),resourceGate:t,boxResourceSnapshot:lR(t,{harnessRunId:r,boxKind:wr(U())}),packageVersions:l,...o?{harnessCleanup:o}:{},runnerPresence:He({runId:r}),activeHarnessWorkers:c,...f?.leaseToken?{meshCronLeaseToken:f.leaseToken}:{},...p?{localRunStore:p}:{},...m?{runtimeControlAck:m}:{},...y?{daemonEventLoop:y}:{},...u&&u.items.length>0?{providerEvidence:u.items}:{}},{agentOsId:e,baseUrl:s}),b=Yv(k.response);if(b)try{Vv(r,b)}catch{}let g=eb(k);if(g)try{Zv(r,g)}catch{}let h=Dh(k);h&&Mh(e,h);let w=id(k);return w&&ld(e,w),{ok:k.ok,httpStatus:k.status,response:k.response,...u?{providerEvidence:{attempted:u.attempted,collected:u.collected,skipped:u.skipped.length}}:{}}}async function Cb(e){let r=String(vr(String(e.run||""),"--run")),t=String(vr(String(e.agentOsId||""),"--agent-os-id")),n=e.execute!==!1&&e.execute!=="false";Tc(r);let o=await Ks(t,e),s=Fs(o),i=Yn({runId:r,configuredMaxWorkersOverride:s}),a=Pv()?Cv(r):void 0,l=await aL(t,r,i,e,a),c;if(n)try{let C=Q(e.baseUrl?String(e.baseUrl):void 0),re=await ee(e.secret?String(e.secret):void 0,t,{baseUrl:C});c=await _b({agentOsId:t,secret:re,baseUrl:C,activeOwnedSessions:Gt().length})}catch(C){c={ok:!1,stage:"cycle",error:C instanceof Error?C.message:"update cycle failed"}}let u=yh(r,l),d=await kg(r,e),p=await iL(r,e);p.some(C=>C.ok&&!C.skipped)&&oR();let m=Yn({runId:r,configuredMaxWorkersOverride:s}),f=qy(),y=await dR(r,e),k=Iy(m,l),b=k.maxStarts,g=Lt(t),h=ud(g);h&&(b=0);let w=sL()?await cR({run:r,agentOsId:t,pipeline:!0,...e}):{ok:!0,skipped:!0,reason:"pipeline_sweep_disabled"},E=null,S=0,_=Ay(l),K=b;if(n&&K>0&&_.length>0){let C=Math.min(K,_.length),re=await Vc({...e,run:r,agentOsId:t,targetTaskIds:_.join(",")},C),ke=kn(re);S+=ke,K=Math.max(0,K-ke),E={exactTargetTaskIds:_,exact:re,startedCount:S}}if(n&&K>0){let C=await Vc({...e,run:r,agentOsId:t},K),re=kn(C);S+=re,E=E&&typeof E=="object"?{...E,broad:C,startedCount:S}:C}else!n||b<=0?E||(E={ok:!0,skipped:!0,reason:h??(n?m.reason??"no slots or queued work":"execute disabled"),maxStarts:0,dispatchAdvice:k,..._.length?{exactTargetTaskIds:_,exactOnly:!0}:{}}):E&&typeof E=="object"&&(E={...E,broadSkipped:!0,startedCount:S});let $=!k.underutilized&&b===0&&p.length===0&&S===0;return{runId:r,agentOsId:t,execute:n,resourceGate:i,dispatchResourceGate:m,leaseRenewal:d,completedWorkers:p,staleReconcile:f,harnessCleanup:a,planProgressSync:y,completionAckSync:u,operatorTick:l,mcpUpdates:c,sweep:w,dispatchAdvice:k,dispatch:E,idle:$,runtimeControl:g?{desiredState:g.desiredState,policyVersion:g.policyVersion}:null}}An();Yt();An();function Pb(e){return Qo(Lt(e))!=="stopped"?null:Gt().length}function Ab(e){if(!e||typeof e!="object")return!1;let r=e;return r.type==="tick"&&typeof r.id=="number"&&typeof r.agentOsId=="string"&&!!r.args&&typeof r.args=="object"}function lL(e){e&&(iR({admission:e.admission,ownerKind:e.ownerKind}),pd(e.ownerKind))}async function cL(e,r={}){try{e.instructionBundle&&ed(e.instructionBundle.bundle,e.instructionBundle.source),Xu(e.eventLoopReport);let t=await(r.runTick??Cb)(e.args),n=(r.countInFlightWorkers??Pb)(e.agentOsId);return{type:"result",id:e.id,ok:!0,tick:JSON.parse(JSON.stringify(t)),inFlightWorkers:n}}catch(t){return{type:"result",id:e.id,ok:!1,error:t instanceof Error?t.message:String(t)}}}function Ib(e,r,t={}){lL(r);let n=Promise.resolve();e.on("message",o=>{Ab(o)&&(n=n.then(async()=>{e.postMessage(await cL(o,t))}))})}Ob?Ib(Ob,uL):(console.error(JSON.stringify({event:"daemon_tick_thread_misuse",error:"must run as a worker thread"})),process.exitCode=1);