@kynver-app/runtime 0.2.88 → 0.2.90

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,5 @@
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 Be}from"node:os";import Le from"node:path";function tt(e){return e==="~"?Be():e.startsWith("~/")||e.startsWith("~\\")?Le.join(Be(),e.slice(2)):e}function w(e){return Le.resolve(tt(e))}var P=a(()=>{"use strict"});function y(e=process.platform){return e!=="win32"}var Fe=a(()=>{"use strict"});var d=a(()=>{"use strict";Fe()});var nt,lo,ot,uo,pe=a(()=>{"use strict";nt=["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"],lo=new Set(nt),ot=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],uo=new Set(ot)});var z=a(()=>{"use strict";P();d();pe()});var $e=a(()=>{"use strict";z()});var me=a(()=>{"use strict";z();P();$e()});var fe=a(()=>{"use strict";d()});var _=a(()=>{"use strict"});var X=a(()=>{"use strict"});var He=a(()=>{"use strict"});var Po,Io,ge=a(()=>{"use strict";Po=25*1024*1024*1024,Io=12*1024*1024*1024});var Mo,Wo,je=a(()=>{"use strict";ge();Mo=5*1024*1024*1024,Wo=10*1024*1024*1024});var Ho,jo,he=a(()=>{"use strict";je();ge();Ho=30*1024*1024*1024,jo=15*1024*1024*1024});var Ve=a(()=>{"use strict";d()});import lt from"node:path";var Zo,Re=a(()=>{"use strict";P();Ve();Zo=lt.join(".openclaw","harness")});var Z=a(()=>{"use strict";v();_();X();ee();Re()});var Je=a(()=>{"use strict";v();Re();Z();d()});var ke=a(()=>{"use strict";Je();d()});var ze=a(()=>{"use strict";ke();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";er();d();re()});var tr=a(()=>{"use strict";re()});var nr=a(()=>{"use strict"});var or=a(()=>{"use strict"});var _e=a(()=>{"use strict"});var ir=a(()=>{"use strict"});var sr=a(()=>{"use strict";_e();ir()});var ar=a(()=>{"use strict";Qe();rr();re();tr();nr();z();or();sr();_e();d()});var lr=a(()=>{"use strict";ar()});var kt,_t,ur=a(()=>{"use strict";He();v();_();X();ee();he();ke();ze();lr();d();kt=500*1024*1024,_t=4*1024*1024*1024});var ee=a(()=>{"use strict";ur()});import{homedir as vt}from"node:os";import xt from"node:path";var cr,ve=a(()=>{"use strict";cr=xt.join(vt(),".kynver",".env")});var dr=a(()=>{"use strict"});var pr=a(()=>{"use strict";dr()});var mr=a(()=>{"use strict"});var fr=a(()=>{"use strict";d()});var xe=a(()=>{"use strict";pr();mr();fr()});var gr=a(()=>{"use strict"});var hr=a(()=>{"use strict";gr()});var te=a(()=>{"use strict";ve();P();v();xe();hr()});var Rr=a(()=>{"use strict";_();_()});var yr=a(()=>{"use strict";ve();xe();te()});var be=a(()=>{"use strict"});var kr=a(()=>{"use strict";me();_();Rr();v();te();yr();fe();be();Z()});function x(e){let r=e.trim().toLowerCase();return It[r]??r}var _r,Pt,It,ne=a(()=>{"use strict";_r=["claude","cursor","codex","gemini","gemini-api","openai-compatible"],Pt=_r.join("|"),It={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"}});import{existsSync as Nt,mkdirSync as ul,readFileSync as Kt,writeFileSync as cl}from"node:fs";import{homedir as Dt,totalmem as pl}from"node:os";import Ee from"node:path";function Mt(e){return{...e,...e.harnessRoot?.trim()?{harnessRoot:w(e.harnessRoot.trim())}:{},...e.defaultRepo?.trim()?{defaultRepo:w(e.defaultRepo.trim())}:{}}}function T(){if(!Nt(vr))return{};try{return Mt(JSON.parse(Kt(vr,"utf8")))}catch{return{}}}var xr,vr,Cl,Ol,Al,v=a(()=>{"use strict";me();P();fe();_();X();ee();he();te();kr();ne();Z();be();xr=Ee.join(Dt(),".kynver"),vr=Ee.join(xr,"config.json"),Cl=Ee.join(xr,"credentials");Ol=500*1024*1024,Al=4*1024*1024*1024});var Xr=/^claude[-_]/i,Qr=/^(?:opus|sonnet|haiku)\b/i;function Me(e){let r=e.trim();return Xr.test(r)||Qr.test(r)}function We(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 Ue(e){return e.trim().toLowerCase().startsWith("gemini-")}function Zr(e){return We(e)?"codex":Me(e)?"claude":Ue(e)?"gemini":(ce(e),"cursor")}function et(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 rt(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)||We(n)||ce(n)||Ue(n)?{lane:t,model:n,provider:Zr(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?et(r)??rt(r):null}function de(e){let r=f(e);return r?!!(r.provider&&r.provider!=="cursor"||r.model&&!ce(r.model)):!1}v();var br={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 br[e]}function Er(){return Object.values(br)}import{existsSync as Gt}from"node:fs";import{homedir as qt}from"node:os";import $ from"node:path";import{createHash as Ar}from"node:crypto";import{statSync as Vt}from"node:fs";import{spawnSync as wr}from"node:child_process";import{existsSync as Or,readFileSync as Wt}from"node:fs";import b 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},Ut=".COM;.EXE;.BAT;.CMD";function Bt(e){return e.includes("/")||e.includes("\\")}function Lt(e){return(e.PATHEXT||Ut).split(";").map(r=>r.trim().toLowerCase()).filter(r=>r.startsWith("."))}function Ft(e){let r=Object.keys(e).find(t=>t.toUpperCase()==="PATH");return r?e[r]??"":""}function $t(e,r={}){let t=r.env??process.env,n=r.exists??Or,o=Lt(t),s=b.win32.extname(e)!=="",i=l=>s?[l]:o.map(u=>`${l}${u}`);if(Bt(e)||b.win32.isAbsolute(e))return i(e).find(l=>n(l))??null;for(let l of Ft(t).split(";").map(u=>u.trim()).filter(Boolean)){let u=i(b.win32.join(l,e)).find(c=>n(c));if(u)return u}return null}var Sr=/%~?dp0%?\\?([^"%\r\n]+?\.(?:c|m)?js)\b/i,Ht=/^\s*SET\s+"?([A-Za-z_]\w*)=([^"\r\n]*)"?\s*$/i;function Cr(e){return e.replace(/^[\\/]+/,"")}function jt(e){let r=e.split(/\r?\n/),t=new Map;for(let s of r){let i=Ht.exec(s);i&&t.set(i[1].toUpperCase(),i[2])}let n=r.filter(s=>s.includes("%*")).pop();if(!n)return null;let o=Sr.exec(n);if(o)return Cr(o[1]);for(let s of n.matchAll(/%([A-Za-z_]\w*)%/g)){let i=t.get(s[1].toUpperCase()),l=i?Sr.exec(i):null;if(l)return Cr(l[1])}return null}function Yt(e,r={}){if((r.platform??process.platform)!=="win32")return{executable:e,prefixArgs:[],kind:"passthrough"};let n=$t(e,r);if(!n)return{executable:e,prefixArgs:[],kind:"passthrough"};let o=b.win32.extname(n).toLowerCase();if(o!==".cmd"&&o!==".bat")return{executable:n,prefixArgs:[],kind:"exe"};let s=r.readText??(ue=>Wt(ue,"utf8")),i=r.exists??Or,l;try{l=s(n)}catch{throw new F(n)}let u=jt(l);if(!u)throw new F(n);let c=b.win32.dirname(n),p=b.win32.join(c,u);if(!i(p))throw new F(n);let L=b.win32.join(c,"node.exe");return{executable:i(L)?L:r.nodeExecutable??process.execPath,prefixArgs:[p],kind:"node-shim"}}function E(e,r,t={}){let n=Yt(e,t);return[n.executable,[...n.prefixArgs,...r]]}function R(e){try{let r=Vt(e),t=`${e}|${r.size}|${r.mtimeMs}`;return Ar("sha256").update(t).digest("hex").slice(0,16)}catch{return}}function K(e){return Ar("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]=E(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]=E(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 Jt="codex";function zt(){let e=qt();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 Xt(e){return $.dirname(e)}function Qt(e){let r,t;for(let n of zt()){if(!Gt(n))continue;r??=n;let o=h(e,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status",env:{CODEX_HOME:Xt(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 Pr(e=new Date().toISOString()){let r=g(Jt,["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}=Qt(r),o=!!t&&n.ok;return{providerId:"codex",ready:o,authSource:"oauth_local",sessionFingerprint:t?R(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 Zt}from"node:fs";import{homedir as en}from"node:os";import Se from"node:path";function rn(){let e=process.env.HERMES_HOME?.trim(),r=e?Se.resolve(e):Se.join(en(),".hermes");return Se.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=rn(),o=Zt(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?R(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=Pr(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 Ir=["low","medium","high"],Tr={oauth_local:0,subscription_hermes:0,runner_token:1,api_key_env:2,none:3};function Nr(e,r){let t=N(e);return r==="privileged"?t.supportsPrivilegedPlatformActions:r==="low"?t.supportsLowRiskOrchestration:!0}function tn(e,r){let t=N(e.providerId),n=N(r.providerId),o=Ir.indexOf(t.costTier)-Ir.indexOf(n.costTier);if(o!==0)return o;let s=Tr[e.binding.authSource]-Tr[r.binding.authSource];return s!==0?s:e.providerId.localeCompare(r.providerId)}function Ce(e){let r=Er().map(l=>({providerId:l.id,binding:e.inventory.bindings[l.id]})).filter(l=>l.binding.ready&&Nr(l.providerId,e.riskClass));if(r.length===0)return null;let n=[...r].sort(tn)[0],o="codex";if(n.providerId===o)return{providerId:n.providerId,binding:n.binding};let s=e.inventory.bindings[o],i;return Nr(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 nn}from"node:fs";import{homedir as on}from"node:os";import sn from"node:path";var an="claude";function ln(){let e=on();return[sn.join(e,".claude",".credentials.json")]}function Kr(e=new Date().toISOString()){let r=g(an,["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=ln().find(i=>nn(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?R(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 Rn}from"node:fs";import{homedir as hn}from"node:os";import M from"node:path";import{closeSync as mu,existsSync as mn,mkdirSync as fu,openSync as gu,statSync as hu,unlinkSync as Ru}from"node:fs";d();import D from"node:path";pe();import{existsSync as j,readdirSync as un}from"node:fs";import S from"node:path";var cn=/^\d{4}\.\d{1,2}\.\d{1,2}-[a-f0-9]+$/i;function dn(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 pn(e){let r=S.join(e,"versions");if(!j(r))return null;let t=null,n=-1;for(let o of un(r,{withFileTypes:!0})){if(!o.isDirectory()||!cn.test(o.name))continue;let s=dn(o.name);s==null||s<=n||(n=s,t=S.join(r,o.name))}return t}function Oe(e){let r=e?.trim()||S.join(process.env.LOCALAPPDATA||"","cursor-agent"),t=S.join(r,"node.exe"),n=S.join(r,"index.js");if(j(t)&&j(n))return{nodeExe:t,indexJs:n,versionDir:r};let o=pn(r);if(!o)return null;let s=S.join(o,"node.exe"),i=S.join(o,"index.js");return!j(s)||!j(i)?null:{nodeExe:s,indexJs:i,versionDir:o}}function fn(e,r,t){return{executable:e,prefixArgs:[r],shell:!1,detached:y(),bundledVersionDir:t}}function Dr(e){if(process.platform==="win32"){let r=/\.(cmd|bat)$/i.test(e),t=/node\.exe$/i.test(e)&&mn(D.join(D.dirname(e),"index.js"));if(r||t||e==="agent"){let o=r?Oe(D.dirname(e)):t?{nodeExe:e,indexJs:D.join(D.dirname(e),"index.js"),versionDir:D.dirname(e)}:Oe();if(o)return fn(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:y()}}import{spawnSync as gn}from"node:child_process";function Ae(e,r=process.env){try{let t;try{t=Dr(e)}catch{t={executable:e,prefixArgs:[]}}let n=gn(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=hn();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 yn="agent";function Mr(e=new Date().toISOString()){let r=g(yn,["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=>Rn(l)),o=Ae(r),s=!!n||o.ok,i=t.ok&&s;return{providerId:"cursor",ready:i,authSource:"oauth_local",sessionFingerprint:n?R(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 _n}from"node:fs";import{homedir as vn}from"node:os";import Pe from"node:path";var xn=["OPENAI_API_KEY","ANTHROPIC_API_KEY","KYNVER_API_KEY","KYNVER_BASE_URL"];function bn(){let e=process.env.HERMES_HOME?.trim(),r=e?Pe.resolve(e):Pe.join(vn(),".hermes");return Pe.join(r,".env")}function En(e){try{let r=_n(e,"utf8"),t=[];for(let n of xn)new RegExp(`^${n}=`,"m").test(r)&&t.push(n);return t}catch{return[]}}function Wr(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?En(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?R(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 Ur(e={}){let r=e.nowIso?.()??new Date().toISOString(),t=H(r),n={codex:t,cursor:Mr(r),claude:Kr(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:Wr(r),hermesOpenAiCodex:ie(r),codexAdapterPath:t.path,readyCount:o}}var Sn=[/\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],Cn=[/\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 On(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 Be}from"node:os";import Le from"node:path";function tt(e){return e==="~"?Be():e.startsWith("~/")||e.startsWith("~\\")?Le.join(Be(),e.slice(2)):e}function w(e){return Le.resolve(tt(e))}var P=a(()=>{"use strict"});function y(e=process.platform){return e!=="win32"}var Fe=a(()=>{"use strict"});var d=a(()=>{"use strict";Fe()});var nt,lo,ot,uo,pe=a(()=>{"use strict";nt=["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"],lo=new Set(nt),ot=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],uo=new Set(ot)});var z=a(()=>{"use strict";P();d();pe()});var $e=a(()=>{"use strict";z()});var me=a(()=>{"use strict";z();P();$e()});var fe=a(()=>{"use strict";d()});var _=a(()=>{"use strict"});var X=a(()=>{"use strict"});var He=a(()=>{"use strict"});var Po,Io,ge=a(()=>{"use strict";Po=25*1024*1024*1024,Io=12*1024*1024*1024});var Wo,Mo,je=a(()=>{"use strict";ge();Wo=5*1024*1024*1024,Mo=10*1024*1024*1024});var Ho,jo,he=a(()=>{"use strict";je();ge();Ho=30*1024*1024*1024,jo=15*1024*1024*1024});var Ve=a(()=>{"use strict";d()});import lt from"node:path";var Zo,Re=a(()=>{"use strict";P();Ve();Zo=lt.join(".openclaw","harness")});var Z=a(()=>{"use strict";v();_();X();ee();Re()});var Je=a(()=>{"use strict";v();Re();Z();d()});var ke=a(()=>{"use strict";Je();d()});var ze=a(()=>{"use strict";ke();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";er();d();re()});var tr=a(()=>{"use strict";re()});var nr=a(()=>{"use strict"});var or=a(()=>{"use strict"});var _e=a(()=>{"use strict"});var ir=a(()=>{"use strict"});var sr=a(()=>{"use strict";_e();ir()});var ar=a(()=>{"use strict";Qe();rr();re();tr();nr();z();or();sr();_e();d()});var lr=a(()=>{"use strict";ar()});var kt,_t,ur=a(()=>{"use strict";He();v();_();X();ee();he();ke();ze();lr();d();kt=500*1024*1024,_t=4*1024*1024*1024});var ee=a(()=>{"use strict";ur()});import{homedir as vt}from"node:os";import xt from"node:path";var cr,ve=a(()=>{"use strict";cr=xt.join(vt(),".kynver",".env")});var dr=a(()=>{"use strict"});var pr=a(()=>{"use strict";dr()});var mr=a(()=>{"use strict"});var fr=a(()=>{"use strict";d()});var xe=a(()=>{"use strict";pr();mr();fr()});var gr=a(()=>{"use strict"});var hr=a(()=>{"use strict";gr()});var te=a(()=>{"use strict";ve();P();v();xe();hr()});var Rr=a(()=>{"use strict";_();_()});var yr=a(()=>{"use strict";ve();xe();te()});var be=a(()=>{"use strict"});var kr=a(()=>{"use strict";me();_();Rr();v();te();yr();fe();be();Z()});function x(e){let r=e.trim().toLowerCase();return It[r]??r}var _r,Pt,It,ne=a(()=>{"use strict";_r=["claude","cursor","codex","gemini","gemini-api","openai-compatible"],Pt=_r.join("|"),It={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"}});import{existsSync as Tt,mkdirSync as ul,readFileSync as Kt,writeFileSync as cl}from"node:fs";import{homedir as Dt,totalmem as pl}from"node:os";import Ee from"node:path";function Wt(e){return{...e,...e.harnessRoot?.trim()?{harnessRoot:w(e.harnessRoot.trim())}:{},...e.defaultRepo?.trim()?{defaultRepo:w(e.defaultRepo.trim())}:{}}}function N(){if(!Tt(vr))return{};try{return Wt(JSON.parse(Kt(vr,"utf8")))}catch{return{}}}var xr,vr,Cl,Ol,Al,v=a(()=>{"use strict";me();P();fe();_();X();ee();he();te();kr();ne();Z();be();xr=Ee.join(Dt(),".kynver"),vr=Ee.join(xr,"config.json"),Cl=Ee.join(xr,"credentials");Ol=500*1024*1024,Al=4*1024*1024*1024});var Xr=/^claude[-_]/i,Qr=/^(?:opus|sonnet|haiku)\b/i;function We(e){let r=e.trim();return Xr.test(r)||Qr.test(r)}function Me(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 Ue(e){return e.trim().toLowerCase().startsWith("gemini-")}function Zr(e){return Me(e)?"codex":We(e)?"claude":Ue(e)?"gemini":(ce(e),"cursor")}function et(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 rt(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?We(n)||Me(n)||ce(n)||Ue(n)?{lane:t,model:n,provider:Zr(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?et(r)??rt(r):null}function de(e){let r=f(e);return r?!!(r.provider&&r.provider!=="cursor"||r.model&&!ce(r.model)):!1}v();var br={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 T(e){return br[e]}function Er(){return Object.values(br)}import{existsSync as Gt}from"node:fs";import{homedir as qt}from"node:os";import $ from"node:path";import{createHash as Ar}from"node:crypto";import{statSync as Vt}from"node:fs";import{spawnSync as wr}from"node:child_process";import{existsSync as Or,readFileSync as Mt}from"node:fs";import b 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},Ut=".COM;.EXE;.BAT;.CMD";function Bt(e){return e.includes("/")||e.includes("\\")}function Lt(e){return(e.PATHEXT||Ut).split(";").map(r=>r.trim().toLowerCase()).filter(r=>r.startsWith("."))}function Ft(e){let r=Object.keys(e).find(t=>t.toUpperCase()==="PATH");return r?e[r]??"":""}function $t(e,r={}){let t=r.env??process.env,n=r.exists??Or,o=Lt(t),s=b.win32.extname(e)!=="",i=l=>s?[l]:o.map(u=>`${l}${u}`);if(Bt(e)||b.win32.isAbsolute(e))return i(e).find(l=>n(l))??null;for(let l of Ft(t).split(";").map(u=>u.trim()).filter(Boolean)){let u=i(b.win32.join(l,e)).find(c=>n(c));if(u)return u}return null}var Sr=/%~?dp0%?\\?([^"%\r\n]+?\.(?:c|m)?js)\b/i,Ht=/^\s*SET\s+"?([A-Za-z_]\w*)=([^"\r\n]*)"?\s*$/i;function Cr(e){return e.replace(/^[\\/]+/,"")}function jt(e){let r=e.split(/\r?\n/),t=new Map;for(let s of r){let i=Ht.exec(s);i&&t.set(i[1].toUpperCase(),i[2])}let n=r.filter(s=>s.includes("%*")).pop();if(!n)return null;let o=Sr.exec(n);if(o)return Cr(o[1]);for(let s of n.matchAll(/%([A-Za-z_]\w*)%/g)){let i=t.get(s[1].toUpperCase()),l=i?Sr.exec(i):null;if(l)return Cr(l[1])}return null}function Yt(e,r={}){if((r.platform??process.platform)!=="win32")return{executable:e,prefixArgs:[],kind:"passthrough"};let n=$t(e,r);if(!n)return{executable:e,prefixArgs:[],kind:"passthrough"};let o=b.win32.extname(n).toLowerCase();if(o!==".cmd"&&o!==".bat")return{executable:n,prefixArgs:[],kind:"exe"};let s=r.readText??(ue=>Mt(ue,"utf8")),i=r.exists??Or,l;try{l=s(n)}catch{throw new F(n)}let u=jt(l);if(!u)throw new F(n);let c=b.win32.dirname(n),p=b.win32.join(c,u);if(!i(p))throw new F(n);let L=b.win32.join(c,"node.exe");return{executable:i(L)?L:r.nodeExecutable??process.execPath,prefixArgs:[p],kind:"node-shim"}}function E(e,r,t={}){let n=Yt(e,t);return[n.executable,[...n.prefixArgs,...r]]}function R(e){try{let r=Vt(e),t=`${e}|${r.size}|${r.mtimeMs}`;return Ar("sha256").update(t).digest("hex").slice(0,16)}catch{return}}function K(e){return Ar("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]=E(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]=E(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 Jt="codex";function zt(){let e=qt();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 Xt(e){return $.dirname(e)}function Qt(e){let r,t;for(let n of zt()){if(!Gt(n))continue;r??=n;let o=h(e,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status",env:{CODEX_HOME:Xt(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 Pr(e=new Date().toISOString()){let r=g(Jt,["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}=Qt(r),o=!!t&&n.ok;return{providerId:"codex",ready:o,authSource:"oauth_local",sessionFingerprint:t?R(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 Zt}from"node:fs";import{homedir as en}from"node:os";import Se from"node:path";function rn(){let e=process.env.HERMES_HOME?.trim(),r=e?Se.resolve(e):Se.join(en(),".hermes");return Se.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=rn(),o=Zt(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?R(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=Pr(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 Ir=["low","medium","high"],Nr={oauth_local:0,subscription_hermes:0,runner_token:1,api_key_env:2,none:3};function Tr(e,r){let t=T(e);return r==="privileged"?t.supportsPrivilegedPlatformActions:r==="low"?t.supportsLowRiskOrchestration:!0}function tn(e,r){let t=T(e.providerId),n=T(r.providerId),o=Ir.indexOf(t.costTier)-Ir.indexOf(n.costTier);if(o!==0)return o;let s=Nr[e.binding.authSource]-Nr[r.binding.authSource];return s!==0?s:e.providerId.localeCompare(r.providerId)}function Ce(e){let r=Er().map(l=>({providerId:l.id,binding:e.inventory.bindings[l.id]})).filter(l=>l.binding.ready&&Tr(l.providerId,e.riskClass));if(r.length===0)return null;let n=[...r].sort(tn)[0],o="codex";if(n.providerId===o)return{providerId:n.providerId,binding:n.binding};let s=e.inventory.bindings[o],i;return Tr(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 nn}from"node:fs";import{homedir as on}from"node:os";import sn from"node:path";var an="claude";function ln(){let e=on();return[sn.join(e,".claude",".credentials.json")]}function Kr(e=new Date().toISOString()){let r=g(an,["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=ln().find(i=>nn(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?R(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 Rn}from"node:fs";import{homedir as hn}from"node:os";import W from"node:path";import{closeSync as mu,existsSync as mn,mkdirSync as fu,openSync as gu,statSync as hu,unlinkSync as Ru}from"node:fs";d();import D from"node:path";pe();import{existsSync as j,readdirSync as un}from"node:fs";import S from"node:path";var cn=/^\d{4}\.\d{1,2}\.\d{1,2}-[a-f0-9]+$/i;function dn(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 pn(e){let r=S.join(e,"versions");if(!j(r))return null;let t=null,n=-1;for(let o of un(r,{withFileTypes:!0})){if(!o.isDirectory()||!cn.test(o.name))continue;let s=dn(o.name);s==null||s<=n||(n=s,t=S.join(r,o.name))}return t}function Oe(e){let r=e?.trim()||S.join(process.env.LOCALAPPDATA||"","cursor-agent"),t=S.join(r,"node.exe"),n=S.join(r,"index.js");if(j(t)&&j(n))return{nodeExe:t,indexJs:n,versionDir:r};let o=pn(r);if(!o)return null;let s=S.join(o,"node.exe"),i=S.join(o,"index.js");return!j(s)||!j(i)?null:{nodeExe:s,indexJs:i,versionDir:o}}function fn(e,r,t){return{executable:e,prefixArgs:[r],shell:!1,detached:y(),bundledVersionDir:t}}function Dr(e){if(process.platform==="win32"){let r=/\.(cmd|bat)$/i.test(e),t=/node\.exe$/i.test(e)&&mn(D.join(D.dirname(e),"index.js"));if(r||t||e==="agent"){let o=r?Oe(D.dirname(e)):t?{nodeExe:e,indexJs:D.join(D.dirname(e),"index.js"),versionDir:D.dirname(e)}:Oe();if(o)return fn(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:y()}}import{spawnSync as gn}from"node:child_process";function Ae(e,r=process.env){try{let t;try{t=Dr(e)}catch{t={executable:e,prefixArgs:[]}}let n=gn(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(W.join(t,".config","cursor","auth.json")),r.push(W.join(t,".cursor-agent","auth.json")));let n=hn();if(r.push(W.join(n,".config","cursor","auth.json")),r.push(W.join(n,".cursor-agent","auth.json")),process.platform==="win32"){let o=e.LOCALAPPDATA?.trim(),s=e.APPDATA?.trim();o&&r.push(W.join(o,"cursor-agent","auth.json")),s&&r.push(W.join(s,"cursor","auth.json"))}return r}var yn="agent";function Wr(e=new Date().toISOString()){let r=g(yn,["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=>Rn(l)),o=Ae(r),s=!!n||o.ok,i=t.ok&&s;return{providerId:"cursor",ready:i,authSource:"oauth_local",sessionFingerprint:n?R(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 _n}from"node:fs";import{homedir as vn}from"node:os";import Pe from"node:path";var xn=["OPENAI_API_KEY","ANTHROPIC_API_KEY","KYNVER_API_KEY","KYNVER_BASE_URL"];function bn(){let e=process.env.HERMES_HOME?.trim(),r=e?Pe.resolve(e):Pe.join(vn(),".hermes");return Pe.join(r,".env")}function En(e){try{let r=_n(e,"utf8"),t=[];for(let n of xn)new RegExp(`^${n}=`,"m").test(r)&&t.push(n);return t}catch{return[]}}function Mr(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?En(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?R(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 Ur(e={}){let r=e.nowIso?.()??new Date().toISOString(),t=H(r),n={codex:t,cursor:Wr(r),claude:Kr(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:Mr(r),hermesOpenAiCodex:ie(r),codexAdapterPath:t.path,readyCount:o}}var Sn=[/\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],Cn=[/\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 On(e){let r=Ie(e,"executorRef").toLowerCase(),t=Ie(e,"title").toLowerCase(),n=Ie(e,"description").toLowerCase(),o=`${r}
2
2
  ${t}
3
- ${n}`;return Sn.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":Cn.some(s=>s.test(o))?"low":"elevated"}function An(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 wn(e){let r=e.inventory??Ur();return e.codexBinding?{...r,bindings:{...r.bindings,codex:e.codexBinding}}:r}function C(e){let r=An({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 Br(e){let r=e.task??{},t=On(r),n=wn({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=W;if(o==="codex"||o==="provider:codex"){let c=n.bindings.codex;if(!c.ready){let p=Ce({inventory:n,riskClass:t});return C(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 C({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 C({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 C({providerId:"claude",binding:c,riskClass:t,routingRule:"orchestration:explicit_claude",model:s})}let l=Ce({inventory:n,riskClass:t});if(l)return C({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 C({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 Lr="kynver",Fr=["agent_os_context_envelope","agent_os_search_memory","agent_os_search_skills","agent_os_get_skill","agent_os_progress_note"],Pn=Fr.map(e=>`mcp__${Lr}__${e}`);var V="claude-sonnet-4-6",G="claude-opus-4-8";d();d();var yc=process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.5";function Tn(){return process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.5"}var U=Tn();d();var Te="openai-compatible",Yc=600*1e3;d();var O="gemini";function A(e=process.env){return e.KYNVER_GEMINI_DEFAULT_MODEL?.trim()||"gemini-2.5-pro"}var B="gemini-api";var id=600*1e3;var jr="claude-sonnet-4-6",q="composer-2.5";function m(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function Dn(e){if(!e)return;let r=m(e,"workerModelOverride")||m(e,"modelOverride");return r||`${m(e,"title")}
3
+ ${n}`;return Sn.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":Cn.some(s=>s.test(o))?"low":"elevated"}function An(e){let r=T(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 wn(e){let r=e.inventory??Ur();return e.codexBinding?{...r,bindings:{...r.bindings,codex:e.codexBinding}}:r}function C(e){let r=An({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 Br(e){let r=e.task??{},t=On(r),n=wn({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=M;if(o==="codex"||o==="provider:codex"){let c=n.bindings.codex;if(!c.ready){let p=Ce({inventory:n,riskClass:t});return C(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 C({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 C({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 C({providerId:"claude",binding:c,riskClass:t,routingRule:"orchestration:explicit_claude",model:s})}let l=Ce({inventory:n,riskClass:t});if(l)return C({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 C({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 Lr="kynver",Fr=["agent_os_context_envelope","agent_os_search_memory","agent_os_search_skills","agent_os_get_skill","agent_os_progress_note"],Pn=Fr.map(e=>`mcp__${Lr}__${e}`);var V="claude-sonnet-4-6",G="claude-opus-4-8";d();d();var yc=process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.5";function Nn(){return process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.5"}var U=Nn();d();var Ne="openai-compatible",qc=600*1e3;d();var O="gemini";function A(e=process.env){return e.KYNVER_GEMINI_DEFAULT_MODEL?.trim()||"gemini-2.5-pro"}var B="gemini-api";var ld=600*1e3;var jr="claude-sonnet-4-6",q="composer-2.5";function m(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function Dn(e){if(!e)return;let r=m(e,"workerModelOverride")||m(e,"modelOverride");return r||`${m(e,"title")}
4
4
  ${m(e,"description")}
5
- ${m(e,"executorRef")}`.match(/\[(?:worker-)?model:\s*([^\]\n]+)\]/i)?.[1]?.trim()||void 0}function $r(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||jr}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-")?O:"cursor"}function Mn(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:A(),provider:O,rule:n&&n!==O?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:t==="gemini-api"||t==="gemini_api"||t==="google-api"?{model:A(),provider:B,rule:n&&n!==B?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:null}function Hr(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 Wn=new Set(["report_reviewer","deep_reviewer","plan_reviewer"]);function Yr(e,r,t){return Wn.has(e)?G:r.includes("review")||/^review[\s:]/.test(t)||t.includes("critique")?G:V}function Vr(e){let r=$r(m(e,"executorRef")),t=m(e,"title").toLowerCase(),n=m(e,"priority")||"normal",o=$r(m(e,"roleLane"));if(r.includes("provider:claude")||r.startsWith("claude:")){let i=Yr(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: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: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:B,...i?.model?{model:i.model}:{model:A()},rule:"lane:gemini_api"}}if(r.includes("provider:gemini")||r.startsWith("gemini:")){let i=f(m(e,"executorRef"));return{provider:O,...i?.model?{model:i.model}:{model:A()},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 Hr(r,t)||o==="deep_reviewer"?{provider:"cursor",rule:"lane:deep_review"}:{provider:"cursor",rule:"lane:review"};if(Hr(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 Un(e){return e?f(m(e,"executorRef")):null}function Bn(e){switch(x(e)){case O:case B:return A();case"claude":return V;case"codex":return U;case"cursor":return q;default:return}}var Ne="explicit:cli_provider",Gr="config:worker_provider";function qr(e,r,t){let n=x(r);return n===e.provider&&e.rule===t?e:{...e,provider:n,model:Bn(n)??e.model,rule:t}}function Ln(e,r){let t=r?.trim();return!t||e.rule.startsWith("explicit:")&&e.rule!==Ne?e:qr(e,t,Ne)}function Fn(e,r){if(r.explicitProvider?.trim()||Ke(r.task))return e;let t=r.configuredProvider?.trim();if(!t)return e;let n=x(t);return n===W||n===e.provider?e:qr(e,n,Gr)}function $n(e){let r,t=Un(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=Mn(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=Dn(e.task),c,p;if(u)c=u,p="task:provider_override";else{let L=typeof e.task.roleLane=="string"?e.task.roleLane.toLowerCase():"",De=typeof e.task.executorRef=="string"?e.task.executorRef.toLowerCase():"",ue=typeof e.task.title=="string"?e.task.title.toLowerCase():"";c=Yr(L,De,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=Vr(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=Ln(r,e.explicitProvider),r=Fn(r,{explicitProvider:e.explicitProvider,task:e.task,configuredProvider:e.configuredProvider});let s=!!e.configuredProvider?.trim()&&x(e.configuredProvider)!==W&&r.rule==="config:worker_provider",i=Jr({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===Gr||k(i.provider)&&(e.explicitProviderIsOperatorOverride||ae(e.task))||i.provider===Te||i.provider===O||i.provider===B||i.provider==="codex")return i;let l=Br({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 Hn(e,r,t){return e||r||t||le()||V}ne();ne();var W="cursor",jn=new Set(["claude","opus","anthropic"]),Yn=[/\[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 k(e){if(!e?.trim())return!1;let r=e.trim().toLowerCase();return jn.has(r)?!0:r.includes("claude")||r.includes("opus")}function ae(e){if(!e)return!1;let r=e.workerProviderOverride;if(typeof r=="string"&&k(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&&k(n.provider)||n?.model&&k(Vn(n.model)))return!0;let o=J(e,"description");if(Yn.some(i=>i.test(o)))return!0;let s=J(e,"title");return!!/\[use-claude-worker\]/i.test(s)}function Vn(e){let r=e.trim().toLowerCase();return/^claude[-_]/.test(r)||/^(?:opus|sonnet|haiku)\b/.test(r)?"claude":r}function Gn(e,r){return{provider:W,model:q,rule:`policy:cursor_default${r}`,requestedModel:e}}var qn=["explicit:","executor_ref:","factory:","task:"];function Jn(e){return qn.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 Jr(e){let{routing:r,task:t}=e,n=e.explicitProvider?.trim().toLowerCase();if(e.explicitProviderIsOperatorOverride&&k(n))return{...r,provider:"claude",rule:r.rule.startsWith("explicit:")?r.rule:"explicit:operator_provider"};if(n||Jn(r.rule)||Ke(t)||!k(r.provider))return r;let o=r.rule&&r.rule!=="default:global"?`:${r.rule.replace(/:/g,"_")}`:"";return Gn(r.model,o)}function zn(e){let r=e?.executorRef;return typeof r=="string"?r.trim():""}function zr(e){return e?.trim()||void 0}function Xn(e){let r=zn(e.task),t=f(r),n=e.explicitProvider?.trim().toLowerCase(),o=zr(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=zr(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&&!k(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,jr as GLOBAL_DEFAULT_MODEL,Xn as assessDispatchModelGuard,de as executorRefRequestsNonCursorWorker,Vr as inferModelRoutingFromTask,f as parseExecutorRefRoutingIntent,le as resolveGlobalDefaultModel,Hn as resolveModelFallback,$n as resolveWorkerLaunch};
5
+ ${m(e,"executorRef")}`.match(/\[(?:worker-)?model:\s*([^\]\n]+)\]/i)?.[1]?.trim()||void 0}function $r(e){return e.toLowerCase()}function le(e=N()){let r=e.defaultModel?.trim();if(r)return r;let t=process.env.KYNVER_DEFAULT_MODEL?.trim();return t||jr}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-")?O:"cursor"}function Wn(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:A(),provider:O,rule:n&&n!==O?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:t==="gemini-api"||t==="gemini_api"||t==="google-api"?{model:A(),provider:B,rule:n&&n!==B?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:null}function Hr(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 Mn=new Set(["report_reviewer","deep_reviewer","plan_reviewer"]);function Yr(e,r,t){return Mn.has(e)?G:r.includes("review")||/^review[\s:]/.test(t)||t.includes("critique")?G:V}function Vr(e){let r=$r(m(e,"executorRef")),t=m(e,"title").toLowerCase(),n=m(e,"priority")||"normal",o=$r(m(e,"roleLane"));if(r.includes("provider:claude")||r.startsWith("claude:")){let i=Yr(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: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:Ne,...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:B,...i?.model?{model:i.model}:{model:A()},rule:"lane:gemini_api"}}if(r.includes("provider:gemini")||r.startsWith("gemini:")){let i=f(m(e,"executorRef"));return{provider:O,...i?.model?{model:i.model}:{model:A()},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 Hr(r,t)||o==="deep_reviewer"?{provider:"cursor",rule:"lane:deep_review"}:{provider:"cursor",rule:"lane:review"};if(Hr(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 Un(e){return e?f(m(e,"executorRef")):null}function Bn(e){switch(x(e)){case O:case B:return A();case"claude":return V;case"codex":return U;case"cursor":return q;default:return}}var Te="explicit:cli_provider",Gr="config:worker_provider";function qr(e,r,t){let n=x(r);return n===e.provider&&e.rule===t?e:{...e,provider:n,model:Bn(n)??e.model,rule:t}}function Ln(e,r){let t=r?.trim();return!t||e.rule.startsWith("explicit:")&&e.rule!==Te?e:qr(e,t,Te)}function Fn(e,r){if(r.explicitProvider?.trim()||Ke(r.task))return e;let t=r.configuredProvider?.trim();if(!t)return e;let n=x(t);return n===M||n===e.provider?e:qr(e,n,Gr)}function $n(e){let r,t=Un(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=Wn(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=Dn(e.task),c,p;if(u)c=u,p="task:provider_override";else{let L=typeof e.task.roleLane=="string"?e.task.roleLane.toLowerCase():"",De=typeof e.task.executorRef=="string"?e.task.executorRef.toLowerCase():"",ue=typeof e.task.title=="string"?e.task.title.toLowerCase():"";c=Yr(L,De,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=Vr(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=Ln(r,e.explicitProvider),r=Fn(r,{explicitProvider:e.explicitProvider,task:e.task,configuredProvider:e.configuredProvider});let s=!!e.configuredProvider?.trim()&&x(e.configuredProvider)!==M&&r.rule==="config:worker_provider",i=Jr({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===Te||i.rule===Gr||k(i.provider)&&(e.explicitProviderIsOperatorOverride||ae(e.task))||i.provider===Ne||i.provider===O||i.provider===B||i.provider==="codex")return i;let l=Br({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 Hn(e,r,t){return e||r||t||le()||V}ne();ne();var M="cursor",jn=new Set(["claude","opus","anthropic"]),Yn=[/\[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 k(e){if(!e?.trim())return!1;let r=e.trim().toLowerCase();return jn.has(r)?!0:r.includes("claude")||r.includes("opus")}function ae(e){if(!e)return!1;let r=e.workerProviderOverride;if(typeof r=="string"&&k(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&&k(n.provider)||n?.model&&k(Vn(n.model)))return!0;let o=J(e,"description");if(Yn.some(i=>i.test(o)))return!0;let s=J(e,"title");return!!/\[use-claude-worker\]/i.test(s)}function Vn(e){let r=e.trim().toLowerCase();return/^claude[-_]/.test(r)||/^(?:opus|sonnet|haiku)\b/.test(r)?"claude":r}function Gn(e,r){return{provider:M,model:q,rule:`policy:cursor_default${r}`,requestedModel:e}}var qn=["explicit:","executor_ref:","factory:","task:"];function Jn(e){return qn.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 Jr(e){let{routing:r,task:t}=e,n=e.explicitProvider?.trim().toLowerCase();if(e.explicitProviderIsOperatorOverride&&k(n))return{...r,provider:"claude",rule:r.rule.startsWith("explicit:")?r.rule:"explicit:operator_provider"};if(n||Jn(r.rule)||Ke(t)||!k(r.provider))return r;let o=r.rule&&r.rule!=="default:global"?`:${r.rule.replace(/:/g,"_")}`:"";return Gn(r.model,o)}function zn(e){let r=e?.executorRef;return typeof r=="string"?r.trim():""}function zr(e){return e?.trim()||void 0}function Xn(e){let r=zn(e.task),t=f(r),n=e.explicitProvider?.trim().toLowerCase(),o=zr(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=zr(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&&!k(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,jr as GLOBAL_DEFAULT_MODEL,Xn as assessDispatchModelGuard,de as executorRefRequestsNonCursorWorker,Vr as inferModelRoutingFromTask,f as parseExecutorRefRoutingIntent,le as resolveGlobalDefaultModel,Hn as resolveModelFallback,$n as resolveWorkerLaunch};
@@ -1,5 +1,5 @@
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 Be}from"node:os";import Le from"node:path";function tt(e){return e==="~"?Be():e.startsWith("~/")||e.startsWith("~\\")?Le.join(Be(),e.slice(2)):e}function w(e){return Le.resolve(tt(e))}var P=a(()=>{"use strict"});function y(e=process.platform){return e!=="win32"}var Fe=a(()=>{"use strict"});var d=a(()=>{"use strict";Fe()});var nt,lo,ot,uo,pe=a(()=>{"use strict";nt=["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"],lo=new Set(nt),ot=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],uo=new Set(ot)});var z=a(()=>{"use strict";P();d();pe()});var $e=a(()=>{"use strict";z()});var me=a(()=>{"use strict";z();P();$e()});var fe=a(()=>{"use strict";d()});var _=a(()=>{"use strict"});var X=a(()=>{"use strict"});var He=a(()=>{"use strict"});var Po,Io,ge=a(()=>{"use strict";Po=25*1024*1024*1024,Io=12*1024*1024*1024});var Mo,Wo,je=a(()=>{"use strict";ge();Mo=5*1024*1024*1024,Wo=10*1024*1024*1024});var Ho,jo,he=a(()=>{"use strict";je();ge();Ho=30*1024*1024*1024,jo=15*1024*1024*1024});var Ve=a(()=>{"use strict";d()});import lt from"node:path";var Zo,Re=a(()=>{"use strict";P();Ve();Zo=lt.join(".openclaw","harness")});var Z=a(()=>{"use strict";v();_();X();ee();Re()});var Je=a(()=>{"use strict";v();Re();Z();d()});var ke=a(()=>{"use strict";Je();d()});var ze=a(()=>{"use strict";ke();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";er();d();re()});var tr=a(()=>{"use strict";re()});var nr=a(()=>{"use strict"});var or=a(()=>{"use strict"});var _e=a(()=>{"use strict"});var ir=a(()=>{"use strict"});var sr=a(()=>{"use strict";_e();ir()});var ar=a(()=>{"use strict";Qe();rr();re();tr();nr();z();or();sr();_e();d()});var lr=a(()=>{"use strict";ar()});var kt,_t,ur=a(()=>{"use strict";He();v();_();X();ee();he();ke();ze();lr();d();kt=500*1024*1024,_t=4*1024*1024*1024});var ee=a(()=>{"use strict";ur()});import{homedir as vt}from"node:os";import xt from"node:path";var cr,ve=a(()=>{"use strict";cr=xt.join(vt(),".kynver",".env")});var dr=a(()=>{"use strict"});var pr=a(()=>{"use strict";dr()});var mr=a(()=>{"use strict"});var fr=a(()=>{"use strict";d()});var xe=a(()=>{"use strict";pr();mr();fr()});var gr=a(()=>{"use strict"});var hr=a(()=>{"use strict";gr()});var te=a(()=>{"use strict";ve();P();v();xe();hr()});var Rr=a(()=>{"use strict";_();_()});var yr=a(()=>{"use strict";ve();xe();te()});var be=a(()=>{"use strict"});var kr=a(()=>{"use strict";me();_();Rr();v();te();yr();fe();be();Z()});function x(e){let r=e.trim().toLowerCase();return It[r]??r}var _r,Pt,It,ne=a(()=>{"use strict";_r=["claude","cursor","codex","gemini","gemini-api","openai-compatible"],Pt=_r.join("|"),It={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"}});import{existsSync as Nt,mkdirSync as ul,readFileSync as Kt,writeFileSync as cl}from"node:fs";import{homedir as Dt,totalmem as pl}from"node:os";import Ee from"node:path";function Mt(e){return{...e,...e.harnessRoot?.trim()?{harnessRoot:w(e.harnessRoot.trim())}:{},...e.defaultRepo?.trim()?{defaultRepo:w(e.defaultRepo.trim())}:{}}}function T(){if(!Nt(vr))return{};try{return Mt(JSON.parse(Kt(vr,"utf8")))}catch{return{}}}var xr,vr,Cl,Ol,Al,v=a(()=>{"use strict";me();P();fe();_();X();ee();he();te();kr();ne();Z();be();xr=Ee.join(Dt(),".kynver"),vr=Ee.join(xr,"config.json"),Cl=Ee.join(xr,"credentials");Ol=500*1024*1024,Al=4*1024*1024*1024});var Xr=/^claude[-_]/i,Qr=/^(?:opus|sonnet|haiku)\b/i;function Me(e){let r=e.trim();return Xr.test(r)||Qr.test(r)}function We(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 Ue(e){return e.trim().toLowerCase().startsWith("gemini-")}function Zr(e){return We(e)?"codex":Me(e)?"claude":Ue(e)?"gemini":(ce(e),"cursor")}function et(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 rt(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)||We(n)||ce(n)||Ue(n)?{lane:t,model:n,provider:Zr(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?et(r)??rt(r):null}function de(e){let r=f(e);return r?!!(r.provider&&r.provider!=="cursor"||r.model&&!ce(r.model)):!1}v();var br={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 br[e]}function Er(){return Object.values(br)}import{existsSync as Gt}from"node:fs";import{homedir as qt}from"node:os";import $ from"node:path";import{createHash as Ar}from"node:crypto";import{statSync as Vt}from"node:fs";import{spawnSync as wr}from"node:child_process";import{existsSync as Or,readFileSync as Wt}from"node:fs";import b 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},Ut=".COM;.EXE;.BAT;.CMD";function Bt(e){return e.includes("/")||e.includes("\\")}function Lt(e){return(e.PATHEXT||Ut).split(";").map(r=>r.trim().toLowerCase()).filter(r=>r.startsWith("."))}function Ft(e){let r=Object.keys(e).find(t=>t.toUpperCase()==="PATH");return r?e[r]??"":""}function $t(e,r={}){let t=r.env??process.env,n=r.exists??Or,o=Lt(t),s=b.win32.extname(e)!=="",i=l=>s?[l]:o.map(u=>`${l}${u}`);if(Bt(e)||b.win32.isAbsolute(e))return i(e).find(l=>n(l))??null;for(let l of Ft(t).split(";").map(u=>u.trim()).filter(Boolean)){let u=i(b.win32.join(l,e)).find(c=>n(c));if(u)return u}return null}var Sr=/%~?dp0%?\\?([^"%\r\n]+?\.(?:c|m)?js)\b/i,Ht=/^\s*SET\s+"?([A-Za-z_]\w*)=([^"\r\n]*)"?\s*$/i;function Cr(e){return e.replace(/^[\\/]+/,"")}function jt(e){let r=e.split(/\r?\n/),t=new Map;for(let s of r){let i=Ht.exec(s);i&&t.set(i[1].toUpperCase(),i[2])}let n=r.filter(s=>s.includes("%*")).pop();if(!n)return null;let o=Sr.exec(n);if(o)return Cr(o[1]);for(let s of n.matchAll(/%([A-Za-z_]\w*)%/g)){let i=t.get(s[1].toUpperCase()),l=i?Sr.exec(i):null;if(l)return Cr(l[1])}return null}function Yt(e,r={}){if((r.platform??process.platform)!=="win32")return{executable:e,prefixArgs:[],kind:"passthrough"};let n=$t(e,r);if(!n)return{executable:e,prefixArgs:[],kind:"passthrough"};let o=b.win32.extname(n).toLowerCase();if(o!==".cmd"&&o!==".bat")return{executable:n,prefixArgs:[],kind:"exe"};let s=r.readText??(ue=>Wt(ue,"utf8")),i=r.exists??Or,l;try{l=s(n)}catch{throw new F(n)}let u=jt(l);if(!u)throw new F(n);let c=b.win32.dirname(n),p=b.win32.join(c,u);if(!i(p))throw new F(n);let L=b.win32.join(c,"node.exe");return{executable:i(L)?L:r.nodeExecutable??process.execPath,prefixArgs:[p],kind:"node-shim"}}function E(e,r,t={}){let n=Yt(e,t);return[n.executable,[...n.prefixArgs,...r]]}function R(e){try{let r=Vt(e),t=`${e}|${r.size}|${r.mtimeMs}`;return Ar("sha256").update(t).digest("hex").slice(0,16)}catch{return}}function K(e){return Ar("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]=E(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]=E(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 Jt="codex";function zt(){let e=qt();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 Xt(e){return $.dirname(e)}function Qt(e){let r,t;for(let n of zt()){if(!Gt(n))continue;r??=n;let o=h(e,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status",env:{CODEX_HOME:Xt(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 Pr(e=new Date().toISOString()){let r=g(Jt,["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}=Qt(r),o=!!t&&n.ok;return{providerId:"codex",ready:o,authSource:"oauth_local",sessionFingerprint:t?R(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 Zt}from"node:fs";import{homedir as en}from"node:os";import Se from"node:path";function rn(){let e=process.env.HERMES_HOME?.trim(),r=e?Se.resolve(e):Se.join(en(),".hermes");return Se.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=rn(),o=Zt(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?R(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=Pr(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 Ir=["low","medium","high"],Tr={oauth_local:0,subscription_hermes:0,runner_token:1,api_key_env:2,none:3};function Nr(e,r){let t=N(e);return r==="privileged"?t.supportsPrivilegedPlatformActions:r==="low"?t.supportsLowRiskOrchestration:!0}function tn(e,r){let t=N(e.providerId),n=N(r.providerId),o=Ir.indexOf(t.costTier)-Ir.indexOf(n.costTier);if(o!==0)return o;let s=Tr[e.binding.authSource]-Tr[r.binding.authSource];return s!==0?s:e.providerId.localeCompare(r.providerId)}function Ce(e){let r=Er().map(l=>({providerId:l.id,binding:e.inventory.bindings[l.id]})).filter(l=>l.binding.ready&&Nr(l.providerId,e.riskClass));if(r.length===0)return null;let n=[...r].sort(tn)[0],o="codex";if(n.providerId===o)return{providerId:n.providerId,binding:n.binding};let s=e.inventory.bindings[o],i;return Nr(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 nn}from"node:fs";import{homedir as on}from"node:os";import sn from"node:path";var an="claude";function ln(){let e=on();return[sn.join(e,".claude",".credentials.json")]}function Kr(e=new Date().toISOString()){let r=g(an,["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=ln().find(i=>nn(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?R(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 Rn}from"node:fs";import{homedir as hn}from"node:os";import M from"node:path";import{closeSync as mu,existsSync as mn,mkdirSync as fu,openSync as gu,statSync as hu,unlinkSync as Ru}from"node:fs";d();import D from"node:path";pe();import{existsSync as j,readdirSync as un}from"node:fs";import S from"node:path";var cn=/^\d{4}\.\d{1,2}\.\d{1,2}-[a-f0-9]+$/i;function dn(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 pn(e){let r=S.join(e,"versions");if(!j(r))return null;let t=null,n=-1;for(let o of un(r,{withFileTypes:!0})){if(!o.isDirectory()||!cn.test(o.name))continue;let s=dn(o.name);s==null||s<=n||(n=s,t=S.join(r,o.name))}return t}function Oe(e){let r=e?.trim()||S.join(process.env.LOCALAPPDATA||"","cursor-agent"),t=S.join(r,"node.exe"),n=S.join(r,"index.js");if(j(t)&&j(n))return{nodeExe:t,indexJs:n,versionDir:r};let o=pn(r);if(!o)return null;let s=S.join(o,"node.exe"),i=S.join(o,"index.js");return!j(s)||!j(i)?null:{nodeExe:s,indexJs:i,versionDir:o}}function fn(e,r,t){return{executable:e,prefixArgs:[r],shell:!1,detached:y(),bundledVersionDir:t}}function Dr(e){if(process.platform==="win32"){let r=/\.(cmd|bat)$/i.test(e),t=/node\.exe$/i.test(e)&&mn(D.join(D.dirname(e),"index.js"));if(r||t||e==="agent"){let o=r?Oe(D.dirname(e)):t?{nodeExe:e,indexJs:D.join(D.dirname(e),"index.js"),versionDir:D.dirname(e)}:Oe();if(o)return fn(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:y()}}import{spawnSync as gn}from"node:child_process";function Ae(e,r=process.env){try{let t;try{t=Dr(e)}catch{t={executable:e,prefixArgs:[]}}let n=gn(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=hn();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 yn="agent";function Mr(e=new Date().toISOString()){let r=g(yn,["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=>Rn(l)),o=Ae(r),s=!!n||o.ok,i=t.ok&&s;return{providerId:"cursor",ready:i,authSource:"oauth_local",sessionFingerprint:n?R(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 _n}from"node:fs";import{homedir as vn}from"node:os";import Pe from"node:path";var xn=["OPENAI_API_KEY","ANTHROPIC_API_KEY","KYNVER_API_KEY","KYNVER_BASE_URL"];function bn(){let e=process.env.HERMES_HOME?.trim(),r=e?Pe.resolve(e):Pe.join(vn(),".hermes");return Pe.join(r,".env")}function En(e){try{let r=_n(e,"utf8"),t=[];for(let n of xn)new RegExp(`^${n}=`,"m").test(r)&&t.push(n);return t}catch{return[]}}function Wr(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?En(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?R(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 Ur(e={}){let r=e.nowIso?.()??new Date().toISOString(),t=H(r),n={codex:t,cursor:Mr(r),claude:Kr(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:Wr(r),hermesOpenAiCodex:ie(r),codexAdapterPath:t.path,readyCount:o}}var Sn=[/\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],Cn=[/\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 On(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 Be}from"node:os";import Le from"node:path";function tt(e){return e==="~"?Be():e.startsWith("~/")||e.startsWith("~\\")?Le.join(Be(),e.slice(2)):e}function w(e){return Le.resolve(tt(e))}var P=a(()=>{"use strict"});function y(e=process.platform){return e!=="win32"}var Fe=a(()=>{"use strict"});var d=a(()=>{"use strict";Fe()});var nt,lo,ot,uo,pe=a(()=>{"use strict";nt=["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"],lo=new Set(nt),ot=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],uo=new Set(ot)});var z=a(()=>{"use strict";P();d();pe()});var $e=a(()=>{"use strict";z()});var me=a(()=>{"use strict";z();P();$e()});var fe=a(()=>{"use strict";d()});var _=a(()=>{"use strict"});var X=a(()=>{"use strict"});var He=a(()=>{"use strict"});var Po,Io,ge=a(()=>{"use strict";Po=25*1024*1024*1024,Io=12*1024*1024*1024});var Wo,Mo,je=a(()=>{"use strict";ge();Wo=5*1024*1024*1024,Mo=10*1024*1024*1024});var Ho,jo,he=a(()=>{"use strict";je();ge();Ho=30*1024*1024*1024,jo=15*1024*1024*1024});var Ve=a(()=>{"use strict";d()});import lt from"node:path";var Zo,Re=a(()=>{"use strict";P();Ve();Zo=lt.join(".openclaw","harness")});var Z=a(()=>{"use strict";v();_();X();ee();Re()});var Je=a(()=>{"use strict";v();Re();Z();d()});var ke=a(()=>{"use strict";Je();d()});var ze=a(()=>{"use strict";ke();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";er();d();re()});var tr=a(()=>{"use strict";re()});var nr=a(()=>{"use strict"});var or=a(()=>{"use strict"});var _e=a(()=>{"use strict"});var ir=a(()=>{"use strict"});var sr=a(()=>{"use strict";_e();ir()});var ar=a(()=>{"use strict";Qe();rr();re();tr();nr();z();or();sr();_e();d()});var lr=a(()=>{"use strict";ar()});var kt,_t,ur=a(()=>{"use strict";He();v();_();X();ee();he();ke();ze();lr();d();kt=500*1024*1024,_t=4*1024*1024*1024});var ee=a(()=>{"use strict";ur()});import{homedir as vt}from"node:os";import xt from"node:path";var cr,ve=a(()=>{"use strict";cr=xt.join(vt(),".kynver",".env")});var dr=a(()=>{"use strict"});var pr=a(()=>{"use strict";dr()});var mr=a(()=>{"use strict"});var fr=a(()=>{"use strict";d()});var xe=a(()=>{"use strict";pr();mr();fr()});var gr=a(()=>{"use strict"});var hr=a(()=>{"use strict";gr()});var te=a(()=>{"use strict";ve();P();v();xe();hr()});var Rr=a(()=>{"use strict";_();_()});var yr=a(()=>{"use strict";ve();xe();te()});var be=a(()=>{"use strict"});var kr=a(()=>{"use strict";me();_();Rr();v();te();yr();fe();be();Z()});function x(e){let r=e.trim().toLowerCase();return It[r]??r}var _r,Pt,It,ne=a(()=>{"use strict";_r=["claude","cursor","codex","gemini","gemini-api","openai-compatible"],Pt=_r.join("|"),It={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"}});import{existsSync as Tt,mkdirSync as ul,readFileSync as Kt,writeFileSync as cl}from"node:fs";import{homedir as Dt,totalmem as pl}from"node:os";import Ee from"node:path";function Wt(e){return{...e,...e.harnessRoot?.trim()?{harnessRoot:w(e.harnessRoot.trim())}:{},...e.defaultRepo?.trim()?{defaultRepo:w(e.defaultRepo.trim())}:{}}}function N(){if(!Tt(vr))return{};try{return Wt(JSON.parse(Kt(vr,"utf8")))}catch{return{}}}var xr,vr,Cl,Ol,Al,v=a(()=>{"use strict";me();P();fe();_();X();ee();he();te();kr();ne();Z();be();xr=Ee.join(Dt(),".kynver"),vr=Ee.join(xr,"config.json"),Cl=Ee.join(xr,"credentials");Ol=500*1024*1024,Al=4*1024*1024*1024});var Xr=/^claude[-_]/i,Qr=/^(?:opus|sonnet|haiku)\b/i;function We(e){let r=e.trim();return Xr.test(r)||Qr.test(r)}function Me(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 Ue(e){return e.trim().toLowerCase().startsWith("gemini-")}function Zr(e){return Me(e)?"codex":We(e)?"claude":Ue(e)?"gemini":(ce(e),"cursor")}function et(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 rt(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?We(n)||Me(n)||ce(n)||Ue(n)?{lane:t,model:n,provider:Zr(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?et(r)??rt(r):null}function de(e){let r=f(e);return r?!!(r.provider&&r.provider!=="cursor"||r.model&&!ce(r.model)):!1}v();var br={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 T(e){return br[e]}function Er(){return Object.values(br)}import{existsSync as Gt}from"node:fs";import{homedir as qt}from"node:os";import $ from"node:path";import{createHash as Ar}from"node:crypto";import{statSync as Vt}from"node:fs";import{spawnSync as wr}from"node:child_process";import{existsSync as Or,readFileSync as Mt}from"node:fs";import b 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},Ut=".COM;.EXE;.BAT;.CMD";function Bt(e){return e.includes("/")||e.includes("\\")}function Lt(e){return(e.PATHEXT||Ut).split(";").map(r=>r.trim().toLowerCase()).filter(r=>r.startsWith("."))}function Ft(e){let r=Object.keys(e).find(t=>t.toUpperCase()==="PATH");return r?e[r]??"":""}function $t(e,r={}){let t=r.env??process.env,n=r.exists??Or,o=Lt(t),s=b.win32.extname(e)!=="",i=l=>s?[l]:o.map(u=>`${l}${u}`);if(Bt(e)||b.win32.isAbsolute(e))return i(e).find(l=>n(l))??null;for(let l of Ft(t).split(";").map(u=>u.trim()).filter(Boolean)){let u=i(b.win32.join(l,e)).find(c=>n(c));if(u)return u}return null}var Sr=/%~?dp0%?\\?([^"%\r\n]+?\.(?:c|m)?js)\b/i,Ht=/^\s*SET\s+"?([A-Za-z_]\w*)=([^"\r\n]*)"?\s*$/i;function Cr(e){return e.replace(/^[\\/]+/,"")}function jt(e){let r=e.split(/\r?\n/),t=new Map;for(let s of r){let i=Ht.exec(s);i&&t.set(i[1].toUpperCase(),i[2])}let n=r.filter(s=>s.includes("%*")).pop();if(!n)return null;let o=Sr.exec(n);if(o)return Cr(o[1]);for(let s of n.matchAll(/%([A-Za-z_]\w*)%/g)){let i=t.get(s[1].toUpperCase()),l=i?Sr.exec(i):null;if(l)return Cr(l[1])}return null}function Yt(e,r={}){if((r.platform??process.platform)!=="win32")return{executable:e,prefixArgs:[],kind:"passthrough"};let n=$t(e,r);if(!n)return{executable:e,prefixArgs:[],kind:"passthrough"};let o=b.win32.extname(n).toLowerCase();if(o!==".cmd"&&o!==".bat")return{executable:n,prefixArgs:[],kind:"exe"};let s=r.readText??(ue=>Mt(ue,"utf8")),i=r.exists??Or,l;try{l=s(n)}catch{throw new F(n)}let u=jt(l);if(!u)throw new F(n);let c=b.win32.dirname(n),p=b.win32.join(c,u);if(!i(p))throw new F(n);let L=b.win32.join(c,"node.exe");return{executable:i(L)?L:r.nodeExecutable??process.execPath,prefixArgs:[p],kind:"node-shim"}}function E(e,r,t={}){let n=Yt(e,t);return[n.executable,[...n.prefixArgs,...r]]}function R(e){try{let r=Vt(e),t=`${e}|${r.size}|${r.mtimeMs}`;return Ar("sha256").update(t).digest("hex").slice(0,16)}catch{return}}function K(e){return Ar("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]=E(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]=E(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 Jt="codex";function zt(){let e=qt();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 Xt(e){return $.dirname(e)}function Qt(e){let r,t;for(let n of zt()){if(!Gt(n))continue;r??=n;let o=h(e,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status",env:{CODEX_HOME:Xt(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 Pr(e=new Date().toISOString()){let r=g(Jt,["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}=Qt(r),o=!!t&&n.ok;return{providerId:"codex",ready:o,authSource:"oauth_local",sessionFingerprint:t?R(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 Zt}from"node:fs";import{homedir as en}from"node:os";import Se from"node:path";function rn(){let e=process.env.HERMES_HOME?.trim(),r=e?Se.resolve(e):Se.join(en(),".hermes");return Se.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=rn(),o=Zt(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?R(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=Pr(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 Ir=["low","medium","high"],Nr={oauth_local:0,subscription_hermes:0,runner_token:1,api_key_env:2,none:3};function Tr(e,r){let t=T(e);return r==="privileged"?t.supportsPrivilegedPlatformActions:r==="low"?t.supportsLowRiskOrchestration:!0}function tn(e,r){let t=T(e.providerId),n=T(r.providerId),o=Ir.indexOf(t.costTier)-Ir.indexOf(n.costTier);if(o!==0)return o;let s=Nr[e.binding.authSource]-Nr[r.binding.authSource];return s!==0?s:e.providerId.localeCompare(r.providerId)}function Ce(e){let r=Er().map(l=>({providerId:l.id,binding:e.inventory.bindings[l.id]})).filter(l=>l.binding.ready&&Tr(l.providerId,e.riskClass));if(r.length===0)return null;let n=[...r].sort(tn)[0],o="codex";if(n.providerId===o)return{providerId:n.providerId,binding:n.binding};let s=e.inventory.bindings[o],i;return Tr(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 nn}from"node:fs";import{homedir as on}from"node:os";import sn from"node:path";var an="claude";function ln(){let e=on();return[sn.join(e,".claude",".credentials.json")]}function Kr(e=new Date().toISOString()){let r=g(an,["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=ln().find(i=>nn(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?R(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 Rn}from"node:fs";import{homedir as hn}from"node:os";import W from"node:path";import{closeSync as mu,existsSync as mn,mkdirSync as fu,openSync as gu,statSync as hu,unlinkSync as Ru}from"node:fs";d();import D from"node:path";pe();import{existsSync as j,readdirSync as un}from"node:fs";import S from"node:path";var cn=/^\d{4}\.\d{1,2}\.\d{1,2}-[a-f0-9]+$/i;function dn(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 pn(e){let r=S.join(e,"versions");if(!j(r))return null;let t=null,n=-1;for(let o of un(r,{withFileTypes:!0})){if(!o.isDirectory()||!cn.test(o.name))continue;let s=dn(o.name);s==null||s<=n||(n=s,t=S.join(r,o.name))}return t}function Oe(e){let r=e?.trim()||S.join(process.env.LOCALAPPDATA||"","cursor-agent"),t=S.join(r,"node.exe"),n=S.join(r,"index.js");if(j(t)&&j(n))return{nodeExe:t,indexJs:n,versionDir:r};let o=pn(r);if(!o)return null;let s=S.join(o,"node.exe"),i=S.join(o,"index.js");return!j(s)||!j(i)?null:{nodeExe:s,indexJs:i,versionDir:o}}function fn(e,r,t){return{executable:e,prefixArgs:[r],shell:!1,detached:y(),bundledVersionDir:t}}function Dr(e){if(process.platform==="win32"){let r=/\.(cmd|bat)$/i.test(e),t=/node\.exe$/i.test(e)&&mn(D.join(D.dirname(e),"index.js"));if(r||t||e==="agent"){let o=r?Oe(D.dirname(e)):t?{nodeExe:e,indexJs:D.join(D.dirname(e),"index.js"),versionDir:D.dirname(e)}:Oe();if(o)return fn(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:y()}}import{spawnSync as gn}from"node:child_process";function Ae(e,r=process.env){try{let t;try{t=Dr(e)}catch{t={executable:e,prefixArgs:[]}}let n=gn(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(W.join(t,".config","cursor","auth.json")),r.push(W.join(t,".cursor-agent","auth.json")));let n=hn();if(r.push(W.join(n,".config","cursor","auth.json")),r.push(W.join(n,".cursor-agent","auth.json")),process.platform==="win32"){let o=e.LOCALAPPDATA?.trim(),s=e.APPDATA?.trim();o&&r.push(W.join(o,"cursor-agent","auth.json")),s&&r.push(W.join(s,"cursor","auth.json"))}return r}var yn="agent";function Wr(e=new Date().toISOString()){let r=g(yn,["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=>Rn(l)),o=Ae(r),s=!!n||o.ok,i=t.ok&&s;return{providerId:"cursor",ready:i,authSource:"oauth_local",sessionFingerprint:n?R(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 _n}from"node:fs";import{homedir as vn}from"node:os";import Pe from"node:path";var xn=["OPENAI_API_KEY","ANTHROPIC_API_KEY","KYNVER_API_KEY","KYNVER_BASE_URL"];function bn(){let e=process.env.HERMES_HOME?.trim(),r=e?Pe.resolve(e):Pe.join(vn(),".hermes");return Pe.join(r,".env")}function En(e){try{let r=_n(e,"utf8"),t=[];for(let n of xn)new RegExp(`^${n}=`,"m").test(r)&&t.push(n);return t}catch{return[]}}function Mr(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?En(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?R(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 Ur(e={}){let r=e.nowIso?.()??new Date().toISOString(),t=H(r),n={codex:t,cursor:Wr(r),claude:Kr(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:Mr(r),hermesOpenAiCodex:ie(r),codexAdapterPath:t.path,readyCount:o}}var Sn=[/\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],Cn=[/\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 On(e){let r=Ie(e,"executorRef").toLowerCase(),t=Ie(e,"title").toLowerCase(),n=Ie(e,"description").toLowerCase(),o=`${r}
2
2
  ${t}
3
- ${n}`;return Sn.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":Cn.some(s=>s.test(o))?"low":"elevated"}function An(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 wn(e){let r=e.inventory??Ur();return e.codexBinding?{...r,bindings:{...r.bindings,codex:e.codexBinding}}:r}function C(e){let r=An({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 Br(e){let r=e.task??{},t=On(r),n=wn({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=W;if(o==="codex"||o==="provider:codex"){let c=n.bindings.codex;if(!c.ready){let p=Ce({inventory:n,riskClass:t});return C(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 C({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 C({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 C({providerId:"claude",binding:c,riskClass:t,routingRule:"orchestration:explicit_claude",model:s})}let l=Ce({inventory:n,riskClass:t});if(l)return C({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 C({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 Lr="kynver",Fr=["agent_os_context_envelope","agent_os_search_memory","agent_os_search_skills","agent_os_get_skill","agent_os_progress_note"],Pn=Fr.map(e=>`mcp__${Lr}__${e}`);var V="claude-sonnet-4-6",G="claude-opus-4-8";d();d();var yc=process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.5";function Tn(){return process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.5"}var U=Tn();d();var Te="openai-compatible",Yc=600*1e3;d();var O="gemini";function A(e=process.env){return e.KYNVER_GEMINI_DEFAULT_MODEL?.trim()||"gemini-2.5-pro"}var B="gemini-api";var id=600*1e3;var jr="claude-sonnet-4-6",q="composer-2.5";function m(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function Dn(e){if(!e)return;let r=m(e,"workerModelOverride")||m(e,"modelOverride");return r||`${m(e,"title")}
3
+ ${n}`;return Sn.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":Cn.some(s=>s.test(o))?"low":"elevated"}function An(e){let r=T(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 wn(e){let r=e.inventory??Ur();return e.codexBinding?{...r,bindings:{...r.bindings,codex:e.codexBinding}}:r}function C(e){let r=An({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 Br(e){let r=e.task??{},t=On(r),n=wn({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=M;if(o==="codex"||o==="provider:codex"){let c=n.bindings.codex;if(!c.ready){let p=Ce({inventory:n,riskClass:t});return C(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 C({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 C({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 C({providerId:"claude",binding:c,riskClass:t,routingRule:"orchestration:explicit_claude",model:s})}let l=Ce({inventory:n,riskClass:t});if(l)return C({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 C({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 Lr="kynver",Fr=["agent_os_context_envelope","agent_os_search_memory","agent_os_search_skills","agent_os_get_skill","agent_os_progress_note"],Pn=Fr.map(e=>`mcp__${Lr}__${e}`);var V="claude-sonnet-4-6",G="claude-opus-4-8";d();d();var yc=process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.5";function Nn(){return process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.5"}var U=Nn();d();var Ne="openai-compatible",qc=600*1e3;d();var O="gemini";function A(e=process.env){return e.KYNVER_GEMINI_DEFAULT_MODEL?.trim()||"gemini-2.5-pro"}var B="gemini-api";var ld=600*1e3;var jr="claude-sonnet-4-6",q="composer-2.5";function m(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function Dn(e){if(!e)return;let r=m(e,"workerModelOverride")||m(e,"modelOverride");return r||`${m(e,"title")}
4
4
  ${m(e,"description")}
5
- ${m(e,"executorRef")}`.match(/\[(?:worker-)?model:\s*([^\]\n]+)\]/i)?.[1]?.trim()||void 0}function $r(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||jr}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-")?O:"cursor"}function Mn(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:A(),provider:O,rule:n&&n!==O?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:t==="gemini-api"||t==="gemini_api"||t==="google-api"?{model:A(),provider:B,rule:n&&n!==B?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:null}function Hr(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 Wn=new Set(["report_reviewer","deep_reviewer","plan_reviewer"]);function Yr(e,r,t){return Wn.has(e)?G:r.includes("review")||/^review[\s:]/.test(t)||t.includes("critique")?G:V}function Vr(e){let r=$r(m(e,"executorRef")),t=m(e,"title").toLowerCase(),n=m(e,"priority")||"normal",o=$r(m(e,"roleLane"));if(r.includes("provider:claude")||r.startsWith("claude:")){let i=Yr(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: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: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:B,...i?.model?{model:i.model}:{model:A()},rule:"lane:gemini_api"}}if(r.includes("provider:gemini")||r.startsWith("gemini:")){let i=f(m(e,"executorRef"));return{provider:O,...i?.model?{model:i.model}:{model:A()},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 Hr(r,t)||o==="deep_reviewer"?{provider:"cursor",rule:"lane:deep_review"}:{provider:"cursor",rule:"lane:review"};if(Hr(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 Un(e){return e?f(m(e,"executorRef")):null}function Bn(e){switch(x(e)){case O:case B:return A();case"claude":return V;case"codex":return U;case"cursor":return q;default:return}}var Ne="explicit:cli_provider",Gr="config:worker_provider";function qr(e,r,t){let n=x(r);return n===e.provider&&e.rule===t?e:{...e,provider:n,model:Bn(n)??e.model,rule:t}}function Ln(e,r){let t=r?.trim();return!t||e.rule.startsWith("explicit:")&&e.rule!==Ne?e:qr(e,t,Ne)}function Fn(e,r){if(r.explicitProvider?.trim()||Ke(r.task))return e;let t=r.configuredProvider?.trim();if(!t)return e;let n=x(t);return n===W||n===e.provider?e:qr(e,n,Gr)}function $n(e){let r,t=Un(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=Mn(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=Dn(e.task),c,p;if(u)c=u,p="task:provider_override";else{let L=typeof e.task.roleLane=="string"?e.task.roleLane.toLowerCase():"",De=typeof e.task.executorRef=="string"?e.task.executorRef.toLowerCase():"",ue=typeof e.task.title=="string"?e.task.title.toLowerCase():"";c=Yr(L,De,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=Vr(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=Ln(r,e.explicitProvider),r=Fn(r,{explicitProvider:e.explicitProvider,task:e.task,configuredProvider:e.configuredProvider});let s=!!e.configuredProvider?.trim()&&x(e.configuredProvider)!==W&&r.rule==="config:worker_provider",i=Jr({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===Gr||k(i.provider)&&(e.explicitProviderIsOperatorOverride||ae(e.task))||i.provider===Te||i.provider===O||i.provider===B||i.provider==="codex")return i;let l=Br({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 Hn(e,r,t){return e||r||t||le()||V}ne();ne();var W="cursor",jn=new Set(["claude","opus","anthropic"]),Yn=[/\[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 k(e){if(!e?.trim())return!1;let r=e.trim().toLowerCase();return jn.has(r)?!0:r.includes("claude")||r.includes("opus")}function ae(e){if(!e)return!1;let r=e.workerProviderOverride;if(typeof r=="string"&&k(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&&k(n.provider)||n?.model&&k(Vn(n.model)))return!0;let o=J(e,"description");if(Yn.some(i=>i.test(o)))return!0;let s=J(e,"title");return!!/\[use-claude-worker\]/i.test(s)}function Vn(e){let r=e.trim().toLowerCase();return/^claude[-_]/.test(r)||/^(?:opus|sonnet|haiku)\b/.test(r)?"claude":r}function Gn(e,r){return{provider:W,model:q,rule:`policy:cursor_default${r}`,requestedModel:e}}var qn=["explicit:","executor_ref:","factory:","task:"];function Jn(e){return qn.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 Jr(e){let{routing:r,task:t}=e,n=e.explicitProvider?.trim().toLowerCase();if(e.explicitProviderIsOperatorOverride&&k(n))return{...r,provider:"claude",rule:r.rule.startsWith("explicit:")?r.rule:"explicit:operator_provider"};if(n||Jn(r.rule)||Ke(t)||!k(r.provider))return r;let o=r.rule&&r.rule!=="default:global"?`:${r.rule.replace(/:/g,"_")}`:"";return Gn(r.model,o)}function zn(e){let r=e?.executorRef;return typeof r=="string"?r.trim():""}function zr(e){return e?.trim()||void 0}function Xn(e){let r=zn(e.task),t=f(r),n=e.explicitProvider?.trim().toLowerCase(),o=zr(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=zr(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&&!k(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,jr as GLOBAL_DEFAULT_MODEL,Xn as assessDispatchModelGuard,de as executorRefRequestsNonCursorWorker,Vr as inferModelRoutingFromTask,f as parseExecutorRefRoutingIntent,le as resolveGlobalDefaultModel,Hn as resolveModelFallback,$n as resolveWorkerLaunch};
5
+ ${m(e,"executorRef")}`.match(/\[(?:worker-)?model:\s*([^\]\n]+)\]/i)?.[1]?.trim()||void 0}function $r(e){return e.toLowerCase()}function le(e=N()){let r=e.defaultModel?.trim();if(r)return r;let t=process.env.KYNVER_DEFAULT_MODEL?.trim();return t||jr}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-")?O:"cursor"}function Wn(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:A(),provider:O,rule:n&&n!==O?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:t==="gemini-api"||t==="gemini_api"||t==="google-api"?{model:A(),provider:B,rule:n&&n!==B?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:null}function Hr(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 Mn=new Set(["report_reviewer","deep_reviewer","plan_reviewer"]);function Yr(e,r,t){return Mn.has(e)?G:r.includes("review")||/^review[\s:]/.test(t)||t.includes("critique")?G:V}function Vr(e){let r=$r(m(e,"executorRef")),t=m(e,"title").toLowerCase(),n=m(e,"priority")||"normal",o=$r(m(e,"roleLane"));if(r.includes("provider:claude")||r.startsWith("claude:")){let i=Yr(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: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:Ne,...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:B,...i?.model?{model:i.model}:{model:A()},rule:"lane:gemini_api"}}if(r.includes("provider:gemini")||r.startsWith("gemini:")){let i=f(m(e,"executorRef"));return{provider:O,...i?.model?{model:i.model}:{model:A()},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 Hr(r,t)||o==="deep_reviewer"?{provider:"cursor",rule:"lane:deep_review"}:{provider:"cursor",rule:"lane:review"};if(Hr(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 Un(e){return e?f(m(e,"executorRef")):null}function Bn(e){switch(x(e)){case O:case B:return A();case"claude":return V;case"codex":return U;case"cursor":return q;default:return}}var Te="explicit:cli_provider",Gr="config:worker_provider";function qr(e,r,t){let n=x(r);return n===e.provider&&e.rule===t?e:{...e,provider:n,model:Bn(n)??e.model,rule:t}}function Ln(e,r){let t=r?.trim();return!t||e.rule.startsWith("explicit:")&&e.rule!==Te?e:qr(e,t,Te)}function Fn(e,r){if(r.explicitProvider?.trim()||Ke(r.task))return e;let t=r.configuredProvider?.trim();if(!t)return e;let n=x(t);return n===M||n===e.provider?e:qr(e,n,Gr)}function $n(e){let r,t=Un(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=Wn(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=Dn(e.task),c,p;if(u)c=u,p="task:provider_override";else{let L=typeof e.task.roleLane=="string"?e.task.roleLane.toLowerCase():"",De=typeof e.task.executorRef=="string"?e.task.executorRef.toLowerCase():"",ue=typeof e.task.title=="string"?e.task.title.toLowerCase():"";c=Yr(L,De,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=Vr(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=Ln(r,e.explicitProvider),r=Fn(r,{explicitProvider:e.explicitProvider,task:e.task,configuredProvider:e.configuredProvider});let s=!!e.configuredProvider?.trim()&&x(e.configuredProvider)!==M&&r.rule==="config:worker_provider",i=Jr({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===Te||i.rule===Gr||k(i.provider)&&(e.explicitProviderIsOperatorOverride||ae(e.task))||i.provider===Ne||i.provider===O||i.provider===B||i.provider==="codex")return i;let l=Br({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 Hn(e,r,t){return e||r||t||le()||V}ne();ne();var M="cursor",jn=new Set(["claude","opus","anthropic"]),Yn=[/\[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 k(e){if(!e?.trim())return!1;let r=e.trim().toLowerCase();return jn.has(r)?!0:r.includes("claude")||r.includes("opus")}function ae(e){if(!e)return!1;let r=e.workerProviderOverride;if(typeof r=="string"&&k(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&&k(n.provider)||n?.model&&k(Vn(n.model)))return!0;let o=J(e,"description");if(Yn.some(i=>i.test(o)))return!0;let s=J(e,"title");return!!/\[use-claude-worker\]/i.test(s)}function Vn(e){let r=e.trim().toLowerCase();return/^claude[-_]/.test(r)||/^(?:opus|sonnet|haiku)\b/.test(r)?"claude":r}function Gn(e,r){return{provider:M,model:q,rule:`policy:cursor_default${r}`,requestedModel:e}}var qn=["explicit:","executor_ref:","factory:","task:"];function Jn(e){return qn.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 Jr(e){let{routing:r,task:t}=e,n=e.explicitProvider?.trim().toLowerCase();if(e.explicitProviderIsOperatorOverride&&k(n))return{...r,provider:"claude",rule:r.rule.startsWith("explicit:")?r.rule:"explicit:operator_provider"};if(n||Jn(r.rule)||Ke(t)||!k(r.provider))return r;let o=r.rule&&r.rule!=="default:global"?`:${r.rule.replace(/:/g,"_")}`:"";return Gn(r.model,o)}function zn(e){let r=e?.executorRef;return typeof r=="string"?r.trim():""}function zr(e){return e?.trim()||void 0}function Xn(e){let r=zn(e.task),t=f(r),n=e.explicitProvider?.trim().toLowerCase(),o=zr(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=zr(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&&!k(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,jr as GLOBAL_DEFAULT_MODEL,Xn as assessDispatchModelGuard,de as executorRefRequestsNonCursorWorker,Vr as inferModelRoutingFromTask,f as parseExecutorRefRoutingIntent,le as resolveGlobalDefaultModel,Hn as resolveModelFallback,$n as resolveWorkerLaunch};
@@ -1,2 +1,2 @@
1
- var o=(e,r,t)=>()=>{if(t)throw t[0];try{return e&&(r=e(e=0)),r}catch(n){throw t=[n],n}};function J(e){let r=e[Tr];return r?new Set(r.split(/[\s,]+/).map(t=>t.trim()).filter(Boolean)):new Set}function _(e,r={}){return Or.has(e)?!0:Pr.has(e)||r.operatorAllow?.has(e)||Ir.some(t=>e.endsWith(t))?!1:Ar.some(t=>e.endsWith(t))}function _e(e){let r=J(e);return Object.keys(e).filter(t=>_(t,{operatorAllow:r})).sort()}function ke(e){let r=J(e);return r.size===0?[]:Object.keys(e).filter(t=>r.has(t)&&!_(t,{operatorAllow:r})&&_(t)).sort()}function A(e){let r=J(e),t={...e};for(let n of Object.keys(t))_(n,{operatorAllow:r})&&delete t[n];return t}function Nr(e){let r=_e(e),t=ke(e);return{forbiddenPresent:r,safe:r.length===0,...t.length?{operatorAllowedActive:t}:{}}}var Cr,Or,Ar,wr,Pr,Ir,Tr,w=o(()=>{"use strict";Cr=["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"],Or=new Set(Cr),Ar=["_SECRET","_API_KEY","_KEK","_KEY","_TOKEN","_PASSWORD","_PASSPHRASE","_SALT"],wr=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],Pr=new Set(wr),Ir=["_PUBLIC_KEY"],Tr="KYNVER_WORKER_ENV_ALLOW"});var g=o(()=>{"use strict"});var Ae=o(()=>{"use strict"});function Q(e){if(!e)return!1;try{return process.kill(e,0),!0}catch{return!1}}var a=o(()=>{"use strict";Ae()});var T=o(()=>{"use strict";g();a();w()});var we=o(()=>{"use strict";T()});var ee=o(()=>{"use strict";T();g();we()});var re=o(()=>{"use strict";a()});var m=o(()=>{"use strict"});var N=o(()=>{"use strict"});var Pe=o(()=>{"use strict"});var Hn,Vn,te=o(()=>{"use strict";Hn=25*1024*1024*1024,Vn=12*1024*1024*1024});var Jn,zn,Ie=o(()=>{"use strict";te();Jn=5*1024*1024*1024,zn=10*1024*1024*1024});var to,no,ne=o(()=>{"use strict";Ie();te();to=30*1024*1024*1024,no=15*1024*1024*1024});var Ne=o(()=>{"use strict";a()});import zr from"node:path";var mo,oe=o(()=>{"use strict";g();Ne();mo=zr.join(".openclaw","harness")});var W=o(()=>{"use strict";f();m();N();D();oe()});var De=o(()=>{"use strict";f();oe();W();a()});var se=o(()=>{"use strict";De();a()});var Me=o(()=>{"use strict";se();a()});var Ue=o(()=>{"use strict"});var Be=o(()=>{"use strict";Ue();a()});var Le=o(()=>{"use strict"});var Fe=o(()=>{"use strict";Le()});var U=o(()=>{"use strict"});var $e=o(()=>{"use strict";Fe();a();U()});var He=o(()=>{"use strict";U()});var Ve=o(()=>{"use strict"});var je=o(()=>{"use strict"});var ae=o(()=>{"use strict"});var Ye=o(()=>{"use strict"});var Ge=o(()=>{"use strict";ae();Ye()});var qe=o(()=>{"use strict";Be();$e();U();He();Ve();T();je();Ge();ae();a()});var Je=o(()=>{"use strict";qe()});var at,lt,ze=o(()=>{"use strict";Pe();f();m();N();D();ne();se();Me();Je();a();at=500*1024*1024,lt=4*1024*1024*1024});var D=o(()=>{"use strict";ze()});import{homedir as ut}from"node:os";import ct from"node:path";var Xe,le=o(()=>{"use strict";Xe=ct.join(ut(),".kynver",".env")});var Qe=o(()=>{"use strict"});var Ze=o(()=>{"use strict";Qe()});var er=o(()=>{"use strict"});var rr=o(()=>{"use strict";a()});var ue=o(()=>{"use strict";Ze();er();rr()});var tr=o(()=>{"use strict"});var nr=o(()=>{"use strict";tr()});var B=o(()=>{"use strict";le();g();f();ue();nr()});var or=o(()=>{"use strict";m();m()});var ir=o(()=>{"use strict";le();ue();B()});var ce=o(()=>{"use strict"});var sr=o(()=>{"use strict";ee();m();or();f();B();ir();re();ce();W()});function k(e){let r=e.trim().toLowerCase();return Rt[r]??r}var ar,vt,Rt,L=o(()=>{"use strict";ar=["claude","cursor","codex","gemini","gemini-api","openai-compatible"],vt=ar.join("|"),Rt={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"}});import{homedir as kt,totalmem as ba}from"node:os";import de from"node:path";var lr,Da,Ma,Ua,Ba,f=o(()=>{"use strict";ee();g();re();m();N();D();ne();B();sr();L();W();ce();lr=de.join(kt(),".kynver"),Da=de.join(lr,"config.json"),Ma=de.join(lr,"credentials"),Ua=500*1024*1024,Ba=4*1024*1024*1024});w();w();var z="KYNVER_NO_PROD_DB_CREDENTIALS",Kr=["KYNVER_ENV_FILE"],Wr=new Set(["1","true","yes","on"]);function xe(e){let r=e[z]?.trim().toLowerCase();return r!==void 0&&Wr.has(r)}function d(e,r={}){let t=A(e);if(!r.reviewWorker)return t;let n={...t,[z]:"1"};for(let i of Kr)delete n[i];return n}var be=["DATABASE_URL","PRODUCTION_DATABASE_URL","KYNVER_PRODUCTION_DATABASE_URL"];function Dr(e,r={}){let t=d(e,r),n=Object.keys(t).filter(u=>u.endsWith("_SECRET")||u.endsWith("_API_KEY")||be.includes(u)),i=be.every(u=>t[u]===void 0),s=r.reviewWorker?t.KYNVER_ENV_FILE===void 0:!0,l=xe(t);return{reviewMode:!!r.reviewWorker,noProdFlagPresent:r.reviewWorker?l:!0,forbiddenKeysAfterScrub:n.sort(),productionDbKeysAbsent:i,envFilePointerStripped:s,safe:i&&n.length===0&&s&&(!r.reviewWorker||l)}}var Mr="expert-lane-pr-review:",Ur="plan-review-task",Br="scheduledjob:",P=new Set(["lorentz","dalton","rhea","sentinel"]);function Lr(e){if(!e)return null;let r=e.trim().toLowerCase();return r.length?r:null}function X(e){return/\b(deep[- ]?review|plan review|review .*plan|security review|red[- ]team|lb\d+|runtime verification)\b/.test(e)}function Fr(e,r){return e.startsWith("factory:")?e.includes("lb")||X(r):!1}function $r(e){let r=(e.executorRef??"").toLowerCase(),t=(e.title??"").toLowerCase(),n=(e.description??"").toLowerCase(),i=`${t}
2
- ${n}`,s=Lr(e.personaSlug);return r.startsWith("harness-lane:blocked-lane-unblock:")||r==="lane:over_attempt_recovery"||r.startsWith("next-action-fix:")||r.startsWith("next-action-landing:")||r.startsWith("code-work-lane-chain:release:")?!1:!!(r.startsWith(Mr)||r===Ur||r.startsWith("daemon-review:")||s&&P.has(s)&&(r.includes("evidence")||r.includes("validate")||r.includes("review")||Fr(r,i)||X(i))||r.startsWith(Br)&&e.parentTaskId&&s&&P.has(s)||e.planId&&!e.parentTaskId&&s&&P.has(s)&&X(i)||t.includes("expert pr review")||e.parentTaskId&&(t.startsWith("review:")||t.includes("review required")||t.includes("runtime review"))&&s&&P.has(s))}var Hr=/^claude[-_]/i,Vr=/^(?:opus|sonnet|haiku)\b/i;function Ee(e){let r=e.trim();return Hr.test(r)||Vr.test(r)}function Se(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 Oe(e){return e.trim().toLowerCase().startsWith("gemini-")}function jr(e){return Se(e)?"codex":Ee(e)?"claude":Oe(e)?"gemini":(Ce(e),"cursor")}function Yr(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(),i=t>=0&&r.slice(t+1).trim()||void 0;return n?n==="claude"||n==="opus"||n==="anthropic"?{provider:"claude",model:i,rule:i?"executor_ref:provider_claude_model":"executor_ref:provider_claude"}:n==="codex"?{provider:"codex",model:i,rule:"executor_ref:provider_codex"}:n==="openai-compatible"||n==="openai"||n==="openai_compatible"?{provider:"openai-compatible",model:i,rule:"executor_ref:provider_openai_compatible"}:n==="chatgpt"||n==="gpt"?{provider:"codex",model:i,rule:"executor_ref:provider_codex"}:n==="openai-api"||n==="openai_api"?{provider:"openai-compatible",model:i,rule:"executor_ref:provider_openai_compatible"}:n==="cursor"||n==="composer"?{provider:"cursor",model:i,rule:"executor_ref:provider_cursor"}:n==="gemini-api"||n==="gemini_api"||n==="google-api"?{provider:"gemini-api",model:i,rule:"executor_ref:provider_gemini_api"}:n==="gemini"||n==="google"||n==="gemini_cli"?{provider:"gemini",model:i,rule:i?"executor_ref:provider_gemini_model":"executor_ref:provider_gemini"}:null:null}function Gr(e){if(!e.startsWith("harness-lane:"))return null;let r=e.split(":").map(i=>i.trim()).filter(Boolean);if(r.length<2)return null;let t=r[1],n=r.slice(2).join(":");return n?Ee(n)||Se(n)||Ce(n)||Oe(n)?{lane:t,model:n,provider:jr(n),rule:"executor_ref:harness_lane_model"}:{lane:t,rule:"executor_ref:harness_lane"}:{lane:t,rule:"executor_ref:harness_lane"}}function I(e){let r=typeof e=="string"?e.trim():"";return r?Yr(r)??Gr(r):null}f();a();a();var dr="kynver",pr=["agent_os_context_envelope","agent_os_search_memory","agent_os_search_skills","agent_os_get_skill","agent_os_progress_note"],Ot=pr.map(e=>`mcp__${dr}__${e}`);a();a();var su=process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.5";function wt(){return process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.5"}var Pt=wt();a();var Nu=600*1e3;a();var Gu=600*1e3;var mr="composer-2.5";L();L();var p="cursor",Kt=new Set(["claude","opus","anthropic"]),Wt=[/\[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 c(e){if(!e?.trim())return!1;let r=e.trim().toLowerCase();return Kt.has(r)?!0:r.includes("claude")||r.includes("opus")}function pe(e){if(!e)return!1;let r=e.workerProviderOverride;if(typeof r=="string"&&c(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=I(x(e,"executorRef"));if(n?.provider&&c(n.provider)||n?.model&&c(Dt(n.model)))return!0;let i=x(e,"description");if(Wt.some(l=>l.test(i)))return!0;let s=x(e,"title");return!!/\[use-claude-worker\]/i.test(s)}function Dt(e){let r=e.trim().toLowerCase();return/^claude[-_]/.test(r)||/^(?:opus|sonnet|haiku)\b/.test(r)?"claude":r}function Mt(e,r){return{provider:p,model:mr,rule:`policy:cursor_default${r}`,requestedModel:e}}var Ut=["explicit:","executor_ref:","factory:","task:"];function Bt(e){return Ut.some(r=>e.startsWith(r))}function me(e){if(!e)return!1;let r=e.workerProviderOverride;return typeof r=="string"&&r.trim()||I(x(e,"executorRef"))?.provider?!0:pe(e)}function fr(e){let{routing:r,task:t}=e,n=e.explicitProvider?.trim().toLowerCase();if(e.explicitProviderIsOperatorOverride&&c(n))return{...r,provider:"claude",rule:r.rule.startsWith("explicit:")?r.rule:"explicit:operator_provider"};if(n||Bt(r.rule)||me(t)||!c(r.provider))return r;let i=r.rule&&r.rule!=="default:global"?`:${r.rule.replace(/:/g,"_")}`:"";return Mt(r.model,i)}function Lt(e,r=p){let t=e?.trim();return t?k(t):r}function Ft(e){let r=[...new Set(e.map(t=>t.trim().toLowerCase()).filter(Boolean))];return r.includes(p)?[...new Set(r.map(t=>c(t)?p:t))]:r.every(t=>c(t))?[p]:r}var $t=/\b(npm run typecheck|tsc\b[^|&;]*--noEmit|node scripts\/verify-pr-local\.mjs|kynver (harness )?verify)\b/i,Ht=/\b(npm run build\b|next build\b)\b/i,Vt=/\b(vercel (build|deploy|--prod))\b/i,jt=/\b(openai|anthropic|perplexity|voyage)\b.*\b(api|cli)\b|\b(paid|billable)[-_ ]?compute\b/i;function fe(e){let r=e.trim();return r?jt.test(r)?{heavy:!0,commandClass:"paid_compute",reason:"paid external compute requires heavy-verification token and operator approval"}:Vt.test(r)?{heavy:!0,commandClass:"vercel_verify",reason:"Vercel build/deploy verification requires heavy-verification token"}:Ht.test(r)?{heavy:!0,commandClass:"full_build",reason:"full app build requires heavy-verification token"}:$t.test(r)?{heavy:!0,commandClass:"full_typecheck",reason:"full repo typecheck requires heavy-verification token"}:{heavy:!1,commandClass:"allowed",reason:null}:{heavy:!1,commandClass:"allowed",reason:null}}var V="heavy_verification_token_required";import{spawnSync as cn}from"node:child_process";a();import{closeSync as Xt,existsSync as S,mkdirSync as Qt,openSync as Zt,readdirSync as vr,readFileSync as en,statSync as rn,unlinkSync as Rr,writeFileSync as tn}from"node:fs";import ye from"node:path";import{mkdirSync as Gt}from"node:fs";import{tmpdir as qt}from"node:os";import j from"node:path";import{homedir as Yt,tmpdir as vc}from"node:os";import gr from"node:path";function hr(){let e=process.env.KYNVER_STATE_ROOT;return e?gr.resolve(e):gr.join(Yt(),".kynver","state")}function Jt(){return!!(process.env.VERCEL||process.env.VERCEL_ENV||process.env.AWS_LAMBDA_FUNCTION_NAME||process.env.AWS_EXECUTION_ENV)}function zt(){let e=process.env.KYNVER_HEAVY_VERIFICATION_STATE_ROOT;return e?j.resolve(e):Jt()?j.join(qt(),"kynver","state","heavy-verification"):j.join(hr(),"heavy-verification")}function ge(){return j.join(zt(),"slots")}function E(){let e=ge();return Gt(e,{recursive:!0}),e}var C=120*6e4,yr=1;function nn(e,r){let t=Number(e);return!Number.isFinite(t)||t<=0?r:Math.floor(t)}function G(){let e=process.env.KYNVER_HEAVY_VERIFICATION_SKIP?.trim().toLowerCase();return e==="1"||e==="true"||e==="yes"}function Y(){let e=process.env.KYNVER_HEAVY_VERIFICATION_MAX_CONCURRENT;return e?nn(e,yr):yr}function on(e){return`slot-${e}`}function sn(e,r=ge()){return ye.join(r,`${e}.json`)}function ve(e){if(!S(e))return null;try{let r=JSON.parse(en(e,"utf8"));if(typeof r.slotId=="string"&&typeof r.pid=="number"&&typeof r.acquiredAt=="string"&&typeof r.command=="string")return r}catch{return null}return null}function _r(e,r=C){if(!e||!Q(e.pid))return!0;let t=Date.parse(e.acquiredAt);return Number.isNaN(t)?!0:Date.now()-t>r}function kr(e,r){let t=ve(e);if(t)return _r(t,r);if(!S(e))return!0;try{return Date.now()-rn(e).mtimeMs>r}catch{return!0}}function an(e,r){if(kr(e,r))try{Rr(e)}catch{}}function ln(e){return Qt(e,{recursive:!0}),e}function Re(e={}){let r=ln(e.slotsDir??E()),t=e.staleMs??C,n=0;for(let i of vr(r)){if(!i.endsWith(".json"))continue;let s=ye.join(r,i),l=S(s);an(s,t),l&&!S(s)&&(n+=1)}return n}function un(e={}){let r=e.slotsDir??E(),t=e.staleMs??C;Re({slotsDir:r,staleMs:t});let n=[];for(let i of vr(r)){if(!i.endsWith(".json"))continue;let s=ve(ye.join(r,i));s&&!_r(s,t)&&n.push(s)}return n}function he(e={}){return un(e).length}function O(e,r={}){if(G())return{admitted:!0,slotId:null,activeSlots:0,maxSlots:Y(),reason:null};let t=r.slotsDir??E(),n=r.staleMs??C,i=r.maxSlots??Y();Re({slotsDir:t,staleMs:n});for(let l=0;l<i;l+=1){let u=on(l),v=sn(u,t),xr=ve(v);if(kr(v,n))try{Rr(v)}catch{}else if(xr||S(v))continue;let Er={slotId:u,pid:process.pid,acquiredAt:new Date().toISOString(),command:e};try{let R=Zt(v,"wx");tn(R,JSON.stringify(Er,null,2),"utf8"),Xt(R);let Sr=he({slotsDir:t,staleMs:n});return{admitted:!0,slotId:u,activeSlots:Sr,maxSlots:i,reason:null}}catch(R){if(R.code==="EEXIST")continue;throw R}}let s=he({slotsDir:t,staleMs:n});return{admitted:!1,slotId:null,activeSlots:s,maxSlots:i,reason:`heavy verification at capacity (${s}/${i} slots)`}}function q(e,r={}){if(G())return{admitted:!0,slotId:null,activeSlots:0,maxSlots:Y(),reason:null};let t=r.slotsDir??E(),n=r.staleMs??C,i=r.maxSlots??Y();Re({slotsDir:t,staleMs:n});let s=he({slotsDir:t,staleMs:n}),l=s<i;return{admitted:l,slotId:null,activeSlots:s,maxSlots:i,reason:l?null:`heavy verification at capacity (${s}/${i} slots); waiting for ${e}`}}function dn(e){e<=0||cn(process.execPath,["-e",`const d=Date.now()+${Math.floor(e)};while(Date.now()<d);`],{stdio:"ignore",windowsHide:!0})}function br(e,r,t=2e3,n={}){let i=Date.now()+Math.max(0,r),s=O(e,n);for(;!s.admitted&&Date.now()<i;)dn(Math.min(t,i-Date.now())),s=O(e,n);return s}function pn(e,r={}){let t=fe(e);if(!t.heavy)return{allowed:!0,outcome:"allowed",commandClass:t.commandClass,reason:"command does not require heavy-verification token",verificationGate:{...q(e),slotId:null}};if(G())return{allowed:!0,outcome:"heavy_verification_skipped",commandClass:t.commandClass,reason:"KYNVER_HEAVY_VERIFICATION_SKIP bypasses gate",verificationGate:{...q(e),slotId:null}};let n=r.waitMs??0,i=n>0?br(e,n,r.pollMs):O(e);return i.admitted?{allowed:!0,outcome:"allowed",commandClass:t.commandClass,reason:t.reason??"heavy-verification token acquired",verificationGate:i}:{allowed:!1,outcome:V,commandClass:t.commandClass,reason:t.reason??i.reason??V,verificationGate:i}}export{p as DEFAULT_WORKER_PROVIDER,V as HEAVY_VERIFICATION_TOKEN_REQUIRED,z as KYNVER_NO_PROD_DB_CREDENTIALS_ENV,Dr as auditReviewWorkerCredentialScope,Nr as auditWorkerEnv,d as buildWorkerSpawnEnv,fe as classifyHeavyShellCommand,fr as enforceCursorWorkerProvider,pn as gateWorkerShellCommand,c as isClaudeFamilyProvider,_ as isForbiddenWorkerEnvKey,$r as isHarnessExpertReviewWorker,xe as isNoProdCredentialReviewEnvironment,_e as listForbiddenWorkerEnvKeys,ke as listOperatorAllowedWorkerEnvKeys,k as normalizeWorkerProviderName,Ft as preferCursorExecutor,Lt as resolveConfiguredWorkerProvider,A as scrubWorkerEnv,pe as taskAllowsClaudeWorker,me as taskExpressesWorkerProviderPreference};
1
+ var o=(e,r,t)=>()=>{if(t)throw t[0];try{return e&&(r=e(e=0)),r}catch(n){throw t=[n],n}};function J(e){let r=e[Nr];return r?new Set(r.split(/[\s,]+/).map(t=>t.trim()).filter(Boolean)):new Set}function _(e,r={}){return Or.has(e)?!0:Pr.has(e)||r.operatorAllow?.has(e)||Ir.some(t=>e.endsWith(t))?!1:Ar.some(t=>e.endsWith(t))}function _e(e){let r=J(e);return Object.keys(e).filter(t=>_(t,{operatorAllow:r})).sort()}function ke(e){let r=J(e);return r.size===0?[]:Object.keys(e).filter(t=>r.has(t)&&!_(t,{operatorAllow:r})&&_(t)).sort()}function A(e){let r=J(e),t={...e};for(let n of Object.keys(t))_(n,{operatorAllow:r})&&delete t[n];return t}function Tr(e){let r=_e(e),t=ke(e);return{forbiddenPresent:r,safe:r.length===0,...t.length?{operatorAllowedActive:t}:{}}}var Cr,Or,Ar,wr,Pr,Ir,Nr,w=o(()=>{"use strict";Cr=["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"],Or=new Set(Cr),Ar=["_SECRET","_API_KEY","_KEK","_KEY","_TOKEN","_PASSWORD","_PASSPHRASE","_SALT"],wr=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],Pr=new Set(wr),Ir=["_PUBLIC_KEY"],Nr="KYNVER_WORKER_ENV_ALLOW"});var g=o(()=>{"use strict"});var Ae=o(()=>{"use strict"});function Q(e){if(!e)return!1;try{return process.kill(e,0),!0}catch{return!1}}var a=o(()=>{"use strict";Ae()});var N=o(()=>{"use strict";g();a();w()});var we=o(()=>{"use strict";N()});var ee=o(()=>{"use strict";N();g();we()});var re=o(()=>{"use strict";a()});var m=o(()=>{"use strict"});var T=o(()=>{"use strict"});var Pe=o(()=>{"use strict"});var Hn,Vn,te=o(()=>{"use strict";Hn=25*1024*1024*1024,Vn=12*1024*1024*1024});var Jn,zn,Ie=o(()=>{"use strict";te();Jn=5*1024*1024*1024,zn=10*1024*1024*1024});var to,no,ne=o(()=>{"use strict";Ie();te();to=30*1024*1024*1024,no=15*1024*1024*1024});var Te=o(()=>{"use strict";a()});import zr from"node:path";var mo,oe=o(()=>{"use strict";g();Te();mo=zr.join(".openclaw","harness")});var K=o(()=>{"use strict";f();m();T();D();oe()});var De=o(()=>{"use strict";f();oe();K();a()});var se=o(()=>{"use strict";De();a()});var Me=o(()=>{"use strict";se();a()});var Ue=o(()=>{"use strict"});var Be=o(()=>{"use strict";Ue();a()});var Le=o(()=>{"use strict"});var Fe=o(()=>{"use strict";Le()});var U=o(()=>{"use strict"});var $e=o(()=>{"use strict";Fe();a();U()});var He=o(()=>{"use strict";U()});var Ve=o(()=>{"use strict"});var je=o(()=>{"use strict"});var ae=o(()=>{"use strict"});var Ye=o(()=>{"use strict"});var Ge=o(()=>{"use strict";ae();Ye()});var qe=o(()=>{"use strict";Be();$e();U();He();Ve();N();je();Ge();ae();a()});var Je=o(()=>{"use strict";qe()});var at,lt,ze=o(()=>{"use strict";Pe();f();m();T();D();ne();se();Me();Je();a();at=500*1024*1024,lt=4*1024*1024*1024});var D=o(()=>{"use strict";ze()});import{homedir as ut}from"node:os";import ct from"node:path";var Xe,le=o(()=>{"use strict";Xe=ct.join(ut(),".kynver",".env")});var Qe=o(()=>{"use strict"});var Ze=o(()=>{"use strict";Qe()});var er=o(()=>{"use strict"});var rr=o(()=>{"use strict";a()});var ue=o(()=>{"use strict";Ze();er();rr()});var tr=o(()=>{"use strict"});var nr=o(()=>{"use strict";tr()});var B=o(()=>{"use strict";le();g();f();ue();nr()});var or=o(()=>{"use strict";m();m()});var ir=o(()=>{"use strict";le();ue();B()});var ce=o(()=>{"use strict"});var sr=o(()=>{"use strict";ee();m();or();f();B();ir();re();ce();K()});function k(e){let r=e.trim().toLowerCase();return Rt[r]??r}var ar,vt,Rt,L=o(()=>{"use strict";ar=["claude","cursor","codex","gemini","gemini-api","openai-compatible"],vt=ar.join("|"),Rt={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"}});import{homedir as kt,totalmem as xa}from"node:os";import de from"node:path";var lr,Da,Ma,Ua,Ba,f=o(()=>{"use strict";ee();g();re();m();T();D();ne();B();sr();L();K();ce();lr=de.join(kt(),".kynver"),Da=de.join(lr,"config.json"),Ma=de.join(lr,"credentials"),Ua=500*1024*1024,Ba=4*1024*1024*1024});w();w();var z="KYNVER_NO_PROD_DB_CREDENTIALS",Wr=["KYNVER_ENV_FILE"],Kr=new Set(["1","true","yes","on"]);function be(e){let r=e[z]?.trim().toLowerCase();return r!==void 0&&Kr.has(r)}function d(e,r={}){let t=A(e);if(!r.reviewWorker)return t;let n={...t,[z]:"1"};for(let i of Wr)delete n[i];return n}var xe=["DATABASE_URL","PRODUCTION_DATABASE_URL","KYNVER_PRODUCTION_DATABASE_URL"];function Dr(e,r={}){let t=d(e,r),n=Object.keys(t).filter(u=>u.endsWith("_SECRET")||u.endsWith("_API_KEY")||xe.includes(u)),i=xe.every(u=>t[u]===void 0),s=r.reviewWorker?t.KYNVER_ENV_FILE===void 0:!0,l=be(t);return{reviewMode:!!r.reviewWorker,noProdFlagPresent:r.reviewWorker?l:!0,forbiddenKeysAfterScrub:n.sort(),productionDbKeysAbsent:i,envFilePointerStripped:s,safe:i&&n.length===0&&s&&(!r.reviewWorker||l)}}var Mr="expert-lane-pr-review:",Ur="plan-review-task",Br="scheduledjob:",P=new Set(["lorentz","dalton","rhea","sentinel"]);function Lr(e){if(!e)return null;let r=e.trim().toLowerCase();return r.length?r:null}function X(e){return/\b(deep[- ]?review|plan review|review .*plan|security review|red[- ]team|lb\d+|runtime verification)\b/.test(e)}function Fr(e,r){return e.startsWith("factory:")?e.includes("lb")||X(r):!1}function $r(e){let r=(e.executorRef??"").toLowerCase(),t=(e.title??"").toLowerCase(),n=(e.description??"").toLowerCase(),i=`${t}
2
+ ${n}`,s=Lr(e.personaSlug);return r.startsWith("harness-lane:blocked-lane-unblock:")||r==="lane:over_attempt_recovery"||r.startsWith("next-action-fix:")||r.startsWith("next-action-landing:")||r.startsWith("code-work-lane-chain:release:")?!1:!!(r.startsWith(Mr)||r===Ur||r.startsWith("daemon-review:")||s&&P.has(s)&&(r.includes("evidence")||r.includes("validate")||r.includes("review")||Fr(r,i)||X(i))||r.startsWith(Br)&&e.parentTaskId&&s&&P.has(s)||e.planId&&!e.parentTaskId&&s&&P.has(s)&&X(i)||t.includes("expert pr review")||e.parentTaskId&&(t.startsWith("review:")||t.includes("review required")||t.includes("runtime review"))&&s&&P.has(s))}var Hr=/^claude[-_]/i,Vr=/^(?:opus|sonnet|haiku)\b/i;function Ee(e){let r=e.trim();return Hr.test(r)||Vr.test(r)}function Se(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 Oe(e){return e.trim().toLowerCase().startsWith("gemini-")}function jr(e){return Se(e)?"codex":Ee(e)?"claude":Oe(e)?"gemini":(Ce(e),"cursor")}function Yr(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(),i=t>=0&&r.slice(t+1).trim()||void 0;return n?n==="claude"||n==="opus"||n==="anthropic"?{provider:"claude",model:i,rule:i?"executor_ref:provider_claude_model":"executor_ref:provider_claude"}:n==="codex"?{provider:"codex",model:i,rule:"executor_ref:provider_codex"}:n==="openai-compatible"||n==="openai"||n==="openai_compatible"?{provider:"openai-compatible",model:i,rule:"executor_ref:provider_openai_compatible"}:n==="chatgpt"||n==="gpt"?{provider:"codex",model:i,rule:"executor_ref:provider_codex"}:n==="openai-api"||n==="openai_api"?{provider:"openai-compatible",model:i,rule:"executor_ref:provider_openai_compatible"}:n==="cursor"||n==="composer"?{provider:"cursor",model:i,rule:"executor_ref:provider_cursor"}:n==="gemini-api"||n==="gemini_api"||n==="google-api"?{provider:"gemini-api",model:i,rule:"executor_ref:provider_gemini_api"}:n==="gemini"||n==="google"||n==="gemini_cli"?{provider:"gemini",model:i,rule:i?"executor_ref:provider_gemini_model":"executor_ref:provider_gemini"}:null:null}function Gr(e){if(!e.startsWith("harness-lane:"))return null;let r=e.split(":").map(i=>i.trim()).filter(Boolean);if(r.length<2)return null;let t=r[1],n=r.slice(2).join(":");return n?Ee(n)||Se(n)||Ce(n)||Oe(n)?{lane:t,model:n,provider:jr(n),rule:"executor_ref:harness_lane_model"}:{lane:t,rule:"executor_ref:harness_lane"}:{lane:t,rule:"executor_ref:harness_lane"}}function I(e){let r=typeof e=="string"?e.trim():"";return r?Yr(r)??Gr(r):null}f();a();a();var dr="kynver",pr=["agent_os_context_envelope","agent_os_search_memory","agent_os_search_skills","agent_os_get_skill","agent_os_progress_note"],Ot=pr.map(e=>`mcp__${dr}__${e}`);a();a();var su=process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.5";function wt(){return process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.5"}var Pt=wt();a();var Du=600*1e3;a();var zu=600*1e3;var mr="composer-2.5";L();L();var p="cursor",Wt=new Set(["claude","opus","anthropic"]),Kt=[/\[worker-provider:\s*claude\]/i,/\[use-claude-worker\]/i,/\[operator-worker-provider:\s*claude\]/i];function b(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function c(e){if(!e?.trim())return!1;let r=e.trim().toLowerCase();return Wt.has(r)?!0:r.includes("claude")||r.includes("opus")}function pe(e){if(!e)return!1;let r=e.workerProviderOverride;if(typeof r=="string"&&c(r))return!0;let t=b(e,"executorRef").toLowerCase();if(t==="provider:claude"||t.startsWith("provider:claude:")||t.includes("claude-worker-override")||t.includes("operator-claude"))return!0;let n=I(b(e,"executorRef"));if(n?.provider&&c(n.provider)||n?.model&&c(Dt(n.model)))return!0;let i=b(e,"description");if(Kt.some(l=>l.test(i)))return!0;let s=b(e,"title");return!!/\[use-claude-worker\]/i.test(s)}function Dt(e){let r=e.trim().toLowerCase();return/^claude[-_]/.test(r)||/^(?:opus|sonnet|haiku)\b/.test(r)?"claude":r}function Mt(e,r){return{provider:p,model:mr,rule:`policy:cursor_default${r}`,requestedModel:e}}var Ut=["explicit:","executor_ref:","factory:","task:"];function Bt(e){return Ut.some(r=>e.startsWith(r))}function me(e){if(!e)return!1;let r=e.workerProviderOverride;return typeof r=="string"&&r.trim()||I(b(e,"executorRef"))?.provider?!0:pe(e)}function fr(e){let{routing:r,task:t}=e,n=e.explicitProvider?.trim().toLowerCase();if(e.explicitProviderIsOperatorOverride&&c(n))return{...r,provider:"claude",rule:r.rule.startsWith("explicit:")?r.rule:"explicit:operator_provider"};if(n||Bt(r.rule)||me(t)||!c(r.provider))return r;let i=r.rule&&r.rule!=="default:global"?`:${r.rule.replace(/:/g,"_")}`:"";return Mt(r.model,i)}function Lt(e,r=p){let t=e?.trim();return t?k(t):r}function Ft(e){let r=[...new Set(e.map(t=>t.trim().toLowerCase()).filter(Boolean))];return r.includes(p)?[...new Set(r.map(t=>c(t)?p:t))]:r.every(t=>c(t))?[p]:r}var $t=/\b(npm run typecheck|tsc\b[^|&;]*--noEmit|node scripts\/verify-pr-local\.mjs|kynver (harness )?verify)\b/i,Ht=/\b(npm run build\b|next build\b)\b/i,Vt=/\b(vercel (build|deploy|--prod))\b/i,jt=/\b(openai|anthropic|perplexity|voyage)\b.*\b(api|cli)\b|\b(paid|billable)[-_ ]?compute\b/i;function fe(e){let r=e.trim();return r?jt.test(r)?{heavy:!0,commandClass:"paid_compute",reason:"paid external compute requires heavy-verification token and operator approval"}:Vt.test(r)?{heavy:!0,commandClass:"vercel_verify",reason:"Vercel build/deploy verification requires heavy-verification token"}:Ht.test(r)?{heavy:!0,commandClass:"full_build",reason:"full app build requires heavy-verification token"}:$t.test(r)?{heavy:!0,commandClass:"full_typecheck",reason:"full repo typecheck requires heavy-verification token"}:{heavy:!1,commandClass:"allowed",reason:null}:{heavy:!1,commandClass:"allowed",reason:null}}var V="heavy_verification_token_required";import{spawnSync as cn}from"node:child_process";a();import{closeSync as Xt,existsSync as S,mkdirSync as Qt,openSync as Zt,readdirSync as vr,readFileSync as en,statSync as rn,unlinkSync as Rr,writeFileSync as tn}from"node:fs";import ye from"node:path";import{mkdirSync as Gt}from"node:fs";import{tmpdir as qt}from"node:os";import j from"node:path";import{homedir as Yt,tmpdir as kc}from"node:os";import gr from"node:path";function hr(){let e=process.env.KYNVER_STATE_ROOT;return e?gr.resolve(e):gr.join(Yt(),".kynver","state")}function Jt(){return!!(process.env.VERCEL||process.env.VERCEL_ENV||process.env.AWS_LAMBDA_FUNCTION_NAME||process.env.AWS_EXECUTION_ENV)}function zt(){let e=process.env.KYNVER_HEAVY_VERIFICATION_STATE_ROOT;return e?j.resolve(e):Jt()?j.join(qt(),"kynver","state","heavy-verification"):j.join(hr(),"heavy-verification")}function ge(){return j.join(zt(),"slots")}function E(){let e=ge();return Gt(e,{recursive:!0}),e}var C=120*6e4,yr=1;function nn(e,r){let t=Number(e);return!Number.isFinite(t)||t<=0?r:Math.floor(t)}function G(){let e=process.env.KYNVER_HEAVY_VERIFICATION_SKIP?.trim().toLowerCase();return e==="1"||e==="true"||e==="yes"}function Y(){let e=process.env.KYNVER_HEAVY_VERIFICATION_MAX_CONCURRENT;return e?nn(e,yr):yr}function on(e){return`slot-${e}`}function sn(e,r=ge()){return ye.join(r,`${e}.json`)}function ve(e){if(!S(e))return null;try{let r=JSON.parse(en(e,"utf8"));if(typeof r.slotId=="string"&&typeof r.pid=="number"&&typeof r.acquiredAt=="string"&&typeof r.command=="string")return r}catch{return null}return null}function _r(e,r=C){if(!e||!Q(e.pid))return!0;let t=Date.parse(e.acquiredAt);return Number.isNaN(t)?!0:Date.now()-t>r}function kr(e,r){let t=ve(e);if(t)return _r(t,r);if(!S(e))return!0;try{return Date.now()-rn(e).mtimeMs>r}catch{return!0}}function an(e,r){if(kr(e,r))try{Rr(e)}catch{}}function ln(e){return Qt(e,{recursive:!0}),e}function Re(e={}){let r=ln(e.slotsDir??E()),t=e.staleMs??C,n=0;for(let i of vr(r)){if(!i.endsWith(".json"))continue;let s=ye.join(r,i),l=S(s);an(s,t),l&&!S(s)&&(n+=1)}return n}function un(e={}){let r=e.slotsDir??E(),t=e.staleMs??C;Re({slotsDir:r,staleMs:t});let n=[];for(let i of vr(r)){if(!i.endsWith(".json"))continue;let s=ve(ye.join(r,i));s&&!_r(s,t)&&n.push(s)}return n}function he(e={}){return un(e).length}function O(e,r={}){if(G())return{admitted:!0,slotId:null,activeSlots:0,maxSlots:Y(),reason:null};let t=r.slotsDir??E(),n=r.staleMs??C,i=r.maxSlots??Y();Re({slotsDir:t,staleMs:n});for(let l=0;l<i;l+=1){let u=on(l),v=sn(u,t),br=ve(v);if(kr(v,n))try{Rr(v)}catch{}else if(br||S(v))continue;let Er={slotId:u,pid:process.pid,acquiredAt:new Date().toISOString(),command:e};try{let R=Zt(v,"wx");tn(R,JSON.stringify(Er,null,2),"utf8"),Xt(R);let Sr=he({slotsDir:t,staleMs:n});return{admitted:!0,slotId:u,activeSlots:Sr,maxSlots:i,reason:null}}catch(R){if(R.code==="EEXIST")continue;throw R}}let s=he({slotsDir:t,staleMs:n});return{admitted:!1,slotId:null,activeSlots:s,maxSlots:i,reason:`heavy verification at capacity (${s}/${i} slots)`}}function q(e,r={}){if(G())return{admitted:!0,slotId:null,activeSlots:0,maxSlots:Y(),reason:null};let t=r.slotsDir??E(),n=r.staleMs??C,i=r.maxSlots??Y();Re({slotsDir:t,staleMs:n});let s=he({slotsDir:t,staleMs:n}),l=s<i;return{admitted:l,slotId:null,activeSlots:s,maxSlots:i,reason:l?null:`heavy verification at capacity (${s}/${i} slots); waiting for ${e}`}}function dn(e){e<=0||cn(process.execPath,["-e",`const d=Date.now()+${Math.floor(e)};while(Date.now()<d);`],{stdio:"ignore",windowsHide:!0})}function xr(e,r,t=2e3,n={}){let i=Date.now()+Math.max(0,r),s=O(e,n);for(;!s.admitted&&Date.now()<i;)dn(Math.min(t,i-Date.now())),s=O(e,n);return s}function pn(e,r={}){let t=fe(e);if(!t.heavy)return{allowed:!0,outcome:"allowed",commandClass:t.commandClass,reason:"command does not require heavy-verification token",verificationGate:{...q(e),slotId:null}};if(G())return{allowed:!0,outcome:"heavy_verification_skipped",commandClass:t.commandClass,reason:"KYNVER_HEAVY_VERIFICATION_SKIP bypasses gate",verificationGate:{...q(e),slotId:null}};let n=r.waitMs??0,i=n>0?xr(e,n,r.pollMs):O(e);return i.admitted?{allowed:!0,outcome:"allowed",commandClass:t.commandClass,reason:t.reason??"heavy-verification token acquired",verificationGate:i}:{allowed:!1,outcome:V,commandClass:t.commandClass,reason:t.reason??i.reason??V,verificationGate:i}}export{p as DEFAULT_WORKER_PROVIDER,V as HEAVY_VERIFICATION_TOKEN_REQUIRED,z as KYNVER_NO_PROD_DB_CREDENTIALS_ENV,Dr as auditReviewWorkerCredentialScope,Tr as auditWorkerEnv,d as buildWorkerSpawnEnv,fe as classifyHeavyShellCommand,fr as enforceCursorWorkerProvider,pn as gateWorkerShellCommand,c as isClaudeFamilyProvider,_ as isForbiddenWorkerEnvKey,$r as isHarnessExpertReviewWorker,be as isNoProdCredentialReviewEnvironment,_e as listForbiddenWorkerEnvKeys,ke as listOperatorAllowedWorkerEnvKeys,k as normalizeWorkerProviderName,Ft as preferCursorExecutor,Lt as resolveConfiguredWorkerProvider,A as scrubWorkerEnv,pe as taskAllowsClaudeWorker,me as taskExpressesWorkerProviderPreference};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kynver-app/runtime",
3
- "version": "0.2.88",
3
+ "version": "0.2.90",
4
4
  "description": "Kynver AgentOS local execution runtime and CLI",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",