@kynver-app/runtime 0.2.96 → 0.2.100

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 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}
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 ot(e){return e==="~"?Be():e.startsWith("~/")||e.startsWith("~\\")?Le.join(Be(),e.slice(2)):e}function w(e){return Le.resolve(ot(e))}var P=a(()=>{"use strict"});function R(e=process.platform){return e!=="win32"}var Fe=a(()=>{"use strict"});var d=a(()=>{"use strict";Fe()});var it,co,st,po,pe=a(()=>{"use strict";it=["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"],co=new Set(it),st=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],po=new Set(st)});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 je=a(()=>{"use strict"});var To,No,ge=a(()=>{"use strict";To=25*1024*1024*1024,No=12*1024*1024*1024});var Uo,Bo,He=a(()=>{"use strict";ge();Uo=5*1024*1024*1024,Bo=10*1024*1024*1024});var Yo,Vo,he=a(()=>{"use strict";He();ge();Yo=30*1024*1024*1024,Vo=15*1024*1024*1024});var Ve=a(()=>{"use strict";d()});import ct from"node:path";var ri,ye=a(()=>{"use strict";P();Ve();ri=ct.join(".openclaw","harness")});var Z=a(()=>{"use strict";v();_();X();ee();ye()});var Je=a(()=>{"use strict";v();ye();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"});var tr=a(()=>{"use strict"});var nr=a(()=>{"use strict";er();d();re();rr();tr()});var or=a(()=>{"use strict";re()});var ir=a(()=>{"use strict"});var sr=a(()=>{"use strict"});var _e=a(()=>{"use strict"});var ar=a(()=>{"use strict"});var lr=a(()=>{"use strict";_e();ar()});var ur=a(()=>{"use strict";Qe();nr();re();or();ir();z();sr();lr();_e();d()});var cr=a(()=>{"use strict";ur()});var vt,xt,dr=a(()=>{"use strict";je();v();_();X();ee();he();ke();ze();cr();d();vt=500*1024*1024,xt=4*1024*1024*1024});var ee=a(()=>{"use strict";dr()});import{homedir as bt}from"node:os";import Et from"node:path";var pr,ve=a(()=>{"use strict";pr=Et.join(bt(),".kynver",".env")});var mr=a(()=>{"use strict"});var fr=a(()=>{"use strict";mr()});var gr=a(()=>{"use strict"});var hr=a(()=>{"use strict";d()});var xe=a(()=>{"use strict";fr();gr();hr()});var yr=a(()=>{"use strict"});var Rr=a(()=>{"use strict";yr()});var te=a(()=>{"use strict";ve();P();v();xe();Rr()});var kr=a(()=>{"use strict";_();_()});var _r=a(()=>{"use strict";ve();xe();te()});var be=a(()=>{"use strict"});var vr=a(()=>{"use strict";me();_();kr();v();te();_r();fe();be();Z()});function x(e){let r=e.trim().toLowerCase();return Nt[r]??r}var xr,Tt,Nt,ne=a(()=>{"use strict";xr=["claude","cursor","codex","gemini","gemini-api","openai-compatible"],Tt=xr.join("|"),Nt={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 Wt,mkdirSync as _l,readFileSync as Mt,writeFileSync as vl}from"node:fs";import{homedir as Dt,totalmem as bl}from"node:os";import Ee from"node:path";function Ut(e){return{...e,...e.harnessRoot?.trim()?{harnessRoot:w(e.harnessRoot.trim())}:{},...e.defaultRepo?.trim()?{defaultRepo:w(e.defaultRepo.trim())}:{}}}function T(){if(!Wt(br))return{};try{return Ut(JSON.parse(Mt(br,"utf8")))}catch{return{}}}var Er,br,Dl,Ul,Bl,v=a(()=>{"use strict";me();P();fe();_();X();ee();he();te();vr();ne();Z();be();Er=Ee.join(Dt(),".kynver"),br=Ee.join(Er,"config.json"),Dl=Ee.join(Er,"credentials");Ul=500*1024*1024,Bl=4*1024*1024*1024});var Zr=/^claude[-_]/i,et=/^(?:opus|sonnet|haiku)\b/i;function Me(e){let r=e.trim();return Zr.test(r)||et.test(r)}function De(e){let r=e.trim().toLowerCase();return r.startsWith("gpt-")||r.startsWith("gpt5")||r.includes("codex")}function ce(e){let r=e.trim().toLowerCase();return r.includes("composer")||r.includes("cursor")}function Ue(e){return e.trim().toLowerCase().startsWith("gemini-")}function rt(e){return De(e)?"codex":Me(e)?"claude":Ue(e)?"gemini":(ce(e),"cursor")}function tt(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 nt(e){if(!e.startsWith("harness-lane:"))return null;let r=e.split(":").map(o=>o.trim()).filter(Boolean);if(r.length<2)return null;let t=r[1],n=r.slice(2).join(":");return n?Me(n)||De(n)||ce(n)||Ue(n)?{lane:t,model:n,provider:rt(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?tt(r)??nt(r):null}function de(e){let r=f(e);return r?!!(r.provider&&r.provider!=="cursor"||r.model&&!ce(r.model)):!1}v();var Sr={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 Sr[e]}function Cr(){return Object.values(Sr)}import{existsSync as Jt}from"node:fs";import{homedir as zt}from"node:os";import $ from"node:path";import{createHash as Pr}from"node:crypto";import{statSync as qt}from"node:fs";import{spawnSync as Ir}from"node:child_process";import{existsSync as wr,readFileSync as Bt}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},Lt=".COM;.EXE;.BAT;.CMD";function Ft(e){return e.includes("/")||e.includes("\\")}function $t(e){return(e.PATHEXT||Lt).split(";").map(r=>r.trim().toLowerCase()).filter(r=>r.startsWith("."))}function jt(e){let r=Object.keys(e).find(t=>t.toUpperCase()==="PATH");return r?e[r]??"":""}function Ht(e,r={}){let t=r.env??process.env,n=r.exists??wr,o=$t(t),s=b.win32.extname(e)!=="",i=l=>s?[l]:o.map(u=>`${l}${u}`);if(Ft(e)||b.win32.isAbsolute(e))return i(e).find(l=>n(l))??null;for(let l of jt(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 Or=/%~?dp0%?\\?([^"%\r\n]+?\.(?:c|m)?js)\b/i,Yt=/^\s*SET\s+"?([A-Za-z_]\w*)=([^"\r\n]*)"?\s*$/i;function Ar(e){return e.replace(/^[\\/]+/,"")}function Vt(e){let r=e.split(/\r?\n/),t=new Map;for(let s of r){let i=Yt.exec(s);i&&t.set(i[1].toUpperCase(),i[2])}let n=r.filter(s=>s.includes("%*")).pop();if(!n)return null;let o=Or.exec(n);if(o)return Ar(o[1]);for(let s of n.matchAll(/%([A-Za-z_]\w*)%/g)){let i=t.get(s[1].toUpperCase()),l=i?Or.exec(i):null;if(l)return Ar(l[1])}return null}function Gt(e,r={}){if((r.platform??process.platform)!=="win32")return{executable:e,prefixArgs:[],kind:"passthrough"};let n=Ht(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=>Bt(ue,"utf8")),i=r.exists??wr,l;try{l=s(n)}catch{throw new F(n)}let u=Vt(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=Gt(e,t);return[n.executable,[...n.prefixArgs,...r]]}function y(e){try{let r=qt(e),t=`${e}|${r.size}|${r.mtimeMs}`;return Pr("sha256").update(t).digest("hex").slice(0,16)}catch{return}}function K(e){return Pr("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=Ir(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 Ir(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 Xt="codex";function Qt(){let e=zt();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 Zt(e){return $.dirname(e)}function en(e){let r,t;for(let n of Qt()){if(!Jt(n))continue;r??=n;let o=h(e,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status",env:{CODEX_HOME:Zt(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 Tr(e=new Date().toISOString()){let r=g(Xt,["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}=en(r),o=!!t&&n.ok;return{providerId:"codex",ready:o,authSource:"oauth_local",sessionFingerprint:t?y(t):void 0,checkedAt:e,note:o?"Local Codex OAuth session bound on runner":[n.note,t?void 0:"no Codex auth store found"].filter(Boolean).join("; ")}}import{existsSync as rn}from"node:fs";import{homedir as tn}from"node:os";import Se from"node:path";function nn(){let e=process.env.HERMES_HOME?.trim(),r=e?Se.resolve(e):Se.join(tn(),".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=nn(),o=rn(n),s=oe(r,["auth","status","openai-codex"],{okNote:"hermes openai-codex: logged in",failNote:"hermes openai-codex: not logged in"}),i=t.ok&&s.ok;return{path:"hermes_openai_codex",ready:i,authSource:i?"subscription_hermes":"none",sessionFingerprint:o?y(n):void 0,checkedAt:e,note:i?"Hermes openai-codex subscription session bound (ChatGPT Codex OAuth)":[t.note,s.note,o?void 0:"no ~/.hermes/auth.json"].filter(Boolean).join("; ")}}function j(e=new Date().toISOString()){let r=Tr(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 Nr=["low","medium","high"],Kr={oauth_local:0,subscription_hermes:0,runner_token:1,api_key_env:2,none:3};function Wr(e,r){let t=N(e);return r==="privileged"?t.supportsPrivilegedPlatformActions:r==="low"?t.supportsLowRiskOrchestration:!0}function on(e,r){let t=N(e.providerId),n=N(r.providerId),o=Nr.indexOf(t.costTier)-Nr.indexOf(n.costTier);if(o!==0)return o;let s=Kr[e.binding.authSource]-Kr[r.binding.authSource];return s!==0?s:e.providerId.localeCompare(r.providerId)}function Ce(e){let r=Cr().map(l=>({providerId:l.id,binding:e.inventory.bindings[l.id]})).filter(l=>l.binding.ready&&Wr(l.providerId,e.riskClass));if(r.length===0)return null;let n=[...r].sort(on)[0],o="codex";if(n.providerId===o)return{providerId:n.providerId,binding:n.binding};let s=e.inventory.bindings[o],i;return Wr(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 sn}from"node:fs";import{homedir as an}from"node:os";import ln from"node:path";var un="claude";function cn(){let e=an();return[ln.join(e,".claude",".credentials.json")]}function Mr(e=new Date().toISOString()){let r=g(un,["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=cn().find(i=>sn(i)),o=oe(r,["auth","status"],{okNote:"claude auth status: authenticated",failNote:"claude auth status: not authenticated"}),s=t.ok&&(o.ok||!!n);return{providerId:"claude",ready:s,authSource:"oauth_local",sessionFingerprint:n?y(n):void 0,checkedAt:e,note:s?"Local Claude Code OAuth session bound on runner":[t.note,o.note,n?void 0:"no ~/.claude/.credentials.json"].filter(Boolean).join("; ")}}import{existsSync as kn}from"node:fs";import{homedir as Rn}from"node:os";import M from"node:path";import{closeSync as Eu,existsSync as gn,mkdirSync as Su,openSync as Cu,statSync as Ou,unlinkSync as Au}from"node:fs";d();import W from"node:path";pe();import{existsSync as H,readdirSync as dn}from"node:fs";import S from"node:path";var pn=/^\d{4}\.\d{1,2}\.\d{1,2}-[a-f0-9]+$/i;function mn(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 fn(e){let r=S.join(e,"versions");if(!H(r))return null;let t=null,n=-1;for(let o of dn(r,{withFileTypes:!0})){if(!o.isDirectory()||!pn.test(o.name))continue;let s=mn(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(H(t)&&H(n))return{nodeExe:t,indexJs:n,versionDir:r};let o=fn(r);if(!o)return null;let s=S.join(o,"node.exe"),i=S.join(o,"index.js");return!H(s)||!H(i)?null:{nodeExe:s,indexJs:i,versionDir:o}}function hn(e,r,t){return{executable:e,prefixArgs:[r],shell:!1,detached:R(),bundledVersionDir:t}}function Dr(e){if(process.platform==="win32"){let r=/\.(cmd|bat)$/i.test(e),t=/node\.exe$/i.test(e)&&gn(W.join(W.dirname(e),"index.js"));if(r||t||e==="agent"){let o=r?Oe(W.dirname(e)):t?{nodeExe:e,indexJs:W.join(W.dirname(e),"index.js"),versionDir:W.dirname(e)}:Oe();if(o)return hn(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:R()}}import{spawnSync as yn}from"node:child_process";function Ae(e,r=process.env){try{let t;try{t=Dr(e)}catch{t={executable:e,prefixArgs:[]}}let n=yn(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=Rn();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 _n="agent";function Ur(e=new Date().toISOString()){let r=g(_n,["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=>kn(l)),o=Ae(r),s=!!n||o.ok,i=t.ok&&s;return{providerId:"cursor",ready:i,authSource:"oauth_local",sessionFingerprint:n?y(n):void 0,checkedAt:e,note:i?"Local Cursor/Composer OAuth session bound on runner":[t.note,s?void 0:o.note??"no ~/.config/cursor/auth.json or `agent login` session"].filter(Boolean).join("; ")}}import{existsSync as vn,readFileSync as xn}from"node:fs";import{homedir as bn}from"node:os";import Pe from"node:path";var En=["OPENAI_API_KEY","ANTHROPIC_API_KEY","KYNVER_API_KEY","KYNVER_BASE_URL"];function Sn(){let e=process.env.HERMES_HOME?.trim(),r=e?Pe.resolve(e):Pe.join(bn(),".hermes");return Pe.join(r,".env")}function Cn(e){try{let r=xn(e,"utf8"),t=[];for(let n of En)new RegExp(`^${n}=`,"m").test(r)&&t.push(n);return t}catch{return[]}}function Br(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=Sn(),o=vn(n),s=o?Cn(n):[],l=s.some(c=>c.endsWith("_API_KEY"))?"api_key_env":o?"oauth_local":"none",u=t.ok&&o;return{adapterId:"hermes",cliAvailable:t.ok,profileBound:o,authSource:l,sessionFingerprint:o?y(n):void 0,checkedAt:e,note:u?`Hermes profile bound (${s.length?`keys: ${s.join(", ")}`:"no API keys detected"})`:[t.note,o?void 0:"no ~/.hermes/.env"].filter(Boolean).join("; ")}}function Lr(e={}){let r=e.nowIso?.()??new Date().toISOString(),t=j(r),n={codex:t,cursor:Ur(r),claude:Mr(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:Br(r),hermesOpenAiCodex:ie(r),codexAdapterPath:t.path,readyCount:o}}var On=[/\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],An=[/\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 wn(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=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")}
3
+ ${n}`;return On.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":An.some(s=>s.test(o))?"low":"elevated"}function Pn(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 In(e){let r=e.inventory??Lr();return e.codexBinding?{...r,bindings:{...r.bindings,codex:e.codexBinding}}:r}function C(e){let r=Pn({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 Fr(e){let r=e.task??{},t=wn(r),n=In({inventory:e.inventory,codexBinding:e.codexBinding??(e.inventory?null:j())}),o=e.preferLowCost===!1?null:e.explicitProvider?.trim().toLowerCase(),s=e.explicitModel?.trim()||void 0,i=D;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 $r="kynver",jr=["agent_os_context_envelope","agent_os_search_memory","agent_os_search_skills","agent_os_get_skill","agent_os_progress_note"],Tn=jr.map(e=>`mcp__${$r}__${e}`);var V="claude-sonnet-4-6",G="claude-opus-4-8";d();d();var wc=process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.5";function Kn(){return process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.5"}var U=Kn();d();var Te="openai-compatible",id=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 Od=600*1e3;var Vr="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=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};
5
+ ${m(e,"executorRef")}`.match(/\[(?:worker-)?model:\s*([^\]\n]+)\]/i)?.[1]?.trim()||void 0}function Hr(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||Vr}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 Un(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 Yr(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 Bn=new Set(["report_reviewer","deep_reviewer","plan_reviewer"]);function Gr(e,r,t){return Bn.has(e)?G:r.includes("review")||/^review[\s:]/.test(t)||t.includes("critique")?G:V}function qr(e){let r=Hr(m(e,"executorRef")),t=m(e,"title").toLowerCase(),n=m(e,"priority")||"normal",o=Hr(m(e,"roleLane"));if(r.includes("provider:claude")||r.startsWith("claude:")){let i=Gr(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 Yr(r,t)||o==="deep_reviewer"?{provider:"cursor",rule:"lane:deep_review"}:{provider:"cursor",rule:"lane:review"};if(Yr(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 Ln(e){return e?f(m(e,"executorRef")):null}function Fn(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",Jr="config:worker_provider";function zr(e,r,t){let n=x(r);return n===e.provider&&e.rule===t?e:{...e,provider:n,model:Fn(n)??e.model,rule:t}}function $n(e,r){let t=r?.trim();return!t||e.rule.startsWith("explicit:")&&e.rule!==Ne?e:zr(e,t,Ne)}function jn(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===D||n===e.provider?e:zr(e,n,Jr)}function Hn(e){let r,t=Ln(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=Un(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():"",We=typeof e.task.executorRef=="string"?e.task.executorRef.toLowerCase():"",ue=typeof e.task.title=="string"?e.task.title.toLowerCase():"";c=Gr(L,We,ue),p=c===G?"factory:claude_review":"factory:claude_implementation"}r={model:c,provider:"claude",rule:p,requestedModel:c}}else if(e.task&&Object.keys(e.task).length>0){let u=qr(e.task);r={...u,requestedModel:u.model}}else{let u=le();r={model:u,provider:e.explicitProvider?.trim()||se(u),rule:"default:global",requestedModel:u}}r=$n(r,e.explicitProvider),r=jn(r,{explicitProvider:e.explicitProvider,task:e.task,configuredProvider:e.configuredProvider});let s=!!e.configuredProvider?.trim()&&x(e.configuredProvider)!==D&&r.rule==="config:worker_provider",i=Xr({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===Jr||k(i.provider)&&(e.explicitProviderIsOperatorOverride||ae(e.task))||i.provider===Te||i.provider===O||i.provider===B||i.provider==="codex")return i;let l=Fr({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 Yn(e,r,t){return e||r||t||le()||V}ne();ne();var D="cursor",Vn=new Set(["claude","opus","anthropic"]),Gn=[/\[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 Vn.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(qn(n.model)))return!0;let o=J(e,"description");if(Gn.some(i=>i.test(o)))return!0;let s=J(e,"title");return!!/\[use-claude-worker\]/i.test(s)}function qn(e){let r=e.trim().toLowerCase();return/^claude[-_]/.test(r)||/^(?:opus|sonnet|haiku)\b/.test(r)?"claude":r}function Jn(e,r){return{provider:D,model:q,rule:`policy:cursor_default${r}`,requestedModel:e}}var zn=["explicit:","executor_ref:","factory:","task:"];function Xn(e){return zn.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 Xr(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||Xn(r.rule)||Ke(t)||!k(r.provider))return r;let o=r.rule&&r.rule!=="default:global"?`:${r.rule.replace(/:/g,"_")}`:"";return Jn(r.model,o)}function Qn(e){let r=e?.executorRef;return typeof r=="string"?r.trim():""}function Qr(e){return e?.trim()||void 0}function Zn(e){let r=Qn(e.task),t=f(r),n=e.explicitProvider?.trim().toLowerCase(),o=Qr(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=Qr(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,Vr as GLOBAL_DEFAULT_MODEL,Zn as assessDispatchModelGuard,de as executorRefRequestsNonCursorWorker,qr as inferModelRoutingFromTask,f as parseExecutorRefRoutingIntent,le as resolveGlobalDefaultModel,Yn as resolveModelFallback,Hn 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 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}
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 ot(e){return e==="~"?Be():e.startsWith("~/")||e.startsWith("~\\")?Le.join(Be(),e.slice(2)):e}function w(e){return Le.resolve(ot(e))}var P=a(()=>{"use strict"});function R(e=process.platform){return e!=="win32"}var Fe=a(()=>{"use strict"});var d=a(()=>{"use strict";Fe()});var it,co,st,po,pe=a(()=>{"use strict";it=["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"],co=new Set(it),st=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],po=new Set(st)});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 je=a(()=>{"use strict"});var To,No,ge=a(()=>{"use strict";To=25*1024*1024*1024,No=12*1024*1024*1024});var Uo,Bo,He=a(()=>{"use strict";ge();Uo=5*1024*1024*1024,Bo=10*1024*1024*1024});var Yo,Vo,he=a(()=>{"use strict";He();ge();Yo=30*1024*1024*1024,Vo=15*1024*1024*1024});var Ve=a(()=>{"use strict";d()});import ct from"node:path";var ri,ye=a(()=>{"use strict";P();Ve();ri=ct.join(".openclaw","harness")});var Z=a(()=>{"use strict";v();_();X();ee();ye()});var Je=a(()=>{"use strict";v();ye();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"});var tr=a(()=>{"use strict"});var nr=a(()=>{"use strict";er();d();re();rr();tr()});var or=a(()=>{"use strict";re()});var ir=a(()=>{"use strict"});var sr=a(()=>{"use strict"});var _e=a(()=>{"use strict"});var ar=a(()=>{"use strict"});var lr=a(()=>{"use strict";_e();ar()});var ur=a(()=>{"use strict";Qe();nr();re();or();ir();z();sr();lr();_e();d()});var cr=a(()=>{"use strict";ur()});var vt,xt,dr=a(()=>{"use strict";je();v();_();X();ee();he();ke();ze();cr();d();vt=500*1024*1024,xt=4*1024*1024*1024});var ee=a(()=>{"use strict";dr()});import{homedir as bt}from"node:os";import Et from"node:path";var pr,ve=a(()=>{"use strict";pr=Et.join(bt(),".kynver",".env")});var mr=a(()=>{"use strict"});var fr=a(()=>{"use strict";mr()});var gr=a(()=>{"use strict"});var hr=a(()=>{"use strict";d()});var xe=a(()=>{"use strict";fr();gr();hr()});var yr=a(()=>{"use strict"});var Rr=a(()=>{"use strict";yr()});var te=a(()=>{"use strict";ve();P();v();xe();Rr()});var kr=a(()=>{"use strict";_();_()});var _r=a(()=>{"use strict";ve();xe();te()});var be=a(()=>{"use strict"});var vr=a(()=>{"use strict";me();_();kr();v();te();_r();fe();be();Z()});function x(e){let r=e.trim().toLowerCase();return Nt[r]??r}var xr,Tt,Nt,ne=a(()=>{"use strict";xr=["claude","cursor","codex","gemini","gemini-api","openai-compatible"],Tt=xr.join("|"),Nt={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 Wt,mkdirSync as _l,readFileSync as Mt,writeFileSync as vl}from"node:fs";import{homedir as Dt,totalmem as bl}from"node:os";import Ee from"node:path";function Ut(e){return{...e,...e.harnessRoot?.trim()?{harnessRoot:w(e.harnessRoot.trim())}:{},...e.defaultRepo?.trim()?{defaultRepo:w(e.defaultRepo.trim())}:{}}}function T(){if(!Wt(br))return{};try{return Ut(JSON.parse(Mt(br,"utf8")))}catch{return{}}}var Er,br,Dl,Ul,Bl,v=a(()=>{"use strict";me();P();fe();_();X();ee();he();te();vr();ne();Z();be();Er=Ee.join(Dt(),".kynver"),br=Ee.join(Er,"config.json"),Dl=Ee.join(Er,"credentials");Ul=500*1024*1024,Bl=4*1024*1024*1024});var Zr=/^claude[-_]/i,et=/^(?:opus|sonnet|haiku)\b/i;function Me(e){let r=e.trim();return Zr.test(r)||et.test(r)}function De(e){let r=e.trim().toLowerCase();return r.startsWith("gpt-")||r.startsWith("gpt5")||r.includes("codex")}function ce(e){let r=e.trim().toLowerCase();return r.includes("composer")||r.includes("cursor")}function Ue(e){return e.trim().toLowerCase().startsWith("gemini-")}function rt(e){return De(e)?"codex":Me(e)?"claude":Ue(e)?"gemini":(ce(e),"cursor")}function tt(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 nt(e){if(!e.startsWith("harness-lane:"))return null;let r=e.split(":").map(o=>o.trim()).filter(Boolean);if(r.length<2)return null;let t=r[1],n=r.slice(2).join(":");return n?Me(n)||De(n)||ce(n)||Ue(n)?{lane:t,model:n,provider:rt(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?tt(r)??nt(r):null}function de(e){let r=f(e);return r?!!(r.provider&&r.provider!=="cursor"||r.model&&!ce(r.model)):!1}v();var Sr={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 Sr[e]}function Cr(){return Object.values(Sr)}import{existsSync as Jt}from"node:fs";import{homedir as zt}from"node:os";import $ from"node:path";import{createHash as Pr}from"node:crypto";import{statSync as qt}from"node:fs";import{spawnSync as Ir}from"node:child_process";import{existsSync as wr,readFileSync as Bt}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},Lt=".COM;.EXE;.BAT;.CMD";function Ft(e){return e.includes("/")||e.includes("\\")}function $t(e){return(e.PATHEXT||Lt).split(";").map(r=>r.trim().toLowerCase()).filter(r=>r.startsWith("."))}function jt(e){let r=Object.keys(e).find(t=>t.toUpperCase()==="PATH");return r?e[r]??"":""}function Ht(e,r={}){let t=r.env??process.env,n=r.exists??wr,o=$t(t),s=b.win32.extname(e)!=="",i=l=>s?[l]:o.map(u=>`${l}${u}`);if(Ft(e)||b.win32.isAbsolute(e))return i(e).find(l=>n(l))??null;for(let l of jt(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 Or=/%~?dp0%?\\?([^"%\r\n]+?\.(?:c|m)?js)\b/i,Yt=/^\s*SET\s+"?([A-Za-z_]\w*)=([^"\r\n]*)"?\s*$/i;function Ar(e){return e.replace(/^[\\/]+/,"")}function Vt(e){let r=e.split(/\r?\n/),t=new Map;for(let s of r){let i=Yt.exec(s);i&&t.set(i[1].toUpperCase(),i[2])}let n=r.filter(s=>s.includes("%*")).pop();if(!n)return null;let o=Or.exec(n);if(o)return Ar(o[1]);for(let s of n.matchAll(/%([A-Za-z_]\w*)%/g)){let i=t.get(s[1].toUpperCase()),l=i?Or.exec(i):null;if(l)return Ar(l[1])}return null}function Gt(e,r={}){if((r.platform??process.platform)!=="win32")return{executable:e,prefixArgs:[],kind:"passthrough"};let n=Ht(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=>Bt(ue,"utf8")),i=r.exists??wr,l;try{l=s(n)}catch{throw new F(n)}let u=Vt(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=Gt(e,t);return[n.executable,[...n.prefixArgs,...r]]}function y(e){try{let r=qt(e),t=`${e}|${r.size}|${r.mtimeMs}`;return Pr("sha256").update(t).digest("hex").slice(0,16)}catch{return}}function K(e){return Pr("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=Ir(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 Ir(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 Xt="codex";function Qt(){let e=zt();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 Zt(e){return $.dirname(e)}function en(e){let r,t;for(let n of Qt()){if(!Jt(n))continue;r??=n;let o=h(e,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status",env:{CODEX_HOME:Zt(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 Tr(e=new Date().toISOString()){let r=g(Xt,["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}=en(r),o=!!t&&n.ok;return{providerId:"codex",ready:o,authSource:"oauth_local",sessionFingerprint:t?y(t):void 0,checkedAt:e,note:o?"Local Codex OAuth session bound on runner":[n.note,t?void 0:"no Codex auth store found"].filter(Boolean).join("; ")}}import{existsSync as rn}from"node:fs";import{homedir as tn}from"node:os";import Se from"node:path";function nn(){let e=process.env.HERMES_HOME?.trim(),r=e?Se.resolve(e):Se.join(tn(),".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=nn(),o=rn(n),s=oe(r,["auth","status","openai-codex"],{okNote:"hermes openai-codex: logged in",failNote:"hermes openai-codex: not logged in"}),i=t.ok&&s.ok;return{path:"hermes_openai_codex",ready:i,authSource:i?"subscription_hermes":"none",sessionFingerprint:o?y(n):void 0,checkedAt:e,note:i?"Hermes openai-codex subscription session bound (ChatGPT Codex OAuth)":[t.note,s.note,o?void 0:"no ~/.hermes/auth.json"].filter(Boolean).join("; ")}}function j(e=new Date().toISOString()){let r=Tr(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 Nr=["low","medium","high"],Kr={oauth_local:0,subscription_hermes:0,runner_token:1,api_key_env:2,none:3};function Wr(e,r){let t=N(e);return r==="privileged"?t.supportsPrivilegedPlatformActions:r==="low"?t.supportsLowRiskOrchestration:!0}function on(e,r){let t=N(e.providerId),n=N(r.providerId),o=Nr.indexOf(t.costTier)-Nr.indexOf(n.costTier);if(o!==0)return o;let s=Kr[e.binding.authSource]-Kr[r.binding.authSource];return s!==0?s:e.providerId.localeCompare(r.providerId)}function Ce(e){let r=Cr().map(l=>({providerId:l.id,binding:e.inventory.bindings[l.id]})).filter(l=>l.binding.ready&&Wr(l.providerId,e.riskClass));if(r.length===0)return null;let n=[...r].sort(on)[0],o="codex";if(n.providerId===o)return{providerId:n.providerId,binding:n.binding};let s=e.inventory.bindings[o],i;return Wr(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 sn}from"node:fs";import{homedir as an}from"node:os";import ln from"node:path";var un="claude";function cn(){let e=an();return[ln.join(e,".claude",".credentials.json")]}function Mr(e=new Date().toISOString()){let r=g(un,["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=cn().find(i=>sn(i)),o=oe(r,["auth","status"],{okNote:"claude auth status: authenticated",failNote:"claude auth status: not authenticated"}),s=t.ok&&(o.ok||!!n);return{providerId:"claude",ready:s,authSource:"oauth_local",sessionFingerprint:n?y(n):void 0,checkedAt:e,note:s?"Local Claude Code OAuth session bound on runner":[t.note,o.note,n?void 0:"no ~/.claude/.credentials.json"].filter(Boolean).join("; ")}}import{existsSync as kn}from"node:fs";import{homedir as Rn}from"node:os";import M from"node:path";import{closeSync as Eu,existsSync as gn,mkdirSync as Su,openSync as Cu,statSync as Ou,unlinkSync as Au}from"node:fs";d();import W from"node:path";pe();import{existsSync as H,readdirSync as dn}from"node:fs";import S from"node:path";var pn=/^\d{4}\.\d{1,2}\.\d{1,2}-[a-f0-9]+$/i;function mn(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 fn(e){let r=S.join(e,"versions");if(!H(r))return null;let t=null,n=-1;for(let o of dn(r,{withFileTypes:!0})){if(!o.isDirectory()||!pn.test(o.name))continue;let s=mn(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(H(t)&&H(n))return{nodeExe:t,indexJs:n,versionDir:r};let o=fn(r);if(!o)return null;let s=S.join(o,"node.exe"),i=S.join(o,"index.js");return!H(s)||!H(i)?null:{nodeExe:s,indexJs:i,versionDir:o}}function hn(e,r,t){return{executable:e,prefixArgs:[r],shell:!1,detached:R(),bundledVersionDir:t}}function Dr(e){if(process.platform==="win32"){let r=/\.(cmd|bat)$/i.test(e),t=/node\.exe$/i.test(e)&&gn(W.join(W.dirname(e),"index.js"));if(r||t||e==="agent"){let o=r?Oe(W.dirname(e)):t?{nodeExe:e,indexJs:W.join(W.dirname(e),"index.js"),versionDir:W.dirname(e)}:Oe();if(o)return hn(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:R()}}import{spawnSync as yn}from"node:child_process";function Ae(e,r=process.env){try{let t;try{t=Dr(e)}catch{t={executable:e,prefixArgs:[]}}let n=yn(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=Rn();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 _n="agent";function Ur(e=new Date().toISOString()){let r=g(_n,["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=>kn(l)),o=Ae(r),s=!!n||o.ok,i=t.ok&&s;return{providerId:"cursor",ready:i,authSource:"oauth_local",sessionFingerprint:n?y(n):void 0,checkedAt:e,note:i?"Local Cursor/Composer OAuth session bound on runner":[t.note,s?void 0:o.note??"no ~/.config/cursor/auth.json or `agent login` session"].filter(Boolean).join("; ")}}import{existsSync as vn,readFileSync as xn}from"node:fs";import{homedir as bn}from"node:os";import Pe from"node:path";var En=["OPENAI_API_KEY","ANTHROPIC_API_KEY","KYNVER_API_KEY","KYNVER_BASE_URL"];function Sn(){let e=process.env.HERMES_HOME?.trim(),r=e?Pe.resolve(e):Pe.join(bn(),".hermes");return Pe.join(r,".env")}function Cn(e){try{let r=xn(e,"utf8"),t=[];for(let n of En)new RegExp(`^${n}=`,"m").test(r)&&t.push(n);return t}catch{return[]}}function Br(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=Sn(),o=vn(n),s=o?Cn(n):[],l=s.some(c=>c.endsWith("_API_KEY"))?"api_key_env":o?"oauth_local":"none",u=t.ok&&o;return{adapterId:"hermes",cliAvailable:t.ok,profileBound:o,authSource:l,sessionFingerprint:o?y(n):void 0,checkedAt:e,note:u?`Hermes profile bound (${s.length?`keys: ${s.join(", ")}`:"no API keys detected"})`:[t.note,o?void 0:"no ~/.hermes/.env"].filter(Boolean).join("; ")}}function Lr(e={}){let r=e.nowIso?.()??new Date().toISOString(),t=j(r),n={codex:t,cursor:Ur(r),claude:Mr(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:Br(r),hermesOpenAiCodex:ie(r),codexAdapterPath:t.path,readyCount:o}}var On=[/\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],An=[/\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 wn(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=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")}
3
+ ${n}`;return On.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":An.some(s=>s.test(o))?"low":"elevated"}function Pn(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 In(e){let r=e.inventory??Lr();return e.codexBinding?{...r,bindings:{...r.bindings,codex:e.codexBinding}}:r}function C(e){let r=Pn({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 Fr(e){let r=e.task??{},t=wn(r),n=In({inventory:e.inventory,codexBinding:e.codexBinding??(e.inventory?null:j())}),o=e.preferLowCost===!1?null:e.explicitProvider?.trim().toLowerCase(),s=e.explicitModel?.trim()||void 0,i=D;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 $r="kynver",jr=["agent_os_context_envelope","agent_os_search_memory","agent_os_search_skills","agent_os_get_skill","agent_os_progress_note"],Tn=jr.map(e=>`mcp__${$r}__${e}`);var V="claude-sonnet-4-6",G="claude-opus-4-8";d();d();var wc=process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.5";function Kn(){return process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.5"}var U=Kn();d();var Te="openai-compatible",id=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 Od=600*1e3;var Vr="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=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};
5
+ ${m(e,"executorRef")}`.match(/\[(?:worker-)?model:\s*([^\]\n]+)\]/i)?.[1]?.trim()||void 0}function Hr(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||Vr}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 Un(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 Yr(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 Bn=new Set(["report_reviewer","deep_reviewer","plan_reviewer"]);function Gr(e,r,t){return Bn.has(e)?G:r.includes("review")||/^review[\s:]/.test(t)||t.includes("critique")?G:V}function qr(e){let r=Hr(m(e,"executorRef")),t=m(e,"title").toLowerCase(),n=m(e,"priority")||"normal",o=Hr(m(e,"roleLane"));if(r.includes("provider:claude")||r.startsWith("claude:")){let i=Gr(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 Yr(r,t)||o==="deep_reviewer"?{provider:"cursor",rule:"lane:deep_review"}:{provider:"cursor",rule:"lane:review"};if(Yr(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 Ln(e){return e?f(m(e,"executorRef")):null}function Fn(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",Jr="config:worker_provider";function zr(e,r,t){let n=x(r);return n===e.provider&&e.rule===t?e:{...e,provider:n,model:Fn(n)??e.model,rule:t}}function $n(e,r){let t=r?.trim();return!t||e.rule.startsWith("explicit:")&&e.rule!==Ne?e:zr(e,t,Ne)}function jn(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===D||n===e.provider?e:zr(e,n,Jr)}function Hn(e){let r,t=Ln(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=Un(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():"",We=typeof e.task.executorRef=="string"?e.task.executorRef.toLowerCase():"",ue=typeof e.task.title=="string"?e.task.title.toLowerCase():"";c=Gr(L,We,ue),p=c===G?"factory:claude_review":"factory:claude_implementation"}r={model:c,provider:"claude",rule:p,requestedModel:c}}else if(e.task&&Object.keys(e.task).length>0){let u=qr(e.task);r={...u,requestedModel:u.model}}else{let u=le();r={model:u,provider:e.explicitProvider?.trim()||se(u),rule:"default:global",requestedModel:u}}r=$n(r,e.explicitProvider),r=jn(r,{explicitProvider:e.explicitProvider,task:e.task,configuredProvider:e.configuredProvider});let s=!!e.configuredProvider?.trim()&&x(e.configuredProvider)!==D&&r.rule==="config:worker_provider",i=Xr({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===Jr||k(i.provider)&&(e.explicitProviderIsOperatorOverride||ae(e.task))||i.provider===Te||i.provider===O||i.provider===B||i.provider==="codex")return i;let l=Fr({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 Yn(e,r,t){return e||r||t||le()||V}ne();ne();var D="cursor",Vn=new Set(["claude","opus","anthropic"]),Gn=[/\[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 Vn.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(qn(n.model)))return!0;let o=J(e,"description");if(Gn.some(i=>i.test(o)))return!0;let s=J(e,"title");return!!/\[use-claude-worker\]/i.test(s)}function qn(e){let r=e.trim().toLowerCase();return/^claude[-_]/.test(r)||/^(?:opus|sonnet|haiku)\b/.test(r)?"claude":r}function Jn(e,r){return{provider:D,model:q,rule:`policy:cursor_default${r}`,requestedModel:e}}var zn=["explicit:","executor_ref:","factory:","task:"];function Xn(e){return zn.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 Xr(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||Xn(r.rule)||Ke(t)||!k(r.provider))return r;let o=r.rule&&r.rule!=="default:global"?`:${r.rule.replace(/:/g,"_")}`:"";return Jn(r.model,o)}function Qn(e){let r=e?.executorRef;return typeof r=="string"?r.trim():""}function Qr(e){return e?.trim()||void 0}function Zn(e){let r=Qn(e.task),t=f(r),n=e.explicitProvider?.trim().toLowerCase(),o=Qr(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=Qr(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,Vr as GLOBAL_DEFAULT_MODEL,Zn as assessDispatchModelGuard,de as executorRefRequestsNonCursorWorker,qr as inferModelRoutingFromTask,f as parseExecutorRefRoutingIntent,le as resolveGlobalDefaultModel,Yn as resolveModelFallback,Hn as resolveWorkerLaunch};