@kynver-app/runtime 0.2.118 → 0.2.127

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,5 +1,69 @@
1
- var a=(e,r,t)=>()=>{if(t)throw t[0];try{return e&&(r=e(e=0)),r}catch(n){throw t=[n],n}};import{homedir as Ue}from"node:os";import Le from"node:path";function lt(e){return e==="~"?Ue():e.startsWith("~/")||e.startsWith("~\\")?Le.join(Ue(),e.slice(2)):e}function x(e){return Le.resolve(lt(e))}var _=a(()=>{"use strict"});function k(e=process.platform){return e!=="win32"}var Fe=a(()=>{"use strict"});var d=a(()=>{"use strict";Fe()});var ut,ho,ct,yo,pe=a(()=>{"use strict";ut=["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"],ho=new Set(ut),ct=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],yo=new Set(ct)});var z=a(()=>{"use strict";_();d();pe()});var $e=a(()=>{"use strict";z()});var me=a(()=>{"use strict";z();_();$e()});var fe=a(()=>{"use strict";d()});var v=a(()=>{"use strict"});var X=a(()=>{"use strict"});var He=a(()=>{"use strict"});var Do,Bo,ge=a(()=>{"use strict";Do=25*1024*1024*1024,Bo=12*1024*1024*1024});var Ho,jo,je=a(()=>{"use strict";ge();Ho=5*1024*1024*1024,jo=10*1024*1024*1024});var zo,Xo,he=a(()=>{"use strict";je();ge();zo=30*1024*1024*1024,Xo=15*1024*1024*1024});var Ve=a(()=>{"use strict";d()});import ft from"node:path";var si,ye=a(()=>{"use strict";_();Ve();si=ft.join(".openclaw","harness")});var Z=a(()=>{"use strict";b();v();X();ee();ye()});var Je=a(()=>{"use strict";b();ye();Z();d()});var Re=a(()=>{"use strict";Je();d()});var ze=a(()=>{"use strict";Re();d()});var Xe=a(()=>{"use strict"});var Qe=a(()=>{"use strict";Xe();d()});var Ze=a(()=>{"use strict"});var er=a(()=>{"use strict";Ze()});var re=a(()=>{"use strict"});var rr=a(()=>{"use strict"});var tr=a(()=>{"use strict"});var nr=a(()=>{"use strict";er();d();re();rr();tr()});var or=a(()=>{"use strict";re()});var ir=a(()=>{"use strict"});var sr=a(()=>{"use strict"});var xe=a(()=>{"use strict"});var ar=a(()=>{"use strict"});var lr=a(()=>{"use strict";xe();ar()});var ur=a(()=>{"use strict";Qe();nr();re();or();ir();z();sr();lr();xe();d()});var cr=a(()=>{"use strict";ur()});var Et,Ct,dr=a(()=>{"use strict";He();b();v();X();ee();he();Re();ze();cr();d();Et=500*1024*1024,Ct=4*1024*1024*1024});var ee=a(()=>{"use strict";dr()});import{homedir as Ot}from"node:os";import At from"node:path";var pr,_e=a(()=>{"use strict";pr=At.join(Ot(),".kynver",".env")});var mr=a(()=>{"use strict"});var fr=a(()=>{"use strict";mr()});var gr=a(()=>{"use strict"});var hr=a(()=>{"use strict";d()});var ve=a(()=>{"use strict";fr();gr();hr()});var yr=a(()=>{"use strict"});var kr=a(()=>{"use strict";yr()});var te=a(()=>{"use strict";_e();_();b();ve();kr()});var Rr=a(()=>{"use strict";v();v()});var xr=a(()=>{"use strict";_e();ve();te()});var be=a(()=>{"use strict"});var _r=a(()=>{"use strict";me();v();Rr();b();te();xr();fe();be();Z()});function S(e){let r=e.trim().toLowerCase();return Bt[r]??r}var vr,Dt,Bt,ne=a(()=>{"use strict";vr=["claude","cursor","codex","gemini","gemini-api","openai-compatible"],Dt=vr.join("|"),Bt={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",google:"gemini",gemini_cli:"gemini",gemini_api:"gemini-api","google-api":"gemini-api",google_api:"gemini-api"}});var br=a(()=>{"use strict";_()});var Sr=a(()=>{"use strict";br()});var Er=a(()=>{"use strict"});var Cr=a(()=>{"use strict";Er()});import{existsSync as Lt,mkdirSync as Ll,readFileSync as Ft,writeFileSync as Fl}from"node:fs";import{homedir as $t,totalmem as Hl}from"node:os";import Se from"node:path";function Ht(e){return{...e,...e.harnessRoot?.trim()?{harnessRoot:x(e.harnessRoot.trim())}:{},...e.defaultRepo?.trim()?{defaultRepo:x(e.defaultRepo.trim())}:{}}}function T(){if(!Lt(Or))return{};try{return Ht(JSON.parse(Ft(Or,"utf8")))}catch{return{}}}var Ar,Or,iu,su,au,b=a(()=>{"use strict";me();_();fe();v();X();ee();he();te();_r();ne();Z();Sr();be();Cr();Ar=Se.join($t(),".kynver"),Or=Se.join(Ar,"config.json"),iu=Se.join(Ar,"credentials");su=500*1024*1024,au=4*1024*1024*1024});var nt=/^claude[-_]/i,ot=/^(?:opus|sonnet|haiku)\b/i;function Me(e){let r=e.trim();return nt.test(r)||ot.test(r)}function De(e){let r=e.trim().toLowerCase();return r.startsWith("gpt-")||r.startsWith("gpt5")||r.includes("codex")}function ce(e){let r=e.trim().toLowerCase();return r.includes("composer")||r.includes("cursor")}function Be(e){return e.trim().toLowerCase().startsWith("gemini-")}function it(e){return De(e)?"codex":Me(e)?"claude":Be(e)?"gemini":(ce(e),"cursor")}function st(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==="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 at(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?Me(n)||De(n)||ce(n)||Be(n)?{lane:t,model:n,provider:it(n),rule:"executor_ref:harness_lane_model"}:{lane:t,rule:"executor_ref:harness_lane"}:{lane:t,rule:"executor_ref:harness_lane"}}function f(e){let r=typeof e=="string"?e.trim():"";return r?st(r)??at(r):null}function de(e){let r=f(e);return r?!!(r.provider&&r.provider!=="cursor"||r.model&&!ce(r.model)):!1}b();var wr={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 N(e){return wr[e]}function Pr(){return Object.values(wr)}import{existsSync as en}from"node:fs";import{homedir as rn}from"node:os";import $ from"node:path";import{createHash as Kr}from"node:crypto";import{statSync as Zt}from"node:fs";import{spawnSync as Wr}from"node:child_process";import{existsSync as Nr,readFileSync as jt}from"node:fs";import E from"node:path";var F=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},Yt=".COM;.EXE;.BAT;.CMD";function Vt(e){return e.includes("/")||e.includes("\\")}function Gt(e){return(e.PATHEXT||Yt).split(";").map(r=>r.trim().toLowerCase()).filter(r=>r.startsWith("."))}function qt(e){let r=Object.keys(e).find(t=>t.toUpperCase()==="PATH");return r?e[r]??"":""}function Jt(e,r={}){let t=r.env??process.env,n=r.exists??Nr,o=Gt(t),s=E.win32.extname(e)!=="",i=l=>s?[l]:o.map(u=>`${l}${u}`);if(Vt(e)||E.win32.isAbsolute(e))return i(e).find(l=>n(l))??null;for(let l of qt(t).split(";").map(u=>u.trim()).filter(Boolean)){let u=i(E.win32.join(l,e)).find(c=>n(c));if(u)return u}return null}var Ir=/%~?dp0%?\\?([^"%\r\n]+?\.(?:c|m)?js)\b/i,zt=/^\s*SET\s+"?([A-Za-z_]\w*)=([^"\r\n]*)"?\s*$/i;function Tr(e){return e.replace(/^[\\/]+/,"")}function Xt(e){let r=e.split(/\r?\n/),t=new Map;for(let s of r){let i=zt.exec(s);i&&t.set(i[1].toUpperCase(),i[2])}let n=r.filter(s=>s.includes("%*")).pop();if(!n)return null;let o=Ir.exec(n);if(o)return Tr(o[1]);for(let s of n.matchAll(/%([A-Za-z_]\w*)%/g)){let i=t.get(s[1].toUpperCase()),l=i?Ir.exec(i):null;if(l)return Tr(l[1])}return null}function Qt(e,r={}){if((r.platform??process.platform)!=="win32")return{executable:e,prefixArgs:[],kind:"passthrough"};let n=Jt(e,r);if(!n)return{executable:e,prefixArgs:[],kind:"passthrough"};let o=E.win32.extname(n).toLowerCase();if(o!==".cmd"&&o!==".bat")return{executable:n,prefixArgs:[],kind:"exe"};let s=r.readText??(ue=>jt(ue,"utf8")),i=r.exists??Nr,l;try{l=s(n)}catch{throw new F(n)}let u=Xt(l);if(!u)throw new F(n);let c=E.win32.dirname(n),p=E.win32.join(c,u);if(!i(p))throw new F(n);let L=E.win32.join(c,"node.exe");return{executable:i(L)?L:r.nodeExecutable??process.execPath,prefixArgs:[p],kind:"node-shim"}}function C(e,r,t={}){let n=Qt(e,t);return[n.executable,[...n.prefixArgs,...r]]}function y(e){try{let r=Zt(e),t=`${e}|${r.size}|${r.mtimeMs}`;return Kr("sha256").update(t).digest("hex").slice(0,16)}catch{return}}function K(e){return Kr("sha256").update(`env:${e}`).digest("hex").slice(0,16)}function g(e,r){for(let t of r){let n=process.env[t]?.trim();if(n)return n}return e}function h(e,r,t={}){let n=t.timeoutMs??8e3;try{let[o,s]=C(e,r),i=Wr(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 l=(i.stderr||i.stdout||"").trim(),u=t.failPrefix??`${e} ${r.join(" ")} failed`;return{ok:!1,note:l?`${u}: ${l.slice(0,200)}`:u}}catch(o){return{ok:!1,note:o instanceof Error?o.message:`${e} probe failed`}}}function oe(e,r,t={}){let n=t.timeoutMs??8e3;try{let[o,s]=C(e,r);return Wr(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 tn="codex";function nn(){let e=rn();return[process.env.CODEX_HOME?.trim()?$.join($.resolve(process.env.CODEX_HOME.trim()),"auth.json"):null,$.join(e,".codex","auth.json"),$.join(e,".config","codex","auth.json")].filter(t=>!!t)}function on(e){return $.dirname(e)}function sn(e){let r,t;for(let n of nn()){if(!en(n))continue;r??=n;let o=h(e,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status",env:{CODEX_HOME:on(n)}});if(t??=o,o.ok)return{authPath:n,login:o}}return{authPath:r,login:t??h(e,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status"})}}function Mr(e=new Date().toISOString()){let r=g(tn,["KYNVER_CODEX_BIN","CODEX_BIN"]);if(process.env.CODEX_API_KEY?.trim())return{providerId:"codex",ready:!0,authSource:"api_key_env",sessionFingerprint:K("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}=sn(r),o=!!t&&n.ok;return{providerId:"codex",ready:o,authSource:"oauth_local",sessionFingerprint:t?y(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 an}from"node:fs";import{homedir as ln}from"node:os";import Ee from"node:path";function un(){let e=process.env.HERMES_HOME?.trim(),r=e?Ee.resolve(e):Ee.join(ln(),".hermes");return Ee.join(r,"auth.json")}function ie(e=new Date().toISOString()){let r=g("hermes",["KYNVER_HERMES_BIN","HERMES_BIN"]),t=h(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=un(),o=an(n),s=oe(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?y(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 H(e=new Date().toISOString()){let r=Mr(e);if(r.ready)return{...r,path:"codex_cli"};let t=ie(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 Dr=["low","medium","high"],Br={oauth_local:0,subscription_hermes:0,runner_token:1,api_key_env:2,none:3};function Ur(e,r){let t=N(e);return r==="privileged"?t.supportsPrivilegedPlatformActions:r==="low"?t.supportsLowRiskOrchestration:!0}function cn(e,r){let t=N(e.providerId),n=N(r.providerId),o=Dr.indexOf(t.costTier)-Dr.indexOf(n.costTier);if(o!==0)return o;let s=Br[e.binding.authSource]-Br[r.binding.authSource];return s!==0?s:e.providerId.localeCompare(r.providerId)}function Ce(e){let r=Pr().map(l=>({providerId:l.id,binding:e.inventory.bindings[l.id]})).filter(l=>l.binding.ready&&Ur(l.providerId,e.riskClass));if(r.length===0)return null;let n=[...r].sort(cn)[0],o="codex";if(n.providerId===o)return{providerId:n.providerId,binding:n.binding};let s=e.inventory.bindings[o],i;return Ur(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 dn}from"node:fs";import{homedir as pn}from"node:os";import mn from"node:path";var fn="claude";function gn(){let e=pn();return[mn.join(e,".claude",".credentials.json")]}function Lr(e=new Date().toISOString()){let r=g(fn,["KYNVER_CLAUDE_BIN","CLAUDE_BIN"]);if(process.env.ANTHROPIC_API_KEY?.trim())return{providerId:"claude",ready:!1,authSource:"api_key_env",sessionFingerprint:K("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=h(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=gn().find(i=>dn(i)),o=oe(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?y(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 Sn}from"node:fs";import{homedir as bn}from"node:os";import M from"node:path";import{closeSync as Vu,existsSync as xn,mkdirSync as Gu,openSync as qu,statSync as Ju,unlinkSync as zu}from"node:fs";d();import W from"node:path";pe();import{existsSync as j,readdirSync as hn}from"node:fs";import O from"node:path";var yn=/^\d{4}\.\d{1,2}\.\d{1,2}-[a-f0-9]+$/i;function kn(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 Rn(e){let r=O.join(e,"versions");if(!j(r))return null;let t=null,n=-1;for(let o of hn(r,{withFileTypes:!0})){if(!o.isDirectory()||!yn.test(o.name))continue;let s=kn(o.name);s==null||s<=n||(n=s,t=O.join(r,o.name))}return t}function Oe(e){let r=e?.trim()||O.join(process.env.LOCALAPPDATA||"","cursor-agent"),t=O.join(r,"node.exe"),n=O.join(r,"index.js");if(j(t)&&j(n))return{nodeExe:t,indexJs:n,versionDir:r};let o=Rn(r);if(!o)return null;let s=O.join(o,"node.exe"),i=O.join(o,"index.js");return!j(s)||!j(i)?null:{nodeExe:s,indexJs:i,versionDir:o}}function _n(e,r,t){return{executable:e,prefixArgs:[r],shell:!1,detached:k(),bundledVersionDir:t}}function Fr(e){if(process.platform==="win32"){let r=/\.(cmd|bat)$/i.test(e),t=/node\.exe$/i.test(e)&&xn(W.join(W.dirname(e),"index.js"));if(r||t||e==="agent"){let o=r?Oe(W.dirname(e)):t?{nodeExe:e,indexJs:W.join(W.dirname(e),"index.js"),versionDir:W.dirname(e)}:Oe();if(o)return _n(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:k()}}import{spawnSync as vn}from"node:child_process";function Ae(e,r=process.env){try{let t;try{t=Fr(e)}catch{t={executable:e,prefixArgs:[]}}let n=vn(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 we(e=process.env){let r=[],t=e.KYNVER_CURSOR_AUTH_HOME?.trim();t&&(r.push(M.join(t,".config","cursor","auth.json")),r.push(M.join(t,".cursor-agent","auth.json")));let n=bn();if(r.push(M.join(n,".config","cursor","auth.json")),r.push(M.join(n,".cursor-agent","auth.json")),process.platform==="win32"){let o=e.LOCALAPPDATA?.trim(),s=e.APPDATA?.trim();o&&r.push(M.join(o,"cursor-agent","auth.json")),s&&r.push(M.join(s,"cursor","auth.json"))}return r}var En="agent";function $r(e=new Date().toISOString()){let r=g(En,["KYNVER_CURSOR_AGENT_BIN","CURSOR_AGENT_BIN"]);if(process.env.CURSOR_API_KEY?.trim())return{providerId:"cursor",ready:!1,authSource:"api_key_env",sessionFingerprint:K("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=h(r,["-v"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=we().find(l=>Sn(l)),o=Ae(r),s=!!n||o.ok,i=t.ok&&s;return{providerId:"cursor",ready:i,authSource:"oauth_local",sessionFingerprint:n?y(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 Cn,readFileSync as On}from"node:fs";import{homedir as An}from"node:os";import Pe from"node:path";var wn=["OPENAI_API_KEY","ANTHROPIC_API_KEY","KYNVER_API_KEY","KYNVER_BASE_URL"];function Pn(){let e=process.env.HERMES_HOME?.trim(),r=e?Pe.resolve(e):Pe.join(An(),".hermes");return Pe.join(r,".env")}function In(e){try{let r=On(e,"utf8"),t=[];for(let n of wn)new RegExp(`^${n}=`,"m").test(r)&&t.push(n);return t}catch{return[]}}function Hr(e=new Date().toISOString()){let r=g("hermes",["KYNVER_HERMES_BIN","HERMES_BIN"]),t=h(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=Pn(),o=Cn(n),s=o?In(n):[],l=s.some(c=>c.endsWith("_API_KEY"))?"api_key_env":o?"oauth_local":"none",u=t.ok&&o;return{adapterId:"hermes",cliAvailable:t.ok,profileBound:o,authSource:l,sessionFingerprint:o?y(n):void 0,checkedAt:e,note:u?`Hermes profile bound (${s.length?`keys: ${s.join(", ")}`:"no API keys detected"})`:[t.note,o?void 0:"no ~/.hermes/.env"].filter(Boolean).join("; ")}}function jr(e={}){let r=e.nowIso?.()??new Date().toISOString(),t=H(r),n={codex:t,cursor:$r(r),claude:Lr(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:Hr(r),hermesOpenAiCodex:ie(r),codexAdapterPath:t.path,readyCount:o}}var Tn=[/\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],Nn=[/\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 Ie(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function Kn(e){let r=Ie(e,"executorRef").toLowerCase(),t=Ie(e,"title").toLowerCase(),n=Ie(e,"description").toLowerCase(),o=`${r}
1
+ var a=(e,r,t)=>()=>{if(t)throw t[0];try{return e&&(r=e(e=0)),r}catch(n){throw t=[n],n}};import{homedir as $e}from"node:os";import He from"node:path";function mt(e){return e==="~"?$e():e.startsWith("~/")||e.startsWith("~\\")?He.join($e(),e.slice(2)):e}function x(e){return He.resolve(mt(e))}var b=a(()=>{"use strict"});function k(e=process.platform){return e!=="win32"}var je=a(()=>{"use strict"});var d=a(()=>{"use strict";je()});var ft,Eo,gt,So,he=a(()=>{"use strict";ft=["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"],Eo=new Set(ft),gt=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],So=new Set(gt)});var Z=a(()=>{"use strict";b();d();he()});var Ye=a(()=>{"use strict";Z()});var ye=a(()=>{"use strict";Z();b();Ye()});var ke=a(()=>{"use strict";d()});var v=a(()=>{"use strict"});var Q=a(()=>{"use strict"});var Ve=a(()=>{"use strict"});var Yo,Vo,Re=a(()=>{"use strict";Yo=25*1024*1024*1024,Vo=12*1024*1024*1024});var Xo,Zo,Ge=a(()=>{"use strict";Re();Xo=5*1024*1024*1024,Zo=10*1024*1024*1024});var oi,ii,_e=a(()=>{"use strict";Ge();Re();oi=30*1024*1024*1024,ii=15*1024*1024*1024});var qe=a(()=>{"use strict";d()});import Rt from"node:path";var fi,be=a(()=>{"use strict";b();qe();fi=Rt.join(".openclaw","harness")});var re=a(()=>{"use strict";E();v();Q();te();be()});var Xe=a(()=>{"use strict";E();be();re();d()});var oe=a(()=>{"use strict";Xe();d()});var Qe=a(()=>{"use strict";oe();d()});var er=a(()=>{"use strict"});var rr=a(()=>{"use strict";er();d()});var tr=a(()=>{"use strict"});var nr=a(()=>{"use strict";tr()});var ie=a(()=>{"use strict"});var or=a(()=>{"use strict"});var ir=a(()=>{"use strict"});var sr=a(()=>{"use strict";nr();d();ie();or();ir()});var ds,R=a(()=>{"use strict";ds=String.raw`"use strict";
2
+ const cp = require("child_process"), fs = require("fs");
3
+ const argv = process.argv.slice(1);
4
+ const exitFile = argv[0], cmd = argv[1], args = argv.slice(2);
5
+ const startedMs = Date.now();
6
+ function cgroupOomKills() {
7
+ try {
8
+ const line = fs.readFileSync("/proc/self/cgroup", "utf8").split("\n").find((l) => l.startsWith("0::"));
9
+ if (!line) return null;
10
+ const file = "/sys/fs/cgroup" + line.slice(3).trim().replace(/\/$/, "") + "/memory.events";
11
+ const m = /(?:^|\n)oom_kill (\d+)/.exec(fs.readFileSync(file, "utf8"));
12
+ return m ? Number(m[1]) : null;
13
+ } catch { return null; }
14
+ }
15
+ function kernelLog() {
16
+ const override = process.env.KYNVER_EXIT_CAPTURE_KERNEL_LOG_FILE;
17
+ if (override) { try { return fs.readFileSync(override, "utf8"); } catch { return ""; } }
18
+ const run = (bin, a) => {
19
+ try {
20
+ const r = cp.spawnSync(bin, a, { encoding: "utf8", timeout: 3000, maxBuffer: 8 * 1024 * 1024, stdio: ["ignore", "pipe", "ignore"] });
21
+ return r.status === 0 ? String(r.stdout || "") : "";
22
+ } catch { return ""; }
23
+ };
24
+ return run("journalctl", ["-k", "-q", "--no-pager", "--since", "@" + Math.floor(startedMs / 1000)]) || run("dmesg", []);
25
+ }
26
+ const oomBefore = cgroupOomKills();
27
+ let child, finished = false;
28
+ function write(rec) {
29
+ try { fs.writeFileSync(exitFile, JSON.stringify(rec, null, 2) + "\n"); } catch {}
30
+ }
31
+ function finish(code, signal, spawnError) {
32
+ if (finished) return;
33
+ finished = true;
34
+ const rec = { exitCode: code, signal: signal || null, startedAt: new Date(startedMs).toISOString(), endedAt: new Date().toISOString(), childPid: child && child.pid };
35
+ if (spawnError) rec.spawnError = spawnError;
36
+ if (signal === "SIGKILL" || code === 137 || (code !== 0 && code !== null)) {
37
+ const oomAfter = cgroupOomKills();
38
+ if (oomBefore !== null && oomAfter !== null && oomAfter > oomBefore) {
39
+ rec.oomEvidence = { source: "cgroup", detail: "memory.events oom_kill " + oomBefore + " -> " + oomAfter };
40
+ } else if (signal === "SIGKILL" || code === 137) {
41
+ const pid = child && child.pid;
42
+ const hit = kernelLog().split("\n").find((l) => pid && new RegExp("(?:Killed process|oom-kill:.*pid=|Memory cgroup out of memory: Killed process) ?" + pid + "\\b").test(l));
43
+ if (hit) rec.oomEvidence = { source: "kernel_log", detail: hit.trim().slice(0, 300) };
44
+ }
45
+ }
46
+ write(rec);
47
+ if (signal) {
48
+ const n = (require("os").constants.signals || {})[signal];
49
+ process.exit(128 + (n || 9));
50
+ }
51
+ process.exit(code === null ? 1 : code);
52
+ }
53
+ try {
54
+ child = cp.spawn(cmd, args, { stdio: "inherit" });
55
+ } catch (e) {
56
+ process.stderr.write("failed to spawn worker process: " + (e && e.message) + "\n");
57
+ finish(127, null, String(e && e.message));
58
+ }
59
+ for (const s of ["SIGTERM", "SIGINT", "SIGHUP"]) process.on(s, () => { try { child.kill(s); } catch {} });
60
+ child.on("error", (e) => {
61
+ process.stderr.write("failed to spawn worker process: " + (e && e.message) + "\n");
62
+ if (!child.pid) finish(127, null, String(e && e.message));
63
+ });
64
+ child.on("exit", (code, signal) => finish(code, signal));
65
+ `});var ar=a(()=>{"use strict";oe();d();R()});var lr=a(()=>{"use strict";ie()});var cr=a(()=>{"use strict"});var Ss,Cs,ur=a(()=>{"use strict";Z();Ss=10*6e4,Cs=60*6e4});var dr=a(()=>{"use strict"});var ve=a(()=>{"use strict"});var pr=a(()=>{"use strict"});var mr=a(()=>{"use strict";ve();pr()});var fr=a(()=>{"use strict";rr();sr();ar();R();ie();lr();cr();ur();dr();mr();ve();d()});var gr=a(()=>{"use strict";fr();d()});var Nt,Kt,hr=a(()=>{"use strict";Ve();E();v();Q();te();_e();oe();Qe();gr();d();Nt=500*1024*1024,Kt=4*1024*1024*1024});var te=a(()=>{"use strict";hr()});import{homedir as Wt}from"node:os";import Mt from"node:path";var yr,Ee=a(()=>{"use strict";yr=Mt.join(Wt(),".kynver",".env")});var kr=a(()=>{"use strict"});var Rr=a(()=>{"use strict";kr()});var _r=a(()=>{"use strict"});var xr=a(()=>{"use strict";d()});var Se=a(()=>{"use strict";Rr();_r();xr()});var br=a(()=>{"use strict"});var vr=a(()=>{"use strict";br()});var se=a(()=>{"use strict";Ee();b();E();Se();vr()});var Er=a(()=>{"use strict";v();v()});var Sr=a(()=>{"use strict";Ee();Se();se()});var Ce=a(()=>{"use strict"});var Cr=a(()=>{"use strict";ye();v();Er();E();se();Sr();ke();Ce();re()});function S(e){let r=e.trim().toLowerCase();return Vt[r]??r}var Or,Yt,Vt,ae=a(()=>{"use strict";Or=["claude","cursor","codex","gemini","gemini-api","openai-compatible"],Yt=Or.join("|"),Vt={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",google:"gemini",gemini_cli:"gemini",gemini_api:"gemini-api","google-api":"gemini-api",google_api:"gemini-api"}});var Ar=a(()=>{"use strict";b()});var wr=a(()=>{"use strict";Ar()});var Pr=a(()=>{"use strict"});var Ir=a(()=>{"use strict";Pr()});import{existsSync as qt,mkdirSync as dc,readFileSync as Jt,writeFileSync as pc}from"node:fs";import{homedir as zt,totalmem as fc}from"node:os";import Oe from"node:path";function Xt(e){return{...e,...e.harnessRoot?.trim()?{harnessRoot:x(e.harnessRoot.trim())}:{},...e.defaultRepo?.trim()?{defaultRepo:x(e.defaultRepo.trim())}:{}}}function N(){if(!qt(Tr))return{};try{return Xt(JSON.parse(Jt(Tr,"utf8")))}catch{return{}}}var Nr,Tr,Pc,Ic,Tc,E=a(()=>{"use strict";ye();b();ke();v();Q();te();_e();se();Cr();ae();re();wr();Ce();Ir();Nr=Oe.join(zt(),".kynver"),Tr=Oe.join(Nr,"config.json"),Pc=Oe.join(Nr,"credentials");Ic=500*1024*1024,Tc=4*1024*1024*1024});var lt=/^claude[-_]/i,ct=/^(?:opus|sonnet|haiku)\b/i;function Ue(e){let r=e.trim();return lt.test(r)||ct.test(r)}function Le(e){let r=e.trim().toLowerCase();return r.startsWith("gpt-")||r.startsWith("gpt5")||r.includes("codex")}function fe(e){let r=e.trim().toLowerCase();return r.includes("composer")||r.includes("cursor")}function Fe(e){return e.trim().toLowerCase().startsWith("gemini-")}function ut(e){return Le(e)?"codex":Ue(e)?"claude":Fe(e)?"gemini":(fe(e),"cursor")}function dt(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==="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 pt(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?Ue(n)||Le(n)||fe(n)||Fe(n)?{lane:t,model:n,provider:ut(n),rule:"executor_ref:harness_lane_model"}:{lane:t,rule:"executor_ref:harness_lane"}:{lane:t,rule:"executor_ref:harness_lane"}}function f(e){let r=typeof e=="string"?e.trim():"";return r?dt(r)??pt(r):null}function ge(e){let r=f(e);return r?!!(r.provider&&r.provider!=="cursor"||r.model&&!fe(r.model)):!1}E();var Kr={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 K(e){return Kr[e]}function Wr(){return Object.values(Kr)}import{existsSync as cn}from"node:fs";import{homedir as un}from"node:os";import H from"node:path";import{createHash as Ur}from"node:crypto";import{statSync as ln}from"node:fs";import{spawnSync as Lr}from"node:child_process";import{existsSync as Br,readFileSync as Zt}from"node:fs";import C from"node:path";var $=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},Qt=".COM;.EXE;.BAT;.CMD";function en(e){return e.includes("/")||e.includes("\\")}function rn(e){return(e.PATHEXT||Qt).split(";").map(r=>r.trim().toLowerCase()).filter(r=>r.startsWith("."))}function tn(e){let r=Object.keys(e).find(t=>t.toUpperCase()==="PATH");return r?e[r]??"":""}function nn(e,r={}){let t=r.env??process.env,n=r.exists??Br,o=rn(t),s=C.win32.extname(e)!=="",i=l=>s?[l]:o.map(c=>`${l}${c}`);if(en(e)||C.win32.isAbsolute(e))return i(e).find(l=>n(l))??null;for(let l of tn(t).split(";").map(c=>c.trim()).filter(Boolean)){let c=i(C.win32.join(l,e)).find(u=>n(u));if(c)return c}return null}var Mr=/%~?dp0%?\\?([^"%\r\n]+?\.(?:c|m)?js)\b/i,on=/^\s*SET\s+"?([A-Za-z_]\w*)=([^"\r\n]*)"?\s*$/i;function Dr(e){return e.replace(/^[\\/]+/,"")}function sn(e){let r=e.split(/\r?\n/),t=new Map;for(let s of r){let i=on.exec(s);i&&t.set(i[1].toUpperCase(),i[2])}let n=r.filter(s=>s.includes("%*")).pop();if(!n)return null;let o=Mr.exec(n);if(o)return Dr(o[1]);for(let s of n.matchAll(/%([A-Za-z_]\w*)%/g)){let i=t.get(s[1].toUpperCase()),l=i?Mr.exec(i):null;if(l)return Dr(l[1])}return null}function an(e,r={}){if((r.platform??process.platform)!=="win32")return{executable:e,prefixArgs:[],kind:"passthrough"};let n=nn(e,r);if(!n)return{executable:e,prefixArgs:[],kind:"passthrough"};let o=C.win32.extname(n).toLowerCase();if(o!==".cmd"&&o!==".bat")return{executable:n,prefixArgs:[],kind:"exe"};let s=r.readText??(me=>Zt(me,"utf8")),i=r.exists??Br,l;try{l=s(n)}catch{throw new $(n)}let c=sn(l);if(!c)throw new $(n);let u=C.win32.dirname(n),p=C.win32.join(u,c);if(!i(p))throw new $(n);let F=C.win32.join(u,"node.exe");return{executable:i(F)?F:r.nodeExecutable??process.execPath,prefixArgs:[p],kind:"node-shim"}}function O(e,r,t={}){let n=an(e,t);return[n.executable,[...n.prefixArgs,...r]]}function y(e){try{let r=ln(e),t=`${e}|${r.size}|${r.mtimeMs}`;return Ur("sha256").update(t).digest("hex").slice(0,16)}catch{return}}function W(e){return Ur("sha256").update(`env:${e}`).digest("hex").slice(0,16)}function g(e,r){for(let t of r){let n=process.env[t]?.trim();if(n)return n}return e}function h(e,r,t={}){let n=t.timeoutMs??8e3;try{let[o,s]=O(e,r),i=Lr(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 l=(i.stderr||i.stdout||"").trim(),c=t.failPrefix??`${e} ${r.join(" ")} failed`;return{ok:!1,note:l?`${c}: ${l.slice(0,200)}`:c}}catch(o){return{ok:!1,note:o instanceof Error?o.message:`${e} probe failed`}}}function le(e,r,t={}){let n=t.timeoutMs??8e3;try{let[o,s]=O(e,r);return Lr(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 dn="codex";function pn(){let e=un();return[process.env.CODEX_HOME?.trim()?H.join(H.resolve(process.env.CODEX_HOME.trim()),"auth.json"):null,H.join(e,".codex","auth.json"),H.join(e,".config","codex","auth.json")].filter(t=>!!t)}function mn(e){return H.dirname(e)}function fn(e){let r,t;for(let n of pn()){if(!cn(n))continue;r??=n;let o=h(e,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status",env:{CODEX_HOME:mn(n)}});if(t??=o,o.ok)return{authPath:n,login:o}}return{authPath:r,login:t??h(e,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status"})}}function Fr(e=new Date().toISOString()){let r=g(dn,["KYNVER_CODEX_BIN","CODEX_BIN"]);if(process.env.CODEX_API_KEY?.trim())return{providerId:"codex",ready:!0,authSource:"api_key_env",sessionFingerprint:W("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}=fn(r),o=!!t&&n.ok;return{providerId:"codex",ready:o,authSource:"oauth_local",sessionFingerprint:t?y(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 gn}from"node:fs";import{homedir as hn}from"node:os";import Ae from"node:path";function yn(){let e=process.env.HERMES_HOME?.trim(),r=e?Ae.resolve(e):Ae.join(hn(),".hermes");return Ae.join(r,"auth.json")}function ce(e=new Date().toISOString()){let r=g("hermes",["KYNVER_HERMES_BIN","HERMES_BIN"]),t=h(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=yn(),o=gn(n),s=le(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?y(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 j(e=new Date().toISOString()){let r=Fr(e);if(r.ready)return{...r,path:"codex_cli"};let t=ce(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 $r=["low","medium","high"],Hr={oauth_local:0,subscription_hermes:0,runner_token:1,api_key_env:2,none:3};function jr(e,r){let t=K(e);return r==="privileged"?t.supportsPrivilegedPlatformActions:r==="low"?t.supportsLowRiskOrchestration:!0}function kn(e,r){let t=K(e.providerId),n=K(r.providerId),o=$r.indexOf(t.costTier)-$r.indexOf(n.costTier);if(o!==0)return o;let s=Hr[e.binding.authSource]-Hr[r.binding.authSource];return s!==0?s:e.providerId.localeCompare(r.providerId)}function we(e){let r=Wr().map(l=>({providerId:l.id,binding:e.inventory.bindings[l.id]})).filter(l=>l.binding.ready&&jr(l.providerId,e.riskClass));if(r.length===0)return null;let n=[...r].sort(kn)[0],o="codex";if(n.providerId===o)return{providerId:n.providerId,binding:n.binding};let s=e.inventory.bindings[o],i;return jr(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 Rn}from"node:fs";import{homedir as _n}from"node:os";import xn from"node:path";var bn="claude";function vn(){let e=_n();return[xn.join(e,".claude",".credentials.json")]}function Yr(e=new Date().toISOString()){let r=g(bn,["KYNVER_CLAUDE_BIN","CLAUDE_BIN"]);if(process.env.ANTHROPIC_API_KEY?.trim())return{providerId:"claude",ready:!1,authSource:"api_key_env",sessionFingerprint:W("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=h(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=vn().find(i=>Rn(i)),o=le(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?y(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 Tn}from"node:fs";import{homedir as In}from"node:os";import D from"node:path";R();import{closeSync as yu,existsSync as An,mkdirSync as ku,openSync as Ru,statSync as _u,unlinkSync as xu}from"node:fs";d();import M from"node:path";he();import{existsSync as Y,readdirSync as En}from"node:fs";import A from"node:path";var Sn=/^\d{4}\.\d{1,2}\.\d{1,2}-[a-f0-9]+$/i;function Cn(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 On(e){let r=A.join(e,"versions");if(!Y(r))return null;let t=null,n=-1;for(let o of En(r,{withFileTypes:!0})){if(!o.isDirectory()||!Sn.test(o.name))continue;let s=Cn(o.name);s==null||s<=n||(n=s,t=A.join(r,o.name))}return t}function Pe(e){let r=e?.trim()||A.join(process.env.LOCALAPPDATA||"","cursor-agent"),t=A.join(r,"node.exe"),n=A.join(r,"index.js");if(Y(t)&&Y(n))return{nodeExe:t,indexJs:n,versionDir:r};let o=On(r);if(!o)return null;let s=A.join(o,"node.exe"),i=A.join(o,"index.js");return!Y(s)||!Y(i)?null:{nodeExe:s,indexJs:i,versionDir:o}}function wn(e,r,t){return{executable:e,prefixArgs:[r],shell:!1,detached:k(),bundledVersionDir:t}}function Vr(e){if(process.platform==="win32"){let r=/\.(cmd|bat)$/i.test(e),t=/node\.exe$/i.test(e)&&An(M.join(M.dirname(e),"index.js"));if(r||t||e==="agent"){let o=r?Pe(M.dirname(e)):t?{nodeExe:e,indexJs:M.join(M.dirname(e),"index.js"),versionDir:M.dirname(e)}:Pe();if(o)return wn(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:k()}}import{spawnSync as Pn}from"node:child_process";function Ie(e,r=process.env){try{let t;try{t=Vr(e)}catch{t={executable:e,prefixArgs:[]}}let n=Pn(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 Te(e=process.env){let r=[],t=e.KYNVER_CURSOR_AUTH_HOME?.trim();t&&(r.push(D.join(t,".config","cursor","auth.json")),r.push(D.join(t,".cursor-agent","auth.json")));let n=In();if(r.push(D.join(n,".config","cursor","auth.json")),r.push(D.join(n,".cursor-agent","auth.json")),process.platform==="win32"){let o=e.LOCALAPPDATA?.trim(),s=e.APPDATA?.trim();o&&r.push(D.join(o,"cursor-agent","auth.json")),s&&r.push(D.join(s,"cursor","auth.json"))}return r}var Nn="agent";function Gr(e=new Date().toISOString()){let r=g(Nn,["KYNVER_CURSOR_AGENT_BIN","CURSOR_AGENT_BIN"]);if(process.env.CURSOR_API_KEY?.trim())return{providerId:"cursor",ready:!1,authSource:"api_key_env",sessionFingerprint:W("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=h(r,["-v"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=Te().find(l=>Tn(l)),o=Ie(r),s=!!n||o.ok,i=t.ok&&s;return{providerId:"cursor",ready:i,authSource:"oauth_local",sessionFingerprint:n?y(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 Kn,readFileSync as Wn}from"node:fs";import{homedir as Mn}from"node:os";import Ne from"node:path";var Dn=["OPENAI_API_KEY","ANTHROPIC_API_KEY","KYNVER_API_KEY","KYNVER_BASE_URL"];function Bn(){let e=process.env.HERMES_HOME?.trim(),r=e?Ne.resolve(e):Ne.join(Mn(),".hermes");return Ne.join(r,".env")}function Un(e){try{let r=Wn(e,"utf8"),t=[];for(let n of Dn)new RegExp(`^${n}=`,"m").test(r)&&t.push(n);return t}catch{return[]}}function qr(e=new Date().toISOString()){let r=g("hermes",["KYNVER_HERMES_BIN","HERMES_BIN"]),t=h(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=Bn(),o=Kn(n),s=o?Un(n):[],l=s.some(u=>u.endsWith("_API_KEY"))?"api_key_env":o?"oauth_local":"none",c=t.ok&&o;return{adapterId:"hermes",cliAvailable:t.ok,profileBound:o,authSource:l,sessionFingerprint:o?y(n):void 0,checkedAt:e,note:c?`Hermes profile bound (${s.length?`keys: ${s.join(", ")}`:"no API keys detected"})`:[t.note,o?void 0:"no ~/.hermes/.env"].filter(Boolean).join("; ")}}function Jr(e={}){let r=e.nowIso?.()??new Date().toISOString(),t=j(r),n={codex:t,cursor:Gr(r),claude:Yr(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:qr(r),hermesOpenAiCodex:ce(r),codexAdapterPath:t.path,readyCount:o}}var Ln=[/\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],Fn=[/\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 Ke(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function $n(e){let r=Ke(e,"executorRef").toLowerCase(),t=Ke(e,"title").toLowerCase(),n=Ke(e,"description").toLowerCase(),o=`${r}
2
66
  ${t}
3
- ${n}`;return Tn.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":Nn.some(s=>s.test(o))?"low":"elevated"}function Wn(e){let r=N(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 Mn(e){let r=e.inventory??jr();return e.codexBinding?{...r,bindings:{...r.bindings,codex:e.codexBinding}}:r}function A(e){let r=Wn({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 Yr(e){let r=e.task??{},t=Kn(r),n=Mn({inventory:e.inventory,codexBinding:e.codexBinding??(e.inventory?null:H())}),o=e.preferLowCost===!1?null:e.explicitProvider?.trim().toLowerCase(),s=e.explicitModel?.trim()||void 0,i=D;if(o==="codex"||o==="provider:codex"){let c=n.bindings.codex;if(!c.ready){let p=Ce({inventory:n,riskClass:t});return A(p?{providerId:p.providerId,binding:p.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 A({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 A({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 A({providerId:"claude",binding:c,riskClass:t,routingRule:"orchestration:explicit_claude",model:s})}let l=Ce({inventory:n,riskClass:t});if(l)return A({providerId:l.providerId,binding:l.binding,riskClass:t,routingRule:`orchestration:cost_aware_${l.providerId}`,model:s,escalatedFrom:l.escalatedFrom,escalatedReason:l.escalatedReason});let u=n.bindings.codex;return A({providerId:i,binding:n.bindings[i],riskClass:t,routingRule:u.ready?"orchestration:inventory_empty_default_cursor":"orchestration:codex_unavailable_default_cursor",model:s,...u.ready?{}:{escalatedFrom:"codex",escalatedReason:u.note??"codex oauth not bound"}})}d();var Vr="kynver",Gr=["agent_os_context_envelope","agent_os_search_memory","agent_os_search_skills","agent_os_get_skill","agent_os_progress_note"],Dn=Gr.map(e=>`mcp__${Vr}__${e}`);var V="claude-sonnet-4-6",G="claude-opus-4-8";d();d();var Xc=process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.5";function Un(){return process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.5"}var B=Un();d();var Te="openai-compatible",Od=600*1e3;d();var w="gemini";function P(e=process.env){return e.KYNVER_GEMINI_DEFAULT_MODEL?.trim()||"gemini-2.5-pro"}var U="gemini-api";var Jd=600*1e3;var zr="claude-sonnet-4-6",q="composer-2.5";function m(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function $n(e){if(!e)return;let r=m(e,"workerModelOverride")||m(e,"modelOverride");return r||`${m(e,"title")}
67
+ ${n}`;return Ln.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":Fn.some(s=>s.test(o))?"low":"elevated"}function Hn(e){let r=K(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 jn(e){let r=e.inventory??Jr();return e.codexBinding?{...r,bindings:{...r.bindings,codex:e.codexBinding}}:r}function w(e){let r=Hn({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 zr(e){let r=e.task??{},t=$n(r),n=jn({inventory:e.inventory,codexBinding:e.codexBinding??(e.inventory?null:j())}),o=e.preferLowCost===!1?null:e.explicitProvider?.trim().toLowerCase(),s=e.explicitModel?.trim()||void 0,i=B;if(o==="codex"||o==="provider:codex"){let u=n.bindings.codex;if(!u.ready){let p=we({inventory:n,riskClass:t});return w(p?{providerId:p.providerId,binding:p.binding,riskClass:t,routingRule:"orchestration:explicit_codex_unavailable_cost_aware",model:s,escalatedFrom:"codex",escalatedReason:u.note??"codex oauth not bound"}:{providerId:i,binding:n.bindings[i],riskClass:t,routingRule:"orchestration:codex_unavailable_escalate_cursor",model:s,escalatedFrom:"codex",escalatedReason:u.note??"codex oauth not bound"})}return w({providerId:"codex",binding:u,riskClass:t,routingRule:"orchestration:explicit_codex",model:s})}if(o==="cursor"||o==="provider:cursor"){let u=n.bindings.cursor;if(u.ready)return w({providerId:"cursor",binding:u,riskClass:t,routingRule:"orchestration:explicit_cursor",model:s})}if(o==="claude"||o==="provider:claude"){let u=n.bindings.claude;if(u.ready)return w({providerId:"claude",binding:u,riskClass:t,routingRule:"orchestration:explicit_claude",model:s})}let l=we({inventory:n,riskClass:t});if(l)return w({providerId:l.providerId,binding:l.binding,riskClass:t,routingRule:`orchestration:cost_aware_${l.providerId}`,model:s,escalatedFrom:l.escalatedFrom,escalatedReason:l.escalatedReason});let c=n.bindings.codex;return w({providerId:i,binding:n.bindings[i],riskClass:t,routingRule:c.ready?"orchestration:inventory_empty_default_cursor":"orchestration:codex_unavailable_default_cursor",model:s,...c.ready?{}:{escalatedFrom:"codex",escalatedReason:c.note??"codex oauth not bound"}})}R();d();var Xr="kynver",Zr=["agent_os_context_envelope","agent_os_search_memory","agent_os_search_skills","agent_os_get_skill","agent_os_progress_note"],Yn=Zr.map(e=>`mcp__${Xr}__${e}`);var q="claude-sonnet-4-6",J="claude-opus-4-8";R();d();R();d();var Sd=process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.5";function Gn(){return process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.5"}var U=Gn();R();d();var We="openai-compatible",np=600*1e3;R();d();var P="gemini";function I(e=process.env){return e.KYNVER_GEMINI_DEFAULT_MODEL?.trim()||"gemini-2.5-pro"}var L="gemini-api";var Cp=600*1e3;var rt="claude-sonnet-4-6",z="composer-2.5";function m(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function zn(e){if(!e)return;let r=m(e,"workerModelOverride")||m(e,"modelOverride");return r||`${m(e,"title")}
4
68
  ${m(e,"description")}
5
- ${m(e,"executorRef")}`.match(/\[(?:worker-)?model:\s*([^\]\n]+)\]/i)?.[1]?.trim()||void 0}function qr(e){return e.toLowerCase()}function le(e=T()){let r=e.defaultModel?.trim();if(r)return r;let t=process.env.KYNVER_DEFAULT_MODEL?.trim();return t||zr}function se(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-")?w:"cursor"}function Hn(e,r){let t=e.trim().toLowerCase(),n=r?.trim();return t==="cursor"?{model:q,provider:"cursor",rule:n&&n!=="cursor"?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:t==="claude"||t==="anthropic"?{model:V,provider:"claude",rule:n&&n!=="claude"?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:t==="gemini"||t==="google"?{model:P(),provider:w,rule:n&&n!==w?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:t==="gemini-api"||t==="gemini_api"||t==="google-api"?{model:P(),provider:U,rule:n&&n!==U?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:null}function Jr(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 jn=new Set(["report_reviewer","deep_reviewer","plan_reviewer"]);function Xr(e,r,t){return jn.has(e)?G:r.includes("review")||/^review[\s:]/.test(t)||t.includes("critique")?G:V}function Qr(e){let r=qr(m(e,"executorRef")),t=m(e,"title").toLowerCase(),n=m(e,"priority")||"normal",o=qr(m(e,"roleLane"));if(r.includes("provider:claude")||r.startsWith("claude:")){let i=Xr(o,r,t);return{provider:"claude",model:i,rule:i===G?"factory:claude_review":"factory:claude_implementation"}}if(r.includes("provider:codex")||r.startsWith("codex:"))return{provider:"codex",model:B,rule:"lane:codex_orchestration"};if(r.includes("provider:chatgpt")||r.startsWith("chatgpt:")||r.includes("provider:gpt")||r.startsWith("gpt:")){let i=f(m(e,"executorRef"));return{provider:"codex",...i?.model?{model:i.model}:{model:B},rule:"lane:codex_orchestration"}}if(r.includes("provider:openai")||r.startsWith("openai-compatible:")){let i=f(m(e,"executorRef"));return{provider:Te,...i?.model?{model:i.model}:{},rule:"lane:openai_compatible"}}if(r.includes("provider:gemini-api")||r.startsWith("gemini-api:")){let i=f(m(e,"executorRef"));return{provider:U,...i?.model?{model:i.model}:{model:P()},rule:"lane:gemini_api"}}if(r.includes("provider:gemini")||r.startsWith("gemini:")){let i=f(m(e,"executorRef"));return{provider:w,...i?.model?{model:i.model}:{model:P()},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:B,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 Jr(r,t)||o==="deep_reviewer"?{provider:"cursor",rule:"lane:deep_review"}:{provider:"cursor",rule:"lane:review"};if(Jr(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=le();return{model:s,provider:se(s),rule:"default:global"}}function Yn(e){return e?f(m(e,"executorRef")):null}function Vn(e){switch(S(e)){case w:case U:return P();case"claude":return V;case"codex":return B;case"cursor":return q;default:return}}var Ne="explicit:cli_provider",Zr="config:worker_provider";function et(e,r,t){let n=S(r);return n===e.provider&&e.rule===t?e:{...e,provider:n,model:Vn(n)??e.model,rule:t}}function Gn(e,r){let t=r?.trim();return!t||e.rule.startsWith("explicit:")&&e.rule!==Ne?e:et(e,t,Ne)}function qn(e,r){if(r.explicitProvider?.trim()||Ke(r.task))return e;let t=r.configuredProvider?.trim();if(!t)return e;let n=S(t);return n===D||n===e.provider?e:et(e,n,Zr)}function Jn(e){let r,t=Yn(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 u=e.explicitModel.trim(),c=Hn(u,e.explicitProvider);c?r=c:r={model:u,provider:e.explicitProvider?.trim()||se(u),rule:"explicit:cli",requestedModel:u}}else if(n)r={model:n,provider:o||se(n),rule:t?.rule??"executor_ref:model",requestedModel:n};else if(e.task&&ae(e.task)){let u=$n(e.task),c,p;if(u)c=u,p="task:provider_override";else{let L=typeof e.task.roleLane=="string"?e.task.roleLane.toLowerCase():"",We=typeof e.task.executorRef=="string"?e.task.executorRef.toLowerCase():"",ue=typeof e.task.title=="string"?e.task.title.toLowerCase():"";c=Xr(L,We,ue),p=c===G?"factory:claude_review":"factory:claude_implementation"}r={model:c,provider:"claude",rule:p,requestedModel:c}}else if(e.task&&Object.keys(e.task).length>0){let u=Qr(e.task);r={...u,requestedModel:u.model}}else{let u=le();r={model:u,provider:e.explicitProvider?.trim()||se(u),rule:"default:global",requestedModel:u}}r=Gn(r,e.explicitProvider),r=qn(r,{explicitProvider:e.explicitProvider,task:e.task,configuredProvider:e.configuredProvider});let s=!!e.configuredProvider?.trim()&&S(e.configuredProvider)!==D&&r.rule==="config:worker_provider",i=rt({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===Ne||i.rule===Zr||R(i.provider)&&(e.explicitProviderIsOperatorOverride||ae(e.task))||i.provider===Te||i.provider===w||i.provider===U||i.provider==="codex")return i;let l=Yr({task:e.task,explicitProvider:e.explicitProvider??i.provider,explicitModel:i.model,inventory:e.orchestrationInventory??void 0});return{provider:l.provider,model:l.provider==="codex"?l.model??i.model??B:i.model,rule:l.rule,requestedModel:i.requestedModel,orchestrationAudit:l.audit}}function zn(e,r,t){return e||r||t||le()||V}ne();ne();var D="cursor",Xn=new Set(["claude","opus","anthropic"]),Qn=[/\[worker-provider:\s*claude\]/i,/\[use-claude-worker\]/i,/\[operator-worker-provider:\s*claude\]/i];function J(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function R(e){if(!e?.trim())return!1;let r=e.trim().toLowerCase();return Xn.has(r)?!0:r.includes("claude")||r.includes("opus")}function ae(e){if(!e)return!1;let r=e.workerProviderOverride;if(typeof r=="string"&&R(r))return!0;let t=J(e,"executorRef").toLowerCase();if(t==="provider:claude"||t.startsWith("provider:claude:")||t.includes("claude-worker-override")||t.includes("operator-claude"))return!0;let n=f(J(e,"executorRef"));if(n?.provider&&R(n.provider)||n?.model&&R(Zn(n.model)))return!0;let o=J(e,"description");if(Qn.some(i=>i.test(o)))return!0;let s=J(e,"title");return!!/\[use-claude-worker\]/i.test(s)}function Zn(e){let r=e.trim().toLowerCase();return/^claude[-_]/.test(r)||/^(?:opus|sonnet|haiku)\b/.test(r)?"claude":r}function eo(e,r){return{provider:D,model:q,rule:`policy:cursor_default${r}`,requestedModel:e}}var ro=["explicit:","executor_ref:","factory:","task:"];function to(e){return ro.some(r=>e.startsWith(r))}function Ke(e){if(!e)return!1;let r=e.workerProviderOverride;return typeof r=="string"&&r.trim()||f(J(e,"executorRef"))?.provider?!0:ae(e)}function rt(e){let{routing:r,task:t}=e,n=e.explicitProvider?.trim().toLowerCase();if(e.explicitProviderIsOperatorOverride&&R(n))return{...r,provider:"claude",rule:r.rule.startsWith("explicit:")?r.rule:"explicit:operator_provider"};if(n||to(r.rule)||Ke(t)||!R(r.provider))return r;let o=r.rule&&r.rule!=="default:global"?`:${r.rule.replace(/:/g,"_")}`:"";return eo(r.model,o)}function no(e){let r=e?.executorRef;return typeof r=="string"?r.trim():""}function tt(e){return e?.trim()||void 0}function oo(e){let r=no(e.task),t=f(r),n=e.explicitProvider?.trim().toLowerCase(),o=tt(e.explicitModel??void 0),s=n||t?.provider,i=o||t?.model,l=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 u=e.routing.provider,c=tt(e.routing.model),p={provider:u,model:c,rule:e.routing.rule};return s&&s!=="cursor"||r&&de(r)||n&&n!=="cursor"?u==="cursor"?{ok:!1,error:`model_routing_mismatch: requested ${s??"non-cursor"}${i?` model=${i}`:""} (${l}) but routing resolved to cursor (${e.routing.rule})`,requested:{provider:s,model:i,source:l},resolved:p}:i&&c&&i!==c&&!R(u)?{ok:!1,error:`model_routing_mismatch: requested model=${i} (${l}) but routing resolved model=${c} (${e.routing.rule})`,requested:{provider:s,model:i,source:l},resolved:p}:{ok:!0,requested:{provider:s,model:i,source:l},resolved:p}:{ok:!0,resolved:p}}export{q as CURSOR_DEFAULT_MODEL,zr as GLOBAL_DEFAULT_MODEL,oo as assessDispatchModelGuard,de as executorRefRequestsNonCursorWorker,Qr as inferModelRoutingFromTask,f as parseExecutorRefRoutingIntent,le as resolveGlobalDefaultModel,zn as resolveModelFallback,Jn as resolveWorkerLaunch};
69
+ ${m(e,"executorRef")}`.match(/\[(?:worker-)?model:\s*([^\]\n]+)\]/i)?.[1]?.trim()||void 0}function Qr(e){return e.toLowerCase()}function pe(e=N()){let r=e.defaultModel?.trim();if(r)return r;let t=process.env.KYNVER_DEFAULT_MODEL?.trim();return t||rt}function ue(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-")?P:"cursor"}function Xn(e,r){let t=e.trim().toLowerCase(),n=r?.trim();return t==="cursor"?{model:z,provider:"cursor",rule:n&&n!=="cursor"?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:t==="claude"||t==="anthropic"?{model:q,provider:"claude",rule:n&&n!=="claude"?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:t==="gemini"||t==="google"?{model:I(),provider:P,rule:n&&n!==P?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:t==="gemini-api"||t==="gemini_api"||t==="google-api"?{model:I(),provider:L,rule:n&&n!==L?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:null}function et(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 Zn=new Set(["report_reviewer","deep_reviewer","plan_reviewer"]);function tt(e,r,t){return Zn.has(e)?J:r.includes("review")||/^review[\s:]/.test(t)||t.includes("critique")?J:q}function nt(e){let r=Qr(m(e,"executorRef")),t=m(e,"title").toLowerCase(),n=m(e,"priority")||"normal",o=Qr(m(e,"roleLane"));if(r.includes("provider:claude")||r.startsWith("claude:")){let i=tt(o,r,t);return{provider:"claude",model:i,rule:i===J?"factory:claude_review":"factory:claude_implementation"}}if(r.includes("provider:codex")||r.startsWith("codex:"))return{provider:"codex",model:U,rule:"lane:codex_orchestration"};if(r.includes("provider:chatgpt")||r.startsWith("chatgpt:")||r.includes("provider:gpt")||r.startsWith("gpt:")){let i=f(m(e,"executorRef"));return{provider:"codex",...i?.model?{model:i.model}:{model:U},rule:"lane:codex_orchestration"}}if(r.includes("provider:openai")||r.startsWith("openai-compatible:")){let i=f(m(e,"executorRef"));return{provider:We,...i?.model?{model:i.model}:{},rule:"lane:openai_compatible"}}if(r.includes("provider:gemini-api")||r.startsWith("gemini-api:")){let i=f(m(e,"executorRef"));return{provider:L,...i?.model?{model:i.model}:{model:I()},rule:"lane:gemini_api"}}if(r.includes("provider:gemini")||r.startsWith("gemini:")){let i=f(m(e,"executorRef"));return{provider:P,...i?.model?{model:i.model}:{model:I()},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:U,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 et(r,t)||o==="deep_reviewer"?{provider:"cursor",rule:"lane:deep_review"}:{provider:"cursor",rule:"lane:review"};if(et(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=pe();return{model:s,provider:ue(s),rule:"default:global"}}function Qn(e){return e?f(m(e,"executorRef")):null}function eo(e){switch(S(e)){case P:case L:return I();case"claude":return q;case"codex":return U;case"cursor":return z;default:return}}var Me="explicit:cli_provider",ot="config:worker_provider";function it(e,r,t){let n=S(r);return n===e.provider&&e.rule===t?e:{...e,provider:n,model:eo(n)??e.model,rule:t}}function ro(e,r){let t=r?.trim();return!t||e.rule.startsWith("explicit:")&&e.rule!==Me?e:it(e,t,Me)}function to(e,r){if(r.explicitProvider?.trim()||De(r.task))return e;let t=r.configuredProvider?.trim();if(!t)return e;let n=S(t);return n===B||n===e.provider?e:it(e,n,ot)}function no(e){let r,t=Qn(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 c=e.explicitModel.trim(),u=Xn(c,e.explicitProvider);u?r=u:r={model:c,provider:e.explicitProvider?.trim()||ue(c),rule:"explicit:cli",requestedModel:c}}else if(n)r={model:n,provider:o||ue(n),rule:t?.rule??"executor_ref:model",requestedModel:n};else if(e.task&&de(e.task)){let c=zn(e.task),u,p;if(c)u=c,p="task:provider_override";else{let F=typeof e.task.roleLane=="string"?e.task.roleLane.toLowerCase():"",Be=typeof e.task.executorRef=="string"?e.task.executorRef.toLowerCase():"",me=typeof e.task.title=="string"?e.task.title.toLowerCase():"";u=tt(F,Be,me),p=u===J?"factory:claude_review":"factory:claude_implementation"}r={model:u,provider:"claude",rule:p,requestedModel:u}}else if(e.task&&Object.keys(e.task).length>0){let c=nt(e.task);r={...c,requestedModel:c.model}}else{let c=pe();r={model:c,provider:e.explicitProvider?.trim()||ue(c),rule:"default:global",requestedModel:c}}r=ro(r,e.explicitProvider),r=to(r,{explicitProvider:e.explicitProvider,task:e.task,configuredProvider:e.configuredProvider});let s=!!e.configuredProvider?.trim()&&S(e.configuredProvider)!==B&&r.rule==="config:worker_provider",i=st({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===Me||i.rule===ot||_(i.provider)&&(e.explicitProviderIsOperatorOverride||de(e.task))||i.provider===We||i.provider===P||i.provider===L||i.provider==="codex")return i;let l=zr({task:e.task,explicitProvider:e.explicitProvider??i.provider,explicitModel:i.model,inventory:e.orchestrationInventory??void 0});return{provider:l.provider,model:l.provider==="codex"?l.model??i.model??U:i.model,rule:l.rule,requestedModel:i.requestedModel,orchestrationAudit:l.audit}}function oo(e,r,t){return e||r||t||pe()||q}ae();ae();var B="cursor",io=new Set(["claude","opus","anthropic"]),so=[/\[worker-provider:\s*claude\]/i,/\[use-claude-worker\]/i,/\[operator-worker-provider:\s*claude\]/i];function X(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function _(e){if(!e?.trim())return!1;let r=e.trim().toLowerCase();return io.has(r)?!0:r.includes("claude")||r.includes("opus")}function de(e){if(!e)return!1;let r=e.workerProviderOverride;if(typeof r=="string"&&_(r))return!0;let t=X(e,"executorRef").toLowerCase();if(t==="provider:claude"||t.startsWith("provider:claude:")||t.includes("claude-worker-override")||t.includes("operator-claude"))return!0;let n=f(X(e,"executorRef"));if(n?.provider&&_(n.provider)||n?.model&&_(ao(n.model)))return!0;let o=X(e,"description");if(so.some(i=>i.test(o)))return!0;let s=X(e,"title");return!!/\[use-claude-worker\]/i.test(s)}function ao(e){let r=e.trim().toLowerCase();return/^claude[-_]/.test(r)||/^(?:opus|sonnet|haiku)\b/.test(r)?"claude":r}function lo(e,r){return{provider:B,model:z,rule:`policy:cursor_default${r}`,requestedModel:e}}var co=["explicit:","executor_ref:","factory:","task:"];function uo(e){return co.some(r=>e.startsWith(r))}function De(e){if(!e)return!1;let r=e.workerProviderOverride;return typeof r=="string"&&r.trim()||f(X(e,"executorRef"))?.provider?!0:de(e)}function st(e){let{routing:r,task:t}=e,n=e.explicitProvider?.trim().toLowerCase();if(e.explicitProviderIsOperatorOverride&&_(n))return{...r,provider:"claude",rule:r.rule.startsWith("explicit:")?r.rule:"explicit:operator_provider"};if(n||uo(r.rule)||De(t)||!_(r.provider))return r;let o=r.rule&&r.rule!=="default:global"?`:${r.rule.replace(/:/g,"_")}`:"";return lo(r.model,o)}function po(e){let r=e?.executorRef;return typeof r=="string"?r.trim():""}function at(e){return e?.trim()||void 0}function mo(e){let r=po(e.task),t=f(r),n=e.explicitProvider?.trim().toLowerCase(),o=at(e.explicitModel??void 0),s=n||t?.provider,i=o||t?.model,l=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 c=e.routing.provider,u=at(e.routing.model),p={provider:c,model:u,rule:e.routing.rule};return s&&s!=="cursor"||r&&ge(r)||n&&n!=="cursor"?c==="cursor"?{ok:!1,error:`model_routing_mismatch: requested ${s??"non-cursor"}${i?` model=${i}`:""} (${l}) but routing resolved to cursor (${e.routing.rule})`,requested:{provider:s,model:i,source:l},resolved:p}:i&&u&&i!==u&&!_(c)?{ok:!1,error:`model_routing_mismatch: requested model=${i} (${l}) but routing resolved model=${u} (${e.routing.rule})`,requested:{provider:s,model:i,source:l},resolved:p}:{ok:!0,requested:{provider:s,model:i,source:l},resolved:p}:{ok:!0,resolved:p}}export{z as CURSOR_DEFAULT_MODEL,rt as GLOBAL_DEFAULT_MODEL,mo as assessDispatchModelGuard,ge as executorRefRequestsNonCursorWorker,nt as inferModelRoutingFromTask,f as parseExecutorRefRoutingIntent,pe as resolveGlobalDefaultModel,oo as resolveModelFallback,no as resolveWorkerLaunch};
@@ -1,8 +1,72 @@
1
- var l=(e,r,t)=>()=>{if(t)throw t[0];try{return e&&(r=e(e=0)),r}catch(n){throw t=[n],n}};function q(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 Re(e){let r=e.trim();if(!r)return null;let t=q(r);if(t)return t;let n=[],o=/```(?:json)?\s*([\s\S]*?)```/gi,s;for(;(s=o.exec(r))!==null;){let u=q(s[1]??"");u&&n.push(u)}let i=r.indexOf("{"),a=r.lastIndexOf("}");if(i>=0&&a>i){let u=q(r.slice(i,a+1));u&&n.push(u)}return n.length>0?n[n.length-1]:null}function xe(e){let r=e.finalResult??e.final_result;if(r!=null)return typeof r=="string"?Re(r)??(r.trim()||null):r;let t=typeof e.summary=="string"?e.summary.trim():"";if(!t)return null;let n=Re(t);return n||t}var Se=l(()=>{"use strict"});var _e=l(()=>{"use strict"});import{existsSync as rt,mkdirSync as Fn,readFileSync as tt,readdirSync as $n,renameSync as Ln,rmSync as Hn,statSync as Ee,writeFileSync as jn}from"node:fs";function X(e){console.error(e),process.exit(1)}function Z(e){return process.platform!=="win32"?e:{windowsHide:!0,...e}}function I(e){try{return JSON.parse(e)}catch{return null}}function P(e){try{return Ee(e).size}catch{return 0}}function T(e){try{return Ee(e).mtime.toISOString()}catch{return null}}function ve(e,r){return rt(e)?tt(e,"utf8").split(`
1
+ var l=(e,r,t)=>()=>{if(t)throw t[0];try{return e&&(r=e(e=0)),r}catch(n){throw t=[n],n}};function oe(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 We(e){let r=e.trim();if(!r)return null;let t=oe(r);if(t)return t;let n=[],o=/```(?:json)?\s*([\s\S]*?)```/gi,s;for(;(s=o.exec(r))!==null;){let u=oe(s[1]??"");u&&n.push(u)}let i=r.indexOf("{"),a=r.lastIndexOf("}");if(i>=0&&a>i){let u=oe(r.slice(i,a+1));u&&n.push(u)}return n.length>0?n[n.length-1]:null}function Be(e){let r=e.finalResult??e.final_result;if(r!=null)return typeof r=="string"?We(r)??(r.trim()||null):r;let t=typeof e.summary=="string"?e.summary.trim():"";if(!t)return null;let n=We(t);return n||t}var De=l(()=>{"use strict"});var Ue=l(()=>{"use strict"});import{existsSync as Ct,mkdirSync as Io,readFileSync as At,readdirSync as To,renameSync as No,rmSync as Ko,statSync as Me,writeFileSync as Wo}from"node:fs";function se(e){console.error(e),process.exit(1)}function ie(e){return process.platform!=="win32"?e:{windowsHide:!0,...e}}function D(e){try{return JSON.parse(e)}catch{return null}}function U(e){try{return Me(e).size}catch{return 0}}function M(e){try{return Me(e).mtime.toISOString()}catch{return null}}function F(e,r){return Ct(e)?At(e,"utf8").split(`
2
2
  `).slice(-r).join(`
3
- `):""}function K(e){if(!e)return!1;try{return process.kill(e,0),!0}catch{return!1}}function Ce(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 Q(e){return Math.max(0,Math.round((Date.now()-e)/1e3))}var g=l(()=>{"use strict";_e()});import{existsSync as nt,readFileSync as ot}from"node:fs";function Ae(e){return e==="complete"}function we(e){return Ae(e.lastHeartbeatPhase)?e.terminalFinalResult!==void 0&&e.terminalFinalResult!==null?e.terminalFinalResult:e.lastHeartbeatSummary?.trim()||"completed":null}function Oe(e){let r={heartbeatCount:0,lastHeartbeatAt:null,lastHeartbeatPhase:null,lastHeartbeatSummary:null,terminalFinalResult:null,heartbeatBlocker:null,timestampAnomalies:[],lastBoxResourceSnapshot:null,lastPrEvidence:[]};if(!nt(e))return r;let t=Date.now()+st,n=new Date(t).toISOString(),o=ot(e,"utf8").split(`
4
- `).filter(Boolean);for(let s of o){let i=I(s);if(!i||typeof i!="object"||Array.isArray(i))continue;let a=i;if(r.heartbeatCount++,a.ts){let u=String(a.ts),f=Date.parse(u);Number.isFinite(f)&&f>t?r.timestampAnomalies.push({kind:"future_heartbeat_timestamp",observedAt:u,clampedTo:n}):r.lastHeartbeatAt=u}a.phase!==void 0&&a.phase!==null&&(r.lastHeartbeatPhase=String(a.phase)),a.summary!==void 0&&a.summary!==null&&(r.lastHeartbeatSummary=String(a.summary)),Ae(r.lastHeartbeatPhase)&&(r.terminalFinalResult=xe(a)),r.heartbeatBlocker=a.blocker?String(a.blocker):null,a.boxResourceSnapshot&&typeof a.boxResourceSnapshot=="object"&&!Array.isArray(a.boxResourceSnapshot)&&(r.lastBoxResourceSnapshot=a.boxResourceSnapshot),Array.isArray(a.prEvidence)&&(r.lastPrEvidence=a.prEvidence.filter(u=>!!u&&typeof u=="object"&&typeof u.prUrl=="string"))}return r}var st,Ie=l(()=>{"use strict";Se();g();st=6e4});function Te(e){return e?(e.split("/").pop()??e).replace(/\.exe$/i,"").toLowerCase():null}function N(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 Ke(e){let r=Te(e[0]);return!!(r&&it.has(r))}function lt(e){let r=e.trim();return r.includes("/")?r.split("/").pop()??r:r}function ut(e){if(!e||e.includes("*"))return null;let r=lt(e);return!r||r.includes("/")?null:/\.(?:json|md|mjs|cjs|js|ts|tsx|yaml|yml)$/iu.test(r)?r:null}function Ne(e){return!e||e.includes("/")||e.includes("*")?!1:/\.(?:json|md|mjs|cjs|js|ts|tsx|yaml|yml)$/iu.test(e)}function ee(e){if(!e)return!1;let r=e.trim();return r.startsWith("!")&&!r.includes("/")&&!r.endsWith("/**")}function ct(e){if(!e.startsWith("--glob="))return e;let r=e.slice(7);return r.startsWith("!")&&!r.includes("/")&&!r.endsWith("/**")?`--glob=${r}/**`:e}function dt(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;Pe.has(n)&&(t+=1);continue}r.push(n)}}return r}function mt(e){let r=!1,t=e.map((o,s)=>{let i=ct(o),a=e[s-1];return a&&Pe.has(a)&&o.startsWith("!")&&!o.includes("/")&&!o.endsWith("/**")&&(i=`${o}/**`),i!==o&&(r=!0),i}),n=dt(t);if(n.length===2){let[o,s]=n;if(ee(s))return{argv:[t[0]??"rg",o,"-g",`${s}/**`,"."],changed:!0};let i=ut(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 We(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 W(e){let r=e.trim();if(!r)return{command:r,wrapped:!1};let t=N(r);if(!t.length)return{command:r,wrapped:!1};let n=Te(t[0]);if(!n||!at.has(n))return{command:r,wrapped:!1};let o=We(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 ft(e,r){let t=e.trim(),n=N(t),o=We(n);if(o<0)return r;let s=n.slice(0,o).join(" "),i=r.includes("'")?`"${r.replace(/"/g,'\\"')}"`:`'${r}'`;return`${s} ${i}`}function pt(e){let r=e.trim(),t=W(r),n=N(t.command);if(!n.length||!Ke(n))return{segment:r,changed:!1};let o=mt(n);if(!o.changed)return{segment:r,changed:!1};let s=o.argv.join(" ");return t.wrapped?{segment:ft(r,s),changed:!0}:{segment:s,changed:!0}}function re(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=pt(i);return a.changed&&(o=!0),a.segment});return o?{command:s.join(t),changed:!0}:{command:r,changed:!1}}function Ue(e){let r=W(e).command,t=N(r.trim());return t.length&&Ke(t)?!0:/\b(rg|ripgrep)\b/i.test(r)}function Be(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 gt(e){let{pattern:r,target:t}=Be(e);return r?ee(t)?{kind:"rg_exclude_syntax",pattern:r,target:t}:Ne(t)?{kind:"bad_scope",pattern:r,target:t}:{kind:"not_repo_search",pattern:r,target:t}:{kind:"not_repo_search"}}function ht(e){let{pattern:r,target:t}=Be(e);if(!r)return null;if(ee(t)){let n=`${t.trim()}/**`;return{command:`rg "${r}" -g '${n}' .`,changed:!0}}return t&&Ne(t)?{command:`rg -g ${t} "${r}" .`,changed:!0}:null}function yt(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 kt(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 te(e){let r=e.meta?.trim()||(e.command?kt(e.command):null)||null;if(r){let t=gt(r),n=yt(t);if(n)return n;let o=ht(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=re(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 it,at,Pe,De=l(()=>{"use strict";it=new Set(["rg","ripgrep","grep"]),at=new Set(["bash","sh","dash","zsh"]),Pe=new Set(["-e","--regexp","-f","--file","-m","--max-count","-A","--after-context","-B","--before-context","-C","--context","-g","--glob","--iglob"])});function E(e,r=200){let t=e.replace(/\s+/g," ").trim();return t.length>r?`${t.slice(0,r-1)}\u2026`:t}function xt(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 v(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function St(e){let r=e.metadata;if(!v(r))return null;let t=r.vulnerabilities;if(!v(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 _t(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 Et(e,r){let t=e.error;if(v(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?E(o.split(`
5
- `).find(Boolean)??o,160):"npm audit failed"}function vt(e){let r=`${e.stdout}
6
- ${e.stderr}`.trim(),t=xt(r);if(!t||!v(t)){let o=E(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(v(t.error))return{kind:"command_failure",exitCode:e.exitCode,summary:`npm audit command failed: ${Et(t,e.stderr)}`};let n=St(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:_t(n),audit:n}:{kind:"command_failure",exitCode:e.exitCode,summary:"npm audit failed: JSON response missing vulnerability metadata",parseError:"missing_metadata"}}function Ct(e){return bt.test(e)}function At(e){let r=W(e).command;return Me.test(e)||Me.test(r)||Ue(e)}function wt(e){let r=te({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&&Rt.test(n)){let i=E(n,160);return{kind:"command_failure",exitCode:1,summary:r??`ripgrep failed (exit 1): ${i}`}}let o=re(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=E(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 Fe(e){let r=e.stdout??"",t=e.stderr??"",n=e.interleavedOutput??"";if(Ct(e.command)){let i=r.trim()||n.trim()||t.trim();return vt({exitCode:e.exitCode,stdout:i,stderr:t})}if(At(e.command))return wt({command:e.command,exitCode:e.exitCode,stdout:r,stderr:t,interleaved:n});let o=te({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=E(n||r||t||`exit ${e.exitCode}`,180);return{kind:"command_failure",exitCode:e.exitCode,summary:`command failed (exit ${e.exitCode}): ${s}`}}var bt,Me,Rt,$e=l(()=>{"use strict";De();bt=/\bnpm\s+audit\b/i,Me=/\b(rg|ripgrep)\b/i,Rt=/\b(error|invalid|unknown|panic|not found)\b/i});function C(e){return typeof e=="string"&&Ot.test(e.trim())}function U(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 Ot,B=l(()=>{"use strict";Ot=/^(?:provider authentication failed:\s*)?(?:(?:Failed to authenticate|authentication (?:failed|error))(?::\s*[^\n.!?]+)?|OAuth session expired and could not be refreshed)[.!]?$/i});function ne(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function It(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 Le(e){if(e.event==="step_update"&&ne(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"||!ne(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=ne(r.usage)?It(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 He=l(()=>{"use strict"});function oe(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function je(){return{assistantText:""}}function Pt(e,r){if(!(r.role!=="assistant"||typeof r.content!="string")){if(r.delta===!0){e.assistantText+=r.content;return}e.assistantText=r.content}}function Tt(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=(oe(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 Kt(e){return e.type!=="result"||e.status!=="success"&&e.status!=="error"?!1:typeof e.result!="string"}function Ye(e,r){if(e.type==="message"&&(e.role==="assistant"||e.role==="user"))return Pt(r,e),{};if(e.type==="tool_use"&&typeof e.tool_name=="string"&&e.tool_name.trim())return{currentTool:e.tool_name.trim()};if(!Kt(e))return null;let t=oe(e.stats)?Tt(e.stats):void 0;if(e.status==="error"){let o=oe(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 Ve=l(()=>{"use strict"});import{existsSync as Nt,readFileSync as Wt}from"node:fs";function Ut(e){let r=e.timestamp_ms;return e.timestamp||e.ts||(r?new Date(r).toISOString():void 0)}function Bt(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 Dt(e,r){e.finalResult=r.result||r.subtype||r.terminal_reason||"completed",U(r)&&(e.providerTerminalError=!0,e.error=String(r.result||r.api_error_status||"stream result error"))}function x(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:void 0}function Mt(e){let r=e.usage;return r&&typeof r=="object"&&!Array.isArray(r)?r:null}function Ft(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 $t(e,r){let t=Mt(r);if(!t)return;let n=x(t.input_tokens)??x(t.inputTokens)??x(t.prompt_tokens),o=x(t.output_tokens)??x(t.outputTokens)??x(t.completion_tokens);if(n===void 0&&o===void 0)return;let s=Ft(r)??e.usage?.model;e.usage={...n!==void 0?{inputTokens:n}:{},...o!==void 0?{outputTokens:o}:{},...s?{model:s}:{}}}function Lt(e){if(e.type!=="tool_call"||e.subtype!=="completed")return null;let t=(e.tool_call&&typeof e.tool_call=="object"&&!Array.isArray(e.tool_call)?e.tool_call:null)?.shellToolCall;if(!t||typeof t!="object"||Array.isArray(t))return null;let n=t,o=n.args,s=o&&typeof o=="object"&&!Array.isArray(o)&&typeof o.command=="string"?String(o.command):"",i=n.result;if(!i||typeof i!="object"||Array.isArray(i))return null;let a=i.success??i.failure;if(!a||typeof a!="object"||Array.isArray(a))return null;let u=a,f=typeof u.exitCode=="number"?u.exitCode:0;return{command:s,exitCode:f,stdout:typeof u.stdout=="string"?u.stdout:"",stderr:typeof u.stderr=="string"?u.stderr:"",interleaved:typeof u.interleavedOutput=="string"?u.interleavedOutput:""}}function Ht(e,r){r.kind==="success"||r.kind==="search_no_matches"||(e.lastShellOutcome=r)}function Ge(e){let r={firstEventAt:null,lastEventAt:null,currentTool:null,finalResult:null,error:null,lastShellOutcome:null,usage:null};if(!Nt(e))return r;let t=Wt(e,"utf8").split(`
7
- `).filter(Boolean),n=null,o=je();for(let s of t){let i=I(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 d=i.item;if(d&&typeof d=="object"&&!Array.isArray(d)){let p=d;p.type==="agent_message"&&typeof p.text=="string"&&p.text.trim()&&(n=p.text)}}i.type==="turn.completed"&&n&&!r.providerTerminalError&&(r.finalResult=n,n=null);let a=Ut(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 d=i.event.content_block;d?.type==="tool_use"&&(r.currentTool=String(d.name||"tool"))}if(i.type==="assistant"&&i.message&&typeof i.message=="object"){let d=i.message.content;if(Array.isArray(d)){let p=d.find(h=>h?.type==="tool_use");p&&(r.currentTool=String(p.name||r.currentTool))}}if(i.type==="tool_call"&&i.subtype==="started"){let d=i.tool_call&&typeof i.tool_call=="object"&&!Array.isArray(i.tool_call)?i.tool_call:void 0,p=Bt(d);p&&(r.currentTool=p)}let u=Lt(i);u&&Ht(r,Fe({command:u.command,exitCode:u.exitCode,stdout:u.stdout,stderr:u.stderr,interleavedOutput:u.interleaved}));let f=Le(i),m=f?null:Ye(i,o),c=f??m;if(c?.currentTool&&(r.currentTool=c.currentTool),c?.usage&&(r.usage={...r.usage??{},...c.usage}),c?.terminal?c.terminal.ok?r.finalResult=c.terminal.finalResult:(r.finalResult=null,r.providerTerminalError=!0,r.error=c.terminal.error):i.type==="result"&&Dt(r,i),i.type==="turn.failed"){n=null,r.finalResult=null,r.providerTerminalError=!0;let d=i.error;r.error=typeof d?.message=="string"?d.message:"provider turn failed"}$t(r,i)}return r}var ze=l(()=>{"use strict";$e();g();B();He();Ve()});function Je(e,r=240){let t=e.replace(/\s+/g," ").trim();return t.length>r?`${t.slice(0,r-1)}\u2026`:t}function se(e){let r=(e??"").trim();if(!r)return null;if(C(r))return{blocked:!0,reason:`provider authentication failed: ${Je(r)}`};for(let t of jt)if(t.test.test(r))return{blocked:!0,reason:`${t.label}: ${Je(r)}`};return null}var jt,qe=l(()=>{"use strict";B();jt=[{test:/(?:claude provider refuses to spawn: worker prompt is empty after argv assembly|Input must be provided (?:either )?through stdin or as a prompt argument)/i,label:"provider prompt delivery failed"},{test:/\b(?:invalid|unknown|unsupported|unrecognized)\b[^.\n]*\bmodel\b/i,label:"provider rejected the requested model"},{test:/\bmodel\b[^.\n]*\b(?:not\s+(?:found|supported|available|recognized|valid)|is\s+not\s+valid|does\s+not\s+exist)/i,label:"provider rejected the requested model"},{test:/\b(?:did you mean|available models|choose (?:a|one of)|supported models)\b/i,label:"provider rejected the requested model"},{test:/model preflight failed/i,label:"model/provider preflight failed"},{test:/\b(?:command not found|ENOENT|is the .*CLI on PATH|executable not found|no such file or directory)\b/i,label:"provider CLI is missing or not on PATH"},{test:/\bfailed to spawn\b/i,label:"provider failed to spawn the worker process"},{test:/\b(?:not logged in|unauthorized|authentication (?:failed|required)|invalid api key|missing api key|401)\b/i,label:"provider authentication failed"},{test:/\b(?:out of usage|increase limits?|switch to auto|ask your admin to increase your limit|usage limits?|quota exceeded|insufficient_quota|credits? exhausted|billing|payment required)\b/i,label:"provider quota exhausted"}]});function Xe(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function Yt(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 Vt(e){return!e?.checked||e.headIsAncestorOfBase!==!1?null:Xe(e.head)}function Gt(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 Ze(e){if(e.alive||Yt(e.finalResult))return null;let r=(e.changedFiles??[]).filter(i=>i.trim()).length,t=Xe(e.headCommit)??Vt(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:Gt(s,r,t)}}var Qe=l(()=>{"use strict"});var k=l(()=>{"use strict"});var zt,ko,Jt,bo,er=l(()=>{"use strict";zt=["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"],ko=new Set(zt),Jt=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],bo=new Set(Jt)});import{spawnSync as tr}from"node:child_process";function qt(e,r,t={}){let n=tr("git",r,Z({cwd:e,encoding:"utf8"}));if(n.status!==0&&!t.allowFailure){let o=Xt(e,r,n);if(t.throwError)throw new Error(o);X(o)}return n.stdout||""}function Xt(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 nr(e){return qt(e,["status","--short"],{allowFailure:!0}).split(`
8
- `).map(r=>r.trim()).filter(Boolean)}function A(e,r){try{let t=tr("git",r,Z({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 rr(e,r,t){let n=A(e,["merge-base","--is-ancestor",r,t]);return n.status===0?{isAncestor:!0,error:null}:n.status===1?{isAncestor:!1,error:null}:{isAncestor:null,error:n.error||n.stderr||n.stdout||`git exited ${n.status}`}}function or(e,r="origin/main"){let t=typeof r=="string"?{base:r}:r,n=t.baseCommit?.trim()||t.base?.trim()||"origin/main",o=t.baseCommit?.trim()||null;if(!e)return ie(n,"missing worktree path");let s=A(e,["rev-parse","HEAD"]);if(s.status!==0)return ie(n,s.error||s.stderr||s.stdout||"failed to resolve HEAD");let i;if(o)i=o;else{let d=A(e,["rev-parse",n]);if(d.status!==0)return ie(n,d.error||d.stderr||d.stdout||`failed to resolve ${n}`,s.stdout.trim());i=d.stdout.trim()}let a=s.stdout.trim();if(a===i)return{checked:!0,base:n,head:a,baseHead:i,baseIsAncestorOfHead:!0,headIsAncestorOfBase:!0,relation:"synced"};let u=rr(e,i,a),f=rr(e,a,i),m=u.error||f.error||void 0;if(u.isAncestor==null||f.isAncestor==null)return{checked:!1,base:n,head:a,baseHead:i,baseIsAncestorOfHead:u.isAncestor,headIsAncestorOfBase:f.isAncestor,relation:"unknown",...m?{error:m}:{}};let c=u.isAncestor?"ahead":f.isAncestor?"merged":"diverged";return{checked:!0,base:n,head:a,baseHead:i,baseIsAncestorOfHead:u.isAncestor,headIsAncestorOfBase:f.isAncestor,relation:c,...m?{error:m}:{}}}function ie(e,r,t=null){return{checked:!1,base:e,head:t,baseHead:null,baseIsAncestorOfHead:null,headIsAncestorOfBase:null,relation:"unknown",error:r}}var M=l(()=>{"use strict";k();g();er()});function w(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function Zt(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 Qt(e){if(w(e.headCommit)||w(e.prUrl)||w(e.artifactBundlePath)||w(e.patchPath))return!0;let r=e.gitAncestry;return!!(r?.checked&&r.headIsAncestorOfBase===!1&&w(r.head))}function sr(e){return Zt(e.finalResult)?e.changedFiles.length===0?{blocked:!1}:Qt(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 ir(e){if(e.blocked)return e.detail??e.reason??"dirty_worktree_no_pr"}var ar=l(()=>{"use strict"});function ae(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 lr(e){let r=e.targetPrReconciliation??e.target_pr_reconciliation??e.targetPrs??e.target_prs;return Array.isArray(r)?r.length:0}function F(e){let r=e.trim();if(!r)return null;let t=ae(r);if(t)return t;let n=[],o=/```(?:json)?\s*([\s\S]*?)```/gi,s;for(;(s=o.exec(r))!==null;){let m=ae(s[1]??"");m&&n.push(m)}let i=r.indexOf("{"),a=r.lastIndexOf("}");if(i>=0&&a>i){let m=ae(r.slice(i,a+1));m&&n.push(m)}if(n.length===0)return null;let u=n[n.length-1],f=lr(u);for(let m of n){let c=lr(m);c>f&&(u=m,f=c)}return u}var le=l(()=>{"use strict"});function ur(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 cr(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`${r[1].toLowerCase()}/pull/${r[2]}`:e.trim().toLowerCase()}function en(e){return new Set(e.map(r=>cr(ur(r)??r)).filter(Boolean))}function dr(e,r,t){let n=ur(e)??e;if(!n)return"unrelated";let o=cr(n);return en(r).has(o)?"contract":t?(t.outcome==="skipped"||t.outcome==="blocked")&&t.reason?.trim()?"support":(t.outcome==="merged","unrelated"):"unrelated"}var mr=l(()=>{"use strict"});function S(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function rn(e){return e==null?!1:typeof e=="string"?e.trim().length>0:typeof e=="object"?Object.keys(e).length>0:!0}function b(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`https://github.com/${r[1]}/pull/${r[2]}`:S(e)}function $(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`${r[1].toLowerCase()}/pull/${r[2]}`:e.trim().toLowerCase()}function fr(e){let r=null;if(typeof e=="string"){let o=F(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=b(String(s.prUrl??s.pr_url??"")),a=S(s.outcome);!i||a!=="merged"&&a!=="skipped"&&a!=="blocked"||n.push({prUrl:i,outcome:a,mergeCommit:S(s.mergeCommit??s.merge_commit),reason:S(s.reason)})}return n}function pr(e,r){let t=[],n=b(S(e.prUrl)??"");if(n&&t.push(n),r&&typeof r=="object"&&!Array.isArray(r)){let o=r,s=b(String(o.prUrl??o.pr_url??""));s&&t.push(s)}return[...new Set(t)]}function gr(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(!rn(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?b(S(r.targetPrUrl)??"")??(r.targetPrUrls.length===1?b(r.targetPrUrls[0]):null):null;if(s){let c=pr(t,n);if(!(n&&typeof n=="object"&&!Array.isArray(n)&&n.supersedesOriginalTargetPr===!0)){for(let y of c)if(y!==s)return{blocked:!0,reason:"duplicate_repair_pr",detail:`Repair worker opened or attached PR ${y} instead of canonical target ${s}`}}let h=fr(n).find(y=>y.prUrl===s);if(!h||h.outcome!=="merged"&&!(h.reason?.trim()&&(h.outcome==="skipped"||h.outcome==="blocked")))return{blocked:!0,reason:"missing_repair_target_reconciliation",detail:`Repair worker must reconcile target PR ${s}`}}let i=fr(n),a=new Map(i.map(c=>[$(c.prUrl),c])),u=new Set(r.targetPrUrls.map(c=>$(b(c)??c)).filter(Boolean)),f=pr(t,n);if(r.landingOnly)for(let c of f){let d=a.get($(c)),p=dr(c,r.targetPrUrls,d);if(!(p==="contract"||p==="support"))return u.size>0?{blocked:!0,reason:"unrelated_implementation_pr",detail:`Landing-only worker attached unrelated PR ${c}`}:{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 m=[];for(let c of r.targetPrUrls){let d=$(b(c)??c),p=a.get(d);if(!p){m.push(d);continue}p.outcome!=="merged"&&!p.reason?.trim()&&m.push(d)}return m.length>0?{blocked:!0,reason:m.every(c=>a.has(c))?"incomplete_target_pr_landing":"missing_target_pr_reconciliation",detail:`Target PR reconciliation incomplete: ${m.join(", ")}`}:{blocked:!1}}function hr(e){if(e.blocked)return e.detail??e.reason}var yr=l(()=>{"use strict";le();mr()});function nn(e){let r=Date.now();if(e.providerTerminalError||U(e.finalResult)||e.finalResult&&e.error?.trim()||C(e.error)||C(e.finalResult)){let o=e.error||(typeof e.finalResult=="string"?e.finalResult:"provider terminal error");return{state:"blocked",reason:se(o)?.reason??`provider terminal error: ${o}`}}if(e.completionBlocker&&!kr(e.completionBlocker))return{state:"blocked",reason:e.completionBlocker};if(e.finalResult){if(e.localOnly&&sn(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=sr(o);if(s.blocked){let i=ir(s);return{state:"needs_attention",reason:s.reason?`landing blocked (${s.reason}): ${i}`:`landing blocked: ${i}`}}if(e.landingContract){let i=gr({contract:e.landingContract,snapshot:o,finalResult:e.finalResult}),a=hr(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(on(e))return{state:"done",reason:"empty abandoned worker record"};let o=se(e.error);if(o)return{state:"blocked",reason:o.reason};let s=Ze({alive:!1,finalResult:null,changedFiles:e.changedFiles,gitAncestry:e.gitAncestry});if(s?.salvageable){let a=e.error?.trim();return{state:"needs_attention",reason:a?`${s.attentionReason} (${a})`:s.attentionReason}}let i=e.error?.trim();return{state:"needs_attention",reason:i?`process exited without a final result: ${i}`:s?.attentionReason??"process exited without a final result"}}if(e.heartbeatBlocker)return{state:"blocked",reason:`worker heartbeat reported blocker: ${e.heartbeatBlocker}`};let t=e.startedAt?Date.parse(e.startedAt):NaN;if(!e.firstEventAt&&e.stdoutBytes===0&&e.heartbeatBytes===0&&Number.isFinite(t)&&r-t>tn)return{state:"needs_attention",reason:`no first stream event ${Q(t)}s after start`};let n=e.lastActivityAt?Date.parse(e.lastActivityAt):NaN;return Number.isFinite(n)&&r-n>L?{state:"stale",reason:`no log/event/heartbeat activity for ${Q(n)}s`}:{state:"ok",reason:"recent activity"}}function kr(e){let r=e?.trim();return r?/completion acknowledged but board not advanced/i.test(r)&&/task already terminal/i.test(r):!1}function on(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 sn(e){let r=null;if(typeof e=="string"?r=F(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 an(e,r,t){let n=e.completionSnapshot?.finalResult;return e.completionAckSource==="local-pr-merged-reconcile"&&n!==void 0&&n!==null?n:r||(n??we(t))}function br(e,r={}){let t=Ge(e.stdoutPath),n=Oe(e.heartbeatPath),o=typeof e.completionReportedAt=="string"&&e.completionReportedAt.trim().length>0,s=an(e,t.finalResult,n),i=o?!1:K(e.pid),a=P(e.stdoutPath),u=P(e.stderrPath),f=P(e.heartbeatPath),m=nr(e.worktreePath),c=or(e.worktreePath,{base:r.base,baseCommit:r.baseCommit}),d=Ce([t.lastEventAt,n.lastHeartbeatAt,T(e.stdoutPath),T(e.stderrPath),T(e.heartbeatPath)]),p=t.error||!i&&!s&&ve(e.stderrPath,10).trim()||void 0,h=typeof e.completionBlocker=="string"&&e.completionBlocker.trim()?e.completionBlocker.trim():null,y=kr(h)?null:h,Qr=e.repairTargetPrUrl?{landingOnly:!1,targetPrUrls:[e.repairTargetPrUrl],targetPrUrl:e.repairTargetPrUrl,repairEnforceOriginalPr:!0}:null,J=nn({alive:i,finalResult:s,firstEventAt:t.firstEventAt,stdoutBytes:a,stderrBytes:u,heartbeatBytes:f,lastActivityAt:d,heartbeatBlocker:n.heartbeatBlocker,startedAt:e.startedAt,error:p,providerTerminalError:t.providerTerminalError,changedFiles:m,gitAncestry:c,completionBlocker:y,landingContract:Qr,prUrl:e.repairTargetPrUrl??e.taskPrUrl??null,localOnly:e.localOnly===!0,taskId:e.taskId??null,agentOsId:e.agentOsId??null,reconcileReason:e.reconcileReason??null}),et=y||J.state==="blocked"?"blocked":o||J.state==="done"?"done":s?"exited":i?"running":"exited";return{runId:e.runId,worker:e.name,pid:e.pid,alive:i,status:et,attention:J,branch:e.branch,worktreePath:e.worktreePath,ownedPaths:e.ownedPaths,stdoutBytes:a,stderrBytes:u,heartbeatBytes:f,firstEventAt:t.firstEventAt,lastEventAt:t.lastEventAt,lastActivityAt:d,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:p,providerTerminalError:t.providerTerminalError,changedFiles:m,gitAncestry:c,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 Rr(e){return!!(e.finalResult||e.alive===!1||e.status==="exited"||e.status==="done")}function xr(e){return e.finalResult?e.attention.state==="needs_attention"||e.attention.state==="blocked":!1}var tn,L,O=l(()=>{"use strict";Ie();ze();B();qe();Qe();M();ar();yr();le();g();tn=18e4,L=6e5});var vr=l(()=>{"use strict";M()});var ue=l(()=>{"use strict";M();k();vr()});var ce=l(()=>{"use strict";g()});var R=l(()=>{"use strict"});var H=l(()=>{"use strict"});var Cr=l(()=>{"use strict"});var us,cs,de=l(()=>{"use strict";us=25*1024*1024*1024,cs=12*1024*1024*1024});var gs,hs,Ar=l(()=>{"use strict";de();gs=5*1024*1024*1024,hs=10*1024*1024*1024});var Ss,_s,me=l(()=>{"use strict";Ar();de();Ss=30*1024*1024*1024,_s=15*1024*1024*1024});var wr=l(()=>{"use strict";j();g()});var Or=l(()=>{"use strict";O()});var fn,pn,Tr=l(()=>{"use strict";Cr();_();R();H();Y();me();j();wr();Or();g();fn=500*1024*1024,pn=4*1024*1024*1024});var Y=l(()=>{"use strict";Tr()});import{homedir as hn}from"node:os";import yn from"node:path";var Kr,ge=l(()=>{"use strict";Kr=yn.join(hn(),".kynver",".env")});var Nr=l(()=>{"use strict"});var Wr=l(()=>{"use strict";Nr()});var Ur=l(()=>{"use strict"});var Br=l(()=>{"use strict";g()});var he=l(()=>{"use strict";Wr();Ur();Br()});var Dr=l(()=>{"use strict"});var Mr=l(()=>{"use strict";Dr()});var V=l(()=>{"use strict";ge();k();_();he();Mr()});var Fr=l(()=>{"use strict";R();R()});var $r=l(()=>{"use strict";ge();he();V()});var ye=l(()=>{"use strict"});var Lr=l(()=>{"use strict";g()});import _n from"node:path";var zi,ke=l(()=>{"use strict";k();Lr();zi=_n.join(".openclaw","harness")});var z=l(()=>{"use strict";_();R();H();Y();ke()});var jr=l(()=>{"use strict";ue();R();Fr();_();V();$r();ce();ye();z()});var In,ga,Yr=l(()=>{"use strict";In=["claude","cursor","codex","gemini","gemini-api","openai-compatible"],ga=In.join("|")});var Vr=l(()=>{"use strict";k()});var Gr=l(()=>{"use strict";Vr()});var zr=l(()=>{"use strict"});var Jr=l(()=>{"use strict";zr()});import{homedir as Pn,totalmem as Ha}from"node:os";import be from"node:path";var qr,sl,il,al,ll,_=l(()=>{"use strict";ue();k();ce();R();H();Y();me();V();jr();Yr();z();Gr();ye();Jr();qr=be.join(Pn(),".kynver"),sl=be.join(qr,"config.json"),il=be.join(qr,"credentials"),al=500*1024*1024,ll=4*1024*1024*1024});var Xr=l(()=>{"use strict";_();ke();z();g()});var j=l(()=>{"use strict";Xr();g()});O();var Sr="kynver-harness:",ln="@runner:";function _r(e){return e?.trim()?e.trim():null}function un(e){let r=_r(e);if(!r?.startsWith(Sr))return null;let t=r.slice(Sr.length),n=t.indexOf(ln);return n>=0?t.slice(0,n).trim()||null:t.trim()||null}function Er(e,r){let t=_r(r);return t?un(e)===t:!1}O();g();function cn(e){let{worker:r,status:t,taskLease:n}=e,o=n?.leaseOwner??null;if(r.dispatched&&n){if(n.status==="running"&&o&&!Er(o,r.runId))return{health:"orphaned",reason:`task lease held by ${o}, expected harness run ${r.runId}`};let i=r.leaseToken?.trim()??"",a=n.leaseToken?.trim()??"";if(n.status==="running"&&i&&a&&i!==a)return{health:"orphaned",reason:"task leaseToken superseded on board \u2014 completion replay would fail"};if(n.status==="running"&&!t.alive&&!t.finalResult)return{health:"orphaned",reason:"board task running but worker process is not alive"}}if(r.status==="running"&&!t.alive&&!t.finalResult)return{health:"orphaned",reason:"worker.json still running but process is dead"};if(t.attention.state==="stale")return{health:"stale",reason:t.attention.reason};let s=t.lastHeartbeatAt?Date.parse(t.lastHeartbeatAt):NaN;return t.alive&&Number.isFinite(s)&&Date.now()-s>L?{health:"stale",reason:`heartbeat older than ${Math.floor(L/1e3)}s`}:t.alive&&r.pid&&!K(r.pid)?{health:"orphaned",reason:"pid recorded but process is not alive"}:n?.status==="running"&&!t.alive&&t.finalResult?{health:"healthy",reason:"finished worker awaiting completion replay"}:{health:"healthy",reason:t.attention.reason||"worker within expected lifecycle bounds"}}j();function Zr(e){return!!e.completionReportedAt?.trim()}O();function Tn(e){let{worker:r,status:t}=e,n=[];r.localOnly&&n.push("local-only worker (no board linkage)"),(!r.agentOsId||!r.taskId)&&n.push("missing agentOsId/taskId linkage"),Zr(r)&&n.push("completion already acknowledged"),r.completionBlocker&&n.push(r.completionBlocker),t.heartbeatBlocker&&t.alive&&n.push(`worker heartbeat blocker: ${t.heartbeatBlocker}`),t.attention.state==="blocked"&&n.push(t.attention.reason||"worker attention blocked"),xr(t)&&n.push(t.attention.reason||"landing gate blocked");let o=Rr(t),s;return o?t.finalResult?s="final_result":t.alive?s="terminal_status":s="process_exited":n.push("worker has not reached a terminal condition"),{eligible:o&&n.length===0,terminalVerified:o,terminalReason:s,blockers:n}}export{Tn as assessAutoCompleteEligibility,cn as classifyWorkerHealth,br as computeWorkerStatus};
3
+ `):""}function A(e){if(!e)return!1;try{return process.kill(e,0),!0}catch{return!1}}function Fe(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 ae(e){return Math.max(0,Math.round((Date.now()-e)/1e3))}var g=l(()=>{"use strict";Ue()});import{existsSync as wt,readFileSync as Ot}from"node:fs";function $e(e){return e==="complete"}function Le(e){return $e(e.lastHeartbeatPhase)?e.terminalFinalResult!==void 0&&e.terminalFinalResult!==null?e.terminalFinalResult:e.lastHeartbeatSummary?.trim()||"completed":null}function He(e){let r={heartbeatCount:0,lastHeartbeatAt:null,lastHeartbeatPhase:null,lastHeartbeatSummary:null,terminalFinalResult:null,heartbeatBlocker:null,timestampAnomalies:[],lastBoxResourceSnapshot:null,lastPrEvidence:[]};if(!wt(e))return r;let t=Date.now()+Pt,n=new Date(t).toISOString(),o=Ot(e,"utf8").split(`
4
+ `).filter(Boolean);for(let s of o){let i=D(s);if(!i||typeof i!="object"||Array.isArray(i))continue;let a=i;if(r.heartbeatCount++,a.ts){let u=String(a.ts),p=Date.parse(u);Number.isFinite(p)&&p>t?r.timestampAnomalies.push({kind:"future_heartbeat_timestamp",observedAt:u,clampedTo:n}):r.lastHeartbeatAt=u}a.phase!==void 0&&a.phase!==null&&(r.lastHeartbeatPhase=String(a.phase)),a.summary!==void 0&&a.summary!==null&&(r.lastHeartbeatSummary=String(a.summary)),$e(r.lastHeartbeatPhase)&&(r.terminalFinalResult=Be(a)),r.heartbeatBlocker=a.blocker?String(a.blocker):null,a.boxResourceSnapshot&&typeof a.boxResourceSnapshot=="object"&&!Array.isArray(a.boxResourceSnapshot)&&(r.lastBoxResourceSnapshot=a.boxResourceSnapshot),Array.isArray(a.prEvidence)&&(r.lastPrEvidence=a.prEvidence.filter(u=>!!u&&typeof u=="object"&&typeof u.prUrl=="string"))}return r}var Pt,je=l(()=>{"use strict";De();g();Pt=6e4});function Ve(e){return e?(e.split("/").pop()??e).replace(/\.exe$/i,"").toLowerCase():null}function $(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 Ge(e){let r=Ve(e[0]);return!!(r&&It.has(r))}function Nt(e){let r=e.trim();return r.includes("/")?r.split("/").pop()??r:r}function Kt(e){if(!e||e.includes("*"))return null;let r=Nt(e);return!r||r.includes("/")?null:/\.(?:json|md|mjs|cjs|js|ts|tsx|yaml|yml)$/iu.test(r)?r:null}function ze(e){return!e||e.includes("/")||e.includes("*")?!1:/\.(?:json|md|mjs|cjs|js|ts|tsx|yaml|yml)$/iu.test(e)}function le(e){if(!e)return!1;let r=e.trim();return r.startsWith("!")&&!r.includes("/")&&!r.endsWith("/**")}function Wt(e){if(!e.startsWith("--glob="))return e;let r=e.slice(7);return r.startsWith("!")&&!r.includes("/")&&!r.endsWith("/**")?`--glob=${r}/**`:e}function Bt(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;Ye.has(n)&&(t+=1);continue}r.push(n)}}return r}function Dt(e){let r=!1,t=e.map((o,s)=>{let i=Wt(o),a=e[s-1];return a&&Ye.has(a)&&o.startsWith("!")&&!o.includes("/")&&!o.endsWith("/**")&&(i=`${o}/**`),i!==o&&(r=!0),i}),n=Bt(t);if(n.length===2){let[o,s]=n;if(le(s))return{argv:[t[0]??"rg",o,"-g",`${s}/**`,"."],changed:!0};let i=Kt(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 Je(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 L(e){let r=e.trim();if(!r)return{command:r,wrapped:!1};let t=$(r);if(!t.length)return{command:r,wrapped:!1};let n=Ve(t[0]);if(!n||!Tt.has(n))return{command:r,wrapped:!1};let o=Je(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 Ut(e,r){let t=e.trim(),n=$(t),o=Je(n);if(o<0)return r;let s=n.slice(0,o).join(" "),i=r.includes("'")?`"${r.replace(/"/g,'\\"')}"`:`'${r}'`;return`${s} ${i}`}function Mt(e){let r=e.trim(),t=L(r),n=$(t.command);if(!n.length||!Ge(n))return{segment:r,changed:!1};let o=Dt(n);if(!o.changed)return{segment:r,changed:!1};let s=o.argv.join(" ");return t.wrapped?{segment:Ut(r,s),changed:!0}:{segment:s,changed:!0}}function ue(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=Mt(i);return a.changed&&(o=!0),a.segment});return o?{command:s.join(t),changed:!0}:{command:r,changed:!1}}function Xe(e){let r=L(e).command,t=$(r.trim());return t.length&&Ge(t)?!0:/\b(rg|ripgrep)\b/i.test(r)}function qe(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 Ft(e){let{pattern:r,target:t}=qe(e);return r?le(t)?{kind:"rg_exclude_syntax",pattern:r,target:t}:ze(t)?{kind:"bad_scope",pattern:r,target:t}:{kind:"not_repo_search",pattern:r,target:t}:{kind:"not_repo_search"}}function $t(e){let{pattern:r,target:t}=qe(e);if(!r)return null;if(le(t)){let n=`${t.trim()}/**`;return{command:`rg "${r}" -g '${n}' .`,changed:!0}}return t&&ze(t)?{command:`rg -g ${t} "${r}" .`,changed:!0}:null}function Lt(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 Ht(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 ce(e){let r=e.meta?.trim()||(e.command?Ht(e.command):null)||null;if(r){let t=Ft(r),n=Lt(t);if(n)return n;let o=$t(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=ue(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 It,Tt,Ye,Ze=l(()=>{"use strict";It=new Set(["rg","ripgrep","grep"]),Tt=new Set(["bash","sh","dash","zsh"]),Ye=new Set(["-e","--regexp","-f","--file","-m","--max-count","-A","--after-context","-B","--before-context","-C","--context","-g","--glob","--iglob"])});function w(e,r=200){let t=e.replace(/\s+/g," ").trim();return t.length>r?`${t.slice(0,r-1)}\u2026`:t}function Vt(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 O(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function Gt(e){let r=e.metadata;if(!O(r))return null;let t=r.vulnerabilities;if(!O(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 zt(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 Jt(e,r){let t=e.error;if(O(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?w(o.split(`
5
+ `).find(Boolean)??o,160):"npm audit failed"}function Xt(e){let r=`${e.stdout}
6
+ ${e.stderr}`.trim(),t=Vt(r);if(!t||!O(t)){let o=w(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(O(t.error))return{kind:"command_failure",exitCode:e.exitCode,summary:`npm audit command failed: ${Jt(t,e.stderr)}`};let n=Gt(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:zt(n),audit:n}:{kind:"command_failure",exitCode:e.exitCode,summary:"npm audit failed: JSON response missing vulnerability metadata",parseError:"missing_metadata"}}function qt(e){return jt.test(e)}function Zt(e){let r=L(e).command;return Qe.test(e)||Qe.test(r)||Xe(e)}function Qt(e){let r=ce({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&&Yt.test(n)){let i=w(n,160);return{kind:"command_failure",exitCode:1,summary:r??`ripgrep failed (exit 1): ${i}`}}let o=ue(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=w(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 er(e){let r=e.stdout??"",t=e.stderr??"",n=e.interleavedOutput??"";if(qt(e.command)){let i=r.trim()||n.trim()||t.trim();return Xt({exitCode:e.exitCode,stdout:i,stderr:t})}if(Zt(e.command))return Qt({command:e.command,exitCode:e.exitCode,stdout:r,stderr:t,interleaved:n});let o=ce({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=w(n||r||t||`exit ${e.exitCode}`,180);return{kind:"command_failure",exitCode:e.exitCode,summary:`command failed (exit ${e.exitCode}): ${s}`}}var jt,Qe,Yt,rr=l(()=>{"use strict";Ze();jt=/\bnpm\s+audit\b/i,Qe=/\b(rg|ripgrep)\b/i,Yt=/\b(error|invalid|unknown|panic|not found)\b/i});function P(e){return typeof e=="string"&&en.test(e.trim())}function H(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 en,j=l(()=>{"use strict";en=/^(?:provider authentication failed:\s*)?(?:(?:Failed to authenticate|authentication (?:failed|error))(?::\s*[^\n.!?]+)?|OAuth session expired and could not be refreshed)[.!]?$/i});function de(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function rn(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 tr(e){if(e.event==="step_update"&&de(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"||!de(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=de(r.usage)?rn(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 nr=l(()=>{"use strict"});function me(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function or(){return{assistantText:""}}function tn(e,r){if(!(r.role!=="assistant"||typeof r.content!="string")){if(r.delta===!0){e.assistantText+=r.content;return}e.assistantText=r.content}}function nn(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=(me(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 on(e){return e.type!=="result"||e.status!=="success"&&e.status!=="error"?!1:typeof e.result!="string"}function sr(e,r){if(e.type==="message"&&(e.role==="assistant"||e.role==="user"))return tn(r,e),{};if(e.type==="tool_use"&&typeof e.tool_name=="string"&&e.tool_name.trim())return{currentTool:e.tool_name.trim()};if(!on(e))return null;let t=me(e.stats)?nn(e.stats):void 0;if(e.status==="error"){let o=me(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 ir=l(()=>{"use strict"});import{existsSync as sn,readFileSync as an}from"node:fs";function ln(e){let r=e.timestamp_ms;return e.timestamp||e.ts||(r?new Date(r).toISOString():void 0)}function un(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 cn(e,r){e.finalResult=r.result||r.subtype||r.terminal_reason||"completed",H(r)&&(e.providerTerminalError=!0,e.error=String(r.result||r.api_error_status||"stream result error"))}function S(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:void 0}function dn(e){let r=e.usage;return r&&typeof r=="object"&&!Array.isArray(r)?r:null}function mn(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 pn(e,r){let t=dn(r);if(!t)return;let n=S(t.input_tokens)??S(t.inputTokens)??S(t.prompt_tokens),o=S(t.output_tokens)??S(t.outputTokens)??S(t.completion_tokens);if(n===void 0&&o===void 0)return;let s=mn(r)??e.usage?.model;e.usage={...n!==void 0?{inputTokens:n}:{},...o!==void 0?{outputTokens:o}:{},...s?{model:s}:{}}}function fn(e){if(e.type!=="tool_call"||e.subtype!=="completed")return null;let t=(e.tool_call&&typeof e.tool_call=="object"&&!Array.isArray(e.tool_call)?e.tool_call:null)?.shellToolCall;if(!t||typeof t!="object"||Array.isArray(t))return null;let n=t,o=n.args,s=o&&typeof o=="object"&&!Array.isArray(o)&&typeof o.command=="string"?String(o.command):"",i=n.result;if(!i||typeof i!="object"||Array.isArray(i))return null;let a=i.success??i.failure;if(!a||typeof a!="object"||Array.isArray(a))return null;let u=a,p=typeof u.exitCode=="number"?u.exitCode:0;return{command:s,exitCode:p,stdout:typeof u.stdout=="string"?u.stdout:"",stderr:typeof u.stderr=="string"?u.stderr:"",interleaved:typeof u.interleavedOutput=="string"?u.interleavedOutput:""}}function gn(e,r){r.kind==="success"||r.kind==="search_no_matches"||(e.lastShellOutcome=r)}function ar(e){let r={firstEventAt:null,lastEventAt:null,currentTool:null,finalResult:null,error:null,lastShellOutcome:null,usage:null};if(!sn(e))return r;let t=an(e,"utf8").split(`
7
+ `).filter(Boolean),n=null,o=or();for(let s of t){let i=D(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 d=i.item;if(d&&typeof d=="object"&&!Array.isArray(d)){let f=d;f.type==="agent_message"&&typeof f.text=="string"&&f.text.trim()&&(n=f.text)}}i.type==="turn.completed"&&n&&!r.providerTerminalError&&(r.finalResult=n,n=null);let a=ln(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 d=i.event.content_block;d?.type==="tool_use"&&(r.currentTool=String(d.name||"tool"))}if(i.type==="assistant"&&i.message&&typeof i.message=="object"){let d=i.message.content;if(Array.isArray(d)){let f=d.find(h=>h?.type==="tool_use");f&&(r.currentTool=String(f.name||r.currentTool))}}if(i.type==="tool_call"&&i.subtype==="started"){let d=i.tool_call&&typeof i.tool_call=="object"&&!Array.isArray(i.tool_call)?i.tool_call:void 0,f=un(d);f&&(r.currentTool=f)}let u=fn(i);u&&gn(r,er({command:u.command,exitCode:u.exitCode,stdout:u.stdout,stderr:u.stderr,interleavedOutput:u.interleaved}));let p=tr(i),m=p?null:sr(i,o),c=p??m;if(c?.currentTool&&(r.currentTool=c.currentTool),c?.usage&&(r.usage={...r.usage??{},...c.usage}),c?.terminal?c.terminal.ok?r.finalResult=c.terminal.finalResult:(r.finalResult=null,r.providerTerminalError=!0,r.error=c.terminal.error):i.type==="result"&&cn(r,i),i.type==="turn.failed"){n=null,r.finalResult=null,r.providerTerminalError=!0;let d=i.error;r.error=typeof d?.message=="string"?d.message:"provider turn failed"}pn(r,i)}return r}var lr=l(()=>{"use strict";rr();g();j();nr();ir()});var b=l(()=>{"use strict"});var hn,ss,yn,is,ur=l(()=>{"use strict";hn=["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"],ss=new Set(hn),yn=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],is=new Set(yn)});import{spawnSync as dr}from"node:child_process";function kn(e,r,t={}){let n=dr("git",r,ie({cwd:e,encoding:"utf8"}));if(n.status!==0&&!t.allowFailure){let o=bn(e,r,n);if(t.throwError)throw new Error(o);se(o)}return n.stdout||""}function bn(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 mr(e){return kn(e,["status","--short"],{allowFailure:!0}).split(`
8
+ `).map(r=>r.trim()).filter(Boolean)}function I(e,r){try{let t=dr("git",r,ie({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 cr(e,r,t){let n=I(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 pr(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 _(n,"missing worktree path");let s=I(e,["rev-parse","HEAD"]);if(s.status!==0)return _(n,s.error||s.stderr||s.stdout||"failed to resolve HEAD");let i;if(o)i=o;else{let d=I(e,["rev-parse",n]);if(d.status!==0)return _(n,d.error||d.stderr||d.stdout||`failed to resolve ${n}`,s.stdout.trim());i=d.stdout.trim()}let a=s.stdout.trim();if(a===i)return{checked:!0,base:n,head:a,baseHead:i,baseIsAncestorOfHead:!0,headIsAncestorOfBase:!0,relation:"synced"};let u=cr(e,i,a),p=cr(e,a,i),m=u.error||p.error||void 0;if(u.isAncestor==null||p.isAncestor==null)return{checked:!1,base:n,head:a,baseHead:i,baseIsAncestorOfHead:u.isAncestor,headIsAncestorOfBase:p.isAncestor,relation:"unknown",...m?{error:m}:{}};let c=u.isAncestor?"ahead":p.isAncestor?"merged":"diverged";return{checked:!0,base:n,head:a,baseHead:i,baseIsAncestorOfHead:u.isAncestor,headIsAncestorOfBase:p.isAncestor,relation:c,...m?{error:m}:{}}}function _(e,r,t=null){return{checked:!1,base:e,head:t,baseHead:null,baseIsAncestorOfHead:null,headIsAncestorOfBase:null,relation:"unknown",error:r}}var V=l(()=>{"use strict";b();g();ur()});var fr=l(()=>{"use strict";V()});var pe=l(()=>{"use strict";V();b();fr()});var fe=l(()=>{"use strict";g()});var R=l(()=>{"use strict"});var G=l(()=>{"use strict"});var gr=l(()=>{"use strict"});var ws,Os,ge=l(()=>{"use strict";ws=25*1024*1024*1024,Os=12*1024*1024*1024});var Ks,Ws,hr=l(()=>{"use strict";ge();Ks=5*1024*1024*1024,Ws=10*1024*1024*1024});var $s,Ls,he=l(()=>{"use strict";hr();ge();$s=30*1024*1024*1024,Ls=15*1024*1024*1024});var yr=l(()=>{"use strict";T();g()});var br=l(()=>{"use strict";N();g()});var xn,Sn,xr=l(()=>{"use strict";gr();E();R();G();J();he();T();yr();br();g();xn=500*1024*1024,Sn=4*1024*1024*1024});var J=l(()=>{"use strict";xr()});import{homedir as vn}from"node:os";import Cn from"node:path";var Sr,be=l(()=>{"use strict";Sr=Cn.join(vn(),".kynver",".env")});var _r=l(()=>{"use strict"});var Er=l(()=>{"use strict";_r()});var vr=l(()=>{"use strict"});var Cr=l(()=>{"use strict";g()});var Re=l(()=>{"use strict";Er();vr();Cr()});var Ar=l(()=>{"use strict"});var wr=l(()=>{"use strict";Ar()});var X=l(()=>{"use strict";be();b();E();Re();wr()});var Or=l(()=>{"use strict";R();R()});var Pr=l(()=>{"use strict";be();Re();X()});var xe=l(()=>{"use strict"});var Ir=l(()=>{"use strict";g()});import Tn from"node:path";var fa,Se=l(()=>{"use strict";b();Ir();fa=Tn.join(".openclaw","harness")});var Z=l(()=>{"use strict";E();R();G();J();Se()});var Nr=l(()=>{"use strict";pe();R();Or();E();X();Pr();fe();xe();Z()});var Mn,Wa,Kr=l(()=>{"use strict";Mn=["claude","cursor","codex","gemini","gemini-api","openai-compatible"],Wa=Mn.join("|")});var Wr=l(()=>{"use strict";b()});var Br=l(()=>{"use strict";Wr()});var Dr=l(()=>{"use strict"});var Ur=l(()=>{"use strict";Dr()});import{homedir as Fn,totalmem as ul}from"node:os";import _e from"node:path";var Mr,vl,Cl,Al,wl,E=l(()=>{"use strict";pe();b();fe();R();G();J();he();X();Nr();Kr();Z();Br();xe();Ur();Mr=_e.join(Fn(),".kynver"),vl=_e.join(Mr,"config.json"),Cl=_e.join(Mr,"credentials"),Al=500*1024*1024,wl=4*1024*1024*1024});var Fr=l(()=>{"use strict";E();Se();Z();g()});var T=l(()=>{"use strict";Fr();g()});import{accessSync as Hl,constants as jl,existsSync as $n,readFileSync as Ln}from"node:fs";import Hn from"node:path";function Yn(e){return Hn.join(e,jn)}function Vn(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function Ee(e){if(!e)return null;let r=Yn(e);if(!$n(r))return null;try{let t=JSON.parse(Ln(r,"utf8")),n=t.oomEvidence;return{exitCode:Vn(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 $r(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 jn,Vl,ve=l(()=>{"use strict";jn="exit.json";Vl=String.raw`"use strict";
9
+ const cp = require("child_process"), fs = require("fs");
10
+ const argv = process.argv.slice(1);
11
+ const exitFile = argv[0], cmd = argv[1], args = argv.slice(2);
12
+ const startedMs = Date.now();
13
+ function cgroupOomKills() {
14
+ try {
15
+ const line = fs.readFileSync("/proc/self/cgroup", "utf8").split("\n").find((l) => l.startsWith("0::"));
16
+ if (!line) return null;
17
+ const file = "/sys/fs/cgroup" + line.slice(3).trim().replace(/\/$/, "") + "/memory.events";
18
+ const m = /(?:^|\n)oom_kill (\d+)/.exec(fs.readFileSync(file, "utf8"));
19
+ return m ? Number(m[1]) : null;
20
+ } catch { return null; }
21
+ }
22
+ function kernelLog() {
23
+ const override = process.env.KYNVER_EXIT_CAPTURE_KERNEL_LOG_FILE;
24
+ if (override) { try { return fs.readFileSync(override, "utf8"); } catch { return ""; } }
25
+ const run = (bin, a) => {
26
+ try {
27
+ const r = cp.spawnSync(bin, a, { encoding: "utf8", timeout: 3000, maxBuffer: 8 * 1024 * 1024, stdio: ["ignore", "pipe", "ignore"] });
28
+ return r.status === 0 ? String(r.stdout || "") : "";
29
+ } catch { return ""; }
30
+ };
31
+ return run("journalctl", ["-k", "-q", "--no-pager", "--since", "@" + Math.floor(startedMs / 1000)]) || run("dmesg", []);
32
+ }
33
+ const oomBefore = cgroupOomKills();
34
+ let child, finished = false;
35
+ function write(rec) {
36
+ try { fs.writeFileSync(exitFile, JSON.stringify(rec, null, 2) + "\n"); } catch {}
37
+ }
38
+ function finish(code, signal, spawnError) {
39
+ if (finished) return;
40
+ finished = true;
41
+ const rec = { exitCode: code, signal: signal || null, startedAt: new Date(startedMs).toISOString(), endedAt: new Date().toISOString(), childPid: child && child.pid };
42
+ if (spawnError) rec.spawnError = spawnError;
43
+ if (signal === "SIGKILL" || code === 137 || (code !== 0 && code !== null)) {
44
+ const oomAfter = cgroupOomKills();
45
+ if (oomBefore !== null && oomAfter !== null && oomAfter > oomBefore) {
46
+ rec.oomEvidence = { source: "cgroup", detail: "memory.events oom_kill " + oomBefore + " -> " + oomAfter };
47
+ } else if (signal === "SIGKILL" || code === 137) {
48
+ const pid = child && child.pid;
49
+ const hit = kernelLog().split("\n").find((l) => pid && new RegExp("(?:Killed process|oom-kill:.*pid=|Memory cgroup out of memory: Killed process) ?" + pid + "\\b").test(l));
50
+ if (hit) rec.oomEvidence = { source: "kernel_log", detail: hit.trim().slice(0, 300) };
51
+ }
52
+ }
53
+ write(rec);
54
+ if (signal) {
55
+ const n = (require("os").constants.signals || {})[signal];
56
+ process.exit(128 + (n || 9));
57
+ }
58
+ process.exit(code === null ? 1 : code);
59
+ }
60
+ try {
61
+ child = cp.spawn(cmd, args, { stdio: "inherit" });
62
+ } catch (e) {
63
+ process.stderr.write("failed to spawn worker process: " + (e && e.message) + "\n");
64
+ finish(127, null, String(e && e.message));
65
+ }
66
+ for (const s of ["SIGTERM", "SIGINT", "SIGHUP"]) process.on(s, () => { try { child.kill(s); } catch {} });
67
+ child.on("error", (e) => {
68
+ process.stderr.write("failed to spawn worker process: " + (e && e.message) + "\n");
69
+ if (!child.pid) finish(127, null, String(e && e.message));
70
+ });
71
+ child.on("exit", (code, signal) => finish(code, signal));
72
+ `});function Ce(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let r=e.handoffState;return typeof r=="string"&&zn.has(r)}function Ae(e){return!!(e&&Gn.test(e))}function Hr(e){if(e.noRestartAt?.trim())return"stopped_by_hand";if(e.finalResult&&!Ce(e.finalResult))return"finished";if(e.alive)return e.stale?"stuck":"running";let r=e.error?.trim()??"",t=e.exit??null;if(t?.oomEvidence||Ae(r))return"oom";let n=e.reconcileReason??"";return/reconciled stale worker/i.test(n)?"stuck":Lr.test(r)||Lr.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 jr(e){let r=[Jn(e.stopClass)],t=$r(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 Jn(e){switch(e){case"finished":return"finished";case"oom":return"ran out of memory";case"crashed":return"crashed";case"no_report":return"stopped without reporting";case"timed_out":return"timed out";case"stuck":return"stuck (no progress)";case"stopped_by_hand":return"stopped on purpose";default:return"running"}}var Gn,Lr,zn,Yr=l(()=>{"use strict";T();g();ve();Gn=/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,Lr=/\btimed? ?out\b|\btimeout\b|deadline exceeded/i,zn=new Set(["exited_without_final_result","exited_without_complete_heartbeat","exit_failure"])});function Vr(e,r=240){let t=e.replace(/\s+/g," ").trim();return t.length>r?`${t.slice(0,r-1)}\u2026`:t}function we(e){let r=(e??"").trim();if(!r)return null;if(P(r))return{blocked:!0,reason:`provider authentication failed: ${Vr(r)}`};for(let t of Xn)if(t.test.test(r))return{blocked:!0,reason:`${t.label}: ${Vr(r)}`};return null}var Xn,Gr=l(()=>{"use strict";j();Xn=[{test:/(?:claude provider refuses to spawn: worker prompt is empty after argv assembly|Input must be provided (?:either )?through stdin or as a prompt argument)/i,label:"provider prompt delivery failed"},{test:/\b(?:invalid|unknown|unsupported|unrecognized)\b[^.\n]*\bmodel\b/i,label:"provider rejected the requested model"},{test:/\bmodel\b[^.\n]*\b(?:not\s+(?:found|supported|available|recognized|valid)|is\s+not\s+valid|does\s+not\s+exist)/i,label:"provider rejected the requested model"},{test:/\b(?:did you mean|available models|choose (?:a|one of)|supported models)\b/i,label:"provider rejected the requested model"},{test:/model preflight failed/i,label:"model/provider preflight failed"},{test:/\b(?:command not found|ENOENT|is the .*CLI on PATH|executable not found|no such file or directory)\b/i,label:"provider CLI is missing or not on PATH"},{test:/\bfailed to spawn\b/i,label:"provider failed to spawn the worker process"},{test:/\b(?:not logged in|unauthorized|authentication (?:failed|required)|invalid api key|missing api key|401)\b/i,label:"provider authentication failed"},{test:/\b(?:out of usage|increase limits?|switch to auto|ask your admin to increase your limit|usage limits?|quota exceeded|insufficient_quota|credits? exhausted|billing|payment required)\b/i,label:"provider quota exhausted"}]});function zr(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function qn(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 Zn(e){return!e?.checked||e.headIsAncestorOfBase!==!1?null:zr(e.head)}function Qn(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 Jr(e){if(e.alive||qn(e.finalResult))return null;let r=(e.changedFiles??[]).filter(i=>i.trim()).length,t=zr(e.headCommit)??Zn(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:Qn(s,r,t)}}var Xr=l(()=>{"use strict"});import{existsSync as eo,readFileSync as ro,statSync as Qr}from"node:fs";import Q from"node:path";function so(e,r=process.env){let t=e?no:to,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 io(e){return e.baseCommit?.trim()||e.base?.trim()||"origin/main"}function Oe(e){try{return Qr(e).mtimeMs}catch{return-1}}function ao(e){let r=Q.join(e,".git");try{if(Qr(r).isDirectory())return r;let t=/^gitdir:\s*(.+)$/m.exec(ro(r,"utf8"));return t?Q.resolve(e,t[1].trim()):null}catch{return null}}function qr(e){let r=ao(e);return[Oe(e),r?Oe(Q.join(r,"HEAD")):-2,r?Oe(Q.join(r,"index")):-2].join(":")}function Zr(e,r){return{changedFiles:mr(e),gitAncestry:pr(e,{base:r.base,baseCommit:r.baseCommit})}}function lo(e,r){for(k.delete(e),k.set(e,r);k.size>oo;){let t=k.keys().next().value;if(t===void 0)break;k.delete(t)}}function et(e,r,t){let n=io(r);if(!e||!e.trim())return K.missingWorktree++,{changedFiles:[],gitAncestry:_(n,"missing worktree path")};let o=`${e}\0${n}`;if(!eo(e))return k.delete(o),K.missingWorktree++,{changedFiles:[],gitAncestry:_(n,`worktree no longer exists: ${e}`)};if(t.alive)return k.delete(o),K.liveProbes++,Zr(e,r);let s=t.ttlMs??so(!!r.baseCommit?.trim()),i=t.now??Date.now(),a=qr(e),u=k.get(o);if(s>0&&u&&u.fingerprint===a&&i<u.expiresAt)return K.hits++,u.probe;K.misses++;let p=Zr(e,r);if(s>0){let m=.8+.4*(t.random??Math.random)();lo(o,{fingerprint:qr(e),expiresAt:i+Math.round(s*m),probe:p})}return p}var to,no,oo,k,K,rt=l(()=>{"use strict";V();to=10*6e4,no=60*6e4,oo=2048,k=new Map,K={hits:0,misses:0,liveProbes:0,missingWorktree:0}});function W(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function uo(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 co(e){if(W(e.headCommit)||W(e.prUrl)||W(e.artifactBundlePath)||W(e.patchPath))return!0;let r=e.gitAncestry;return!!(r?.checked&&r.headIsAncestorOfBase===!1&&W(r.head))}function tt(e){return uo(e.finalResult)?e.changedFiles.length===0?{blocked:!1}:co(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 nt(e){if(e.blocked)return e.detail??e.reason??"dirty_worktree_no_pr"}var ot=l(()=>{"use strict"});function Pe(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 st(e){let r=e.targetPrReconciliation??e.target_pr_reconciliation??e.targetPrs??e.target_prs;return Array.isArray(r)?r.length:0}function ee(e){let r=e.trim();if(!r)return null;let t=Pe(r);if(t)return t;let n=[],o=/```(?:json)?\s*([\s\S]*?)```/gi,s;for(;(s=o.exec(r))!==null;){let m=Pe(s[1]??"");m&&n.push(m)}let i=r.indexOf("{"),a=r.lastIndexOf("}");if(i>=0&&a>i){let m=Pe(r.slice(i,a+1));m&&n.push(m)}if(n.length===0)return null;let u=n[n.length-1],p=st(u);for(let m of n){let c=st(m);c>p&&(u=m,p=c)}return u}var Ie=l(()=>{"use strict"});function it(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 at(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`${r[1].toLowerCase()}/pull/${r[2]}`:e.trim().toLowerCase()}function mo(e){return new Set(e.map(r=>at(it(r)??r)).filter(Boolean))}function lt(e,r,t){let n=it(e)??e;if(!n)return"unrelated";let o=at(n);return mo(r).has(o)?"contract":t?(t.outcome==="skipped"||t.outcome==="blocked")&&t.reason?.trim()?"support":(t.outcome==="merged","unrelated"):"unrelated"}var ut=l(()=>{"use strict"});function v(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function po(e){return e==null?!1:typeof e=="string"?e.trim().length>0:typeof e=="object"?Object.keys(e).length>0:!0}function x(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`https://github.com/${r[1]}/pull/${r[2]}`:v(e)}function re(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`${r[1].toLowerCase()}/pull/${r[2]}`:e.trim().toLowerCase()}function ct(e){let r=null;if(typeof e=="string"){let o=ee(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=x(String(s.prUrl??s.pr_url??"")),a=v(s.outcome);!i||a!=="merged"&&a!=="skipped"&&a!=="blocked"||n.push({prUrl:i,outcome:a,mergeCommit:v(s.mergeCommit??s.merge_commit),reason:v(s.reason)})}return n}function dt(e,r){let t=[],n=x(v(e.prUrl)??"");if(n&&t.push(n),r&&typeof r=="object"&&!Array.isArray(r)){let o=r,s=x(String(o.prUrl??o.pr_url??""));s&&t.push(s)}return[...new Set(t)]}function mt(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(!po(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?x(v(r.targetPrUrl)??"")??(r.targetPrUrls.length===1?x(r.targetPrUrls[0]):null):null;if(s){let c=dt(t,n);if(!(n&&typeof n=="object"&&!Array.isArray(n)&&n.supersedesOriginalTargetPr===!0)){for(let y of c)if(y!==s)return{blocked:!0,reason:"duplicate_repair_pr",detail:`Repair worker opened or attached PR ${y} instead of canonical target ${s}`}}let h=ct(n).find(y=>y.prUrl===s);if(!h||h.outcome!=="merged"&&!(h.reason?.trim()&&(h.outcome==="skipped"||h.outcome==="blocked")))return{blocked:!0,reason:"missing_repair_target_reconciliation",detail:`Repair worker must reconcile target PR ${s}`}}let i=ct(n),a=new Map(i.map(c=>[re(c.prUrl),c])),u=new Set(r.targetPrUrls.map(c=>re(x(c)??c)).filter(Boolean)),p=dt(t,n);if(r.landingOnly)for(let c of p){let d=a.get(re(c)),f=lt(c,r.targetPrUrls,d);if(!(f==="contract"||f==="support"))return u.size>0?{blocked:!0,reason:"unrelated_implementation_pr",detail:`Landing-only worker attached unrelated PR ${c}`}:{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 m=[];for(let c of r.targetPrUrls){let d=re(x(c)??c),f=a.get(d);if(!f){m.push(d);continue}f.outcome!=="merged"&&!f.reason?.trim()&&m.push(d)}return m.length>0?{blocked:!0,reason:m.every(c=>a.has(c))?"incomplete_target_pr_landing":"missing_target_pr_reconciliation",detail:`Target PR reconciliation incomplete: ${m.join(", ")}`}:{blocked:!1}}function pt(e){if(e.blocked)return e.detail??e.reason}var ft=l(()=>{"use strict";Ie();ut()});function go(e){let r=Date.now();if(e.providerTerminalError||H(e.finalResult)||e.finalResult&&e.error?.trim()||P(e.error)||P(e.finalResult)){let o=e.error||(typeof e.finalResult=="string"?e.finalResult:"provider terminal error");return{state:"blocked",reason:we(o)?.reason??`provider terminal error: ${o}`}}if(e.completionBlocker&&!gt(e.completionBlocker))return{state:"blocked",reason:e.completionBlocker};if(e.finalResult){if(e.localOnly&&yo(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=tt(o);if(s.blocked){let i=nt(s);return{state:"needs_attention",reason:s.reason?`landing blocked (${s.reason}): ${i}`:`landing blocked: ${i}`}}if(e.landingContract){let i=mt({contract:e.landingContract,snapshot:o,finalResult:e.finalResult}),a=pt(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(ho(e))return{state:"done",reason:"empty abandoned worker record"};let o=we(e.error);if(o)return{state:"blocked",reason:o.reason};let s=Jr({alive:!1,finalResult:null,changedFiles:e.changedFiles,gitAncestry:e.gitAncestry});if(s?.salvageable){let u=e.error?.trim();return{state:"needs_attention",reason:u?`${s.attentionReason} (${u})`:s.attentionReason}}let i=e.error?.trim(),a=Ae(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>fo)return{state:"needs_attention",reason:`no first stream event ${ae(t)}s after start`};let n=e.lastActivityAt?Date.parse(e.lastActivityAt):NaN;return Number.isFinite(n)&&r-n>te?{state:"stale",reason:`no log/event/heartbeat activity for ${ae(n)}s`}:{state:"ok",reason:"recent activity"}}function gt(e){let r=e?.trim();return r?/completion acknowledged but board not advanced/i.test(r)&&/task already terminal/i.test(r):!1}function ho(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 yo(e){let r=null;if(typeof e=="string"?r=ee(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 ko(e,r,t){let n=e.completionSnapshot?.finalResult;return e.completionAckSource==="local-pr-merged-reconcile"&&n!==void 0&&n!==null?n:r||(n??Le(t))}function bo(e,r={}){let t=ar(e.stdoutPath),n=He(e.heartbeatPath),o=typeof e.completionReportedAt=="string"&&e.completionReportedAt.trim().length>0,s=ko(e,t.finalResult,n),i=o?!1:A(e.pid),a=U(e.stdoutPath),u=U(e.stderrPath),p=U(e.heartbeatPath),{changedFiles:m,gitAncestry:c}=et(e.worktreePath,{base:r.base,baseCommit:r.baseCommit},{alive:i}),d=Fe([t.lastEventAt,n.lastHeartbeatAt,M(e.stdoutPath),M(e.stderrPath),M(e.heartbeatPath)]),f=i?null:Ee(e.workerDir),h=s&&!Ce(s)?s:null,y=t.error||!i&&!s&&F(e.stderrPath,10).trim()||void 0,Te=y||!i&&s&&!h&&F(e.stderrPath,10).trim()||void 0,Ne=typeof e.completionBlocker=="string"&&e.completionBlocker.trim()?e.completionBlocker.trim():null,Ke=gt(Ne)?null:Ne,St=e.repairTargetPrUrl?{landingOnly:!1,targetPrUrls:[e.repairTargetPrUrl],targetPrUrl:e.repairTargetPrUrl,repairEnforceOriginalPr:!0}:null,B=go({alive:i,finalResult:s,firstEventAt:t.firstEventAt,stdoutBytes:a,stderrBytes:u,heartbeatBytes:p,lastActivityAt:d,heartbeatBlocker:n.heartbeatBlocker,startedAt:e.startedAt,error:y,providerTerminalError:t.providerTerminalError,changedFiles:m,gitAncestry:c,completionBlocker:Ke,landingContract:St,prUrl:e.repairTargetPrUrl??e.taskPrUrl??null,localOnly:e.localOnly===!0,taskId:e.taskId??null,agentOsId:e.agentOsId??null,reconcileReason:e.reconcileReason??null}),_t=Ke||B.state==="blocked"?"blocked":o||B.state==="done"?"done":s?"exited":i?"running":"exited",ne=e.stopClass&&e.stopClass!=="running"&&e.stopClass!=="finished"?e.stopClass:null,Et=Hr({alive:i,finalResult:s,error:Te??null,stale:B.state==="stale",noRestartAt:e.noRestartAt??null,reconcileReason:e.reconcileReason??null,exit:f}),C=ne&&!i&&!h?ne:Et,vt=C==="running"||C==="finished"?null:(ne===C?e.stopReason:void 0)??jr({stopClass:C,exit:f,error:Te??null,reconcileReason:e.reconcileReason??null});return{runId:e.runId,worker:e.name,pid:e.pid,alive:i,status:_t,stopClass:C,stopReason:vt,exit:f,attention:B,branch:e.branch,worktreePath:e.worktreePath,ownedPaths:e.ownedPaths,stdoutBytes:a,stderrBytes:u,heartbeatBytes:p,firstEventAt:t.firstEventAt,lastEventAt:t.lastEventAt,lastActivityAt:d,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:m,gitAncestry:c,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 ht(e){return!!(e.finalResult||e.alive===!1||e.status==="exited"||e.status==="done")}function yt(e){return e.finalResult?e.attention.state==="needs_attention"||e.attention.state==="blocked":!1}var fo,te,N=l(()=>{"use strict";je();lr();Yr();ve();j();Gr();Xr();rt();ot();ft();Ie();g();fo=18e4,te=6e5});N();var kt="kynver-harness:",Ro="@runner:";function bt(e){return e?.trim()?e.trim():null}function xo(e){let r=bt(e);if(!r?.startsWith(kt))return null;let t=r.slice(kt.length),n=t.indexOf(Ro);return n>=0?t.slice(0,n).trim()||null:t.trim()||null}function Rt(e,r){let t=bt(r);return t?xo(e)===t:!1}N();g();function So(e){let{worker:r,status:t,taskLease:n}=e,o=n?.leaseOwner??null;if(r.dispatched&&n){if(n.status==="running"&&o&&!Rt(o,r.runId))return{health:"orphaned",reason:`task lease held by ${o}, expected harness run ${r.runId}`};let i=r.leaseToken?.trim()??"",a=n.leaseToken?.trim()??"";if(n.status==="running"&&i&&a&&i!==a)return{health:"orphaned",reason:"task leaseToken superseded on board \u2014 completion replay would fail"};if(n.status==="running"&&!t.alive&&!t.finalResult)return{health:"orphaned",reason:"board task running but worker process is not alive"}}if(r.status==="running"&&!t.alive&&!t.finalResult)return{health:"orphaned",reason:"worker.json still running but process is dead"};if(t.attention.state==="stale")return{health:"stale",reason:t.attention.reason};let s=t.lastHeartbeatAt?Date.parse(t.lastHeartbeatAt):NaN;return t.alive&&Number.isFinite(s)&&Date.now()-s>te?{health:"stale",reason:`heartbeat older than ${Math.floor(te/1e3)}s`}:t.alive&&r.pid&&!A(r.pid)?{health:"orphaned",reason:"pid recorded but process is not alive"}:n?.status==="running"&&!t.alive&&t.finalResult?{health:"healthy",reason:"finished worker awaiting completion replay"}:{health:"healthy",reason:t.attention.reason||"worker within expected lifecycle bounds"}}T();function xt(e){return!!e.completionReportedAt?.trim()}N();function _o(e){let{worker:r,status:t}=e,n=[];r.localOnly&&n.push("local-only worker (no board linkage)"),(!r.agentOsId||!r.taskId)&&n.push("missing agentOsId/taskId linkage"),xt(r)&&n.push("completion already acknowledged"),r.completionBlocker&&n.push(r.completionBlocker),t.heartbeatBlocker&&t.alive&&n.push(`worker heartbeat blocker: ${t.heartbeatBlocker}`),t.attention.state==="blocked"&&n.push(t.attention.reason||"worker attention blocked"),yt(t)&&n.push(t.attention.reason||"landing gate blocked");let o=ht(t),s;return o?t.finalResult?s="final_result":t.alive?s="terminal_status":s="process_exited":n.push("worker has not reached a terminal condition"),{eligible:o&&n.length===0,terminalVerified:o,terminalReason:s,blockers:n}}export{_o as assessAutoCompleteEligibility,So as classifyWorkerHealth,bo as computeWorkerStatus};