@kynver-app/runtime 0.2.77 → 0.2.78

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 Oe}from"node:os";import Ce from"node:path";function Ur(e){return e==="~"?Oe():e.startsWith("~/")||e.startsWith("~\\")?Ce.join(Oe(),e.slice(2)):e}function S(e){return Ce.resolve(Ur(e))}var O=a(()=>{"use strict"});var d=a(()=>{"use strict"});var Lr,Sn,Fr,On,te=a(()=>{"use strict";Lr=["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"],Sn=new Set(Lr),Fr=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],On=new Set(Fr)});var L=a(()=>{"use strict";O();d();te()});var Ae=a(()=>{"use strict";L()});var ne=a(()=>{"use strict";L();O();Ae()});var oe=a(()=>{"use strict";d()});var k=a(()=>{"use strict"});var F=a(()=>{"use strict"});var Pe=a(()=>{"use strict"});var Vn,Gn,ie=a(()=>{"use strict";Vn=25*1024*1024*1024,Gn=12*1024*1024*1024});var Qn,Zn,we=a(()=>{"use strict";ie();Qn=5*1024*1024*1024,Zn=10*1024*1024*1024});var io,so,se=a(()=>{"use strict";we();ie();io=30*1024*1024*1024,so=15*1024*1024*1024});var Ne=a(()=>{"use strict";d()});import Yr from"node:path";var ho,ae=a(()=>{"use strict";O();Ne();ho=Yr.join(".openclaw","harness")});var H=a(()=>{"use strict";_();k();F();j();ae()});var Ke=a(()=>{"use strict";_();ae();H();d()});var ce=a(()=>{"use strict";Ke();d()});var Me=a(()=>{"use strict";ce();d()});var Be=a(()=>{"use strict"});var De=a(()=>{"use strict";Be();d()});var Ue=a(()=>{"use strict"});var Le=a(()=>{"use strict";Ue()});var Y=a(()=>{"use strict"});var Fe=a(()=>{"use strict";Le();d();Y()});var $e=a(()=>{"use strict";Y()});var He=a(()=>{"use strict"});var je=a(()=>{"use strict"});var ue=a(()=>{"use strict"});var Ye=a(()=>{"use strict"});var Ve=a(()=>{"use strict";ue();Ye()});var Ge=a(()=>{"use strict";De();Fe();Y();$e();He();L();je();Ve();ue();d()});var qe=a(()=>{"use strict";Ge()});var rt,tt,ze=a(()=>{"use strict";Pe();_();k();F();j();se();ce();Me();qe();d();rt=500*1024*1024,tt=4*1024*1024*1024});var j=a(()=>{"use strict";ze()});import{homedir as nt}from"node:os";import ot from"node:path";var Je,de=a(()=>{"use strict";Je=ot.join(nt(),".kynver",".env")});var Xe=a(()=>{"use strict"});var Qe=a(()=>{"use strict";Xe()});var Ze=a(()=>{"use strict"});var pe=a(()=>{"use strict";Qe();Ze()});var er=a(()=>{"use strict"});var rr=a(()=>{"use strict";er()});var V=a(()=>{"use strict";de();O();_();pe();rr()});var tr=a(()=>{"use strict";k();k()});var nr=a(()=>{"use strict";de();pe();V()});var or=a(()=>{"use strict";ne();k();tr();_();V();nr();oe();H()});function v(e){let r=e.trim().toLowerCase();return mt[r]??r}var ir,pt,mt,G=a(()=>{"use strict";ir=["claude","cursor","codex","gemini","gemini-api","openai-compatible"],pt=ir.join("|"),mt={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 gt,mkdirSync as ya,readFileSync as ht,writeFileSync as Ra}from"node:fs";import{homedir as yt,totalmem as _a}from"node:os";import me from"node:path";function Rt(e){return{...e,...e.harnessRoot?.trim()?{harnessRoot:S(e.harnessRoot.trim())}:{},...e.defaultRepo?.trim()?{defaultRepo:S(e.defaultRepo.trim())}:{}}}function C(){if(!gt(sr))return{};try{return Rt(JSON.parse(ht(sr,"utf8")))}catch{return{}}}var ar,sr,Ta,Wa,Ka,_=a(()=>{"use strict";ne();O();oe();k();F();j();se();V();or();G();H();ar=me.join(yt(),".kynver"),sr=me.join(ar,"config.json"),Ta=me.join(ar,"credentials");Wa=500*1024*1024,Ka=4*1024*1024*1024});var Wr=/^claude[-_]/i,Kr=/^(?:opus|sonnet|haiku)\b/i;function xe(e){let r=e.trim();return Wr.test(r)||Kr.test(r)}function Ee(e){let r=e.trim().toLowerCase();return r.startsWith("gpt-")||r.startsWith("gpt5")||r.includes("codex")}function ee(e){let r=e.trim().toLowerCase();return r.includes("composer")||r.includes("cursor")}function Se(e){return e.trim().toLowerCase().startsWith("gemini-")}function Mr(e){return Ee(e)?"codex":xe(e)?"claude":Se(e)?"gemini":(ee(e),"cursor")}function Br(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 Dr(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?xe(n)||Ee(n)||ee(n)||Se(n)?{lane:t,model:n,provider:Mr(n),rule:"executor_ref:harness_lane_model"}:{lane:t,rule:"executor_ref:harness_lane"}:{lane:t,rule:"executor_ref:harness_lane"}}function m(e){let r=typeof e=="string"?e.trim():"";return r?Br(r)??Dr(r):null}function re(e){let r=m(e);return r?!!(r.provider&&r.provider!=="cursor"||r.model&&!ee(r.model)):!1}_();var lr={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 A(e){return lr[e]}function cr(){return Object.values(lr)}import{existsSync as _t}from"node:fs";import{homedir as vt}from"node:os";import W from"node:path";import{createHash as ur}from"node:crypto";import{statSync as kt}from"node:fs";import{spawnSync as dr}from"node:child_process";function y(e){try{let r=kt(e),t=`${e}|${r.size}|${r.mtimeMs}`;return ur("sha256").update(t).digest("hex").slice(0,16)}catch{return}}function P(e){return ur("sha256").update(`env:${e}`).digest("hex").slice(0,16)}function g(e,r){for(let t of r){let n=process.env[t]?.trim();if(n)return n}return e}function h(e,r,t={}){let n=t.timeoutMs??8e3;try{let o=dr(e,r,{encoding:"utf8",timeout:n,env:{...process.env,...t.env,CI:"1",NO_COLOR:"1"}});if(o.status===0)return{ok:!0,note:t.okNote??`${e} ${r.join(" ")}: ok`};let s=(o.stderr||o.stdout||"").trim(),i=t.failPrefix??`${e} ${r.join(" ")} failed`;return{ok:!1,note:s?`${i}: ${s.slice(0,200)}`:i}}catch(o){return{ok:!1,note:o instanceof Error?o.message:`${e} probe failed`}}}function q(e,r,t={}){let n=t.timeoutMs??8e3;try{return dr(e,r,{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 bt="codex";function xt(){let e=vt();return[process.env.CODEX_HOME?.trim()?W.join(W.resolve(process.env.CODEX_HOME.trim()),"auth.json"):null,W.join(e,".codex","auth.json"),W.join(e,".config","codex","auth.json")].filter(t=>!!t)}function Et(e){return W.dirname(e)}function St(e){let r,t;for(let n of xt()){if(!_t(n))continue;r??=n;let o=h(e,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status",env:{CODEX_HOME:Et(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(bt,["KYNVER_CODEX_BIN","CODEX_BIN"]);if(process.env.CODEX_API_KEY?.trim())return{providerId:"codex",ready:!0,authSource:"api_key_env",sessionFingerprint:P("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}=St(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 Ot}from"node:fs";import{homedir as Ct}from"node:os";import fe from"node:path";function At(){let e=process.env.HERMES_HOME?.trim(),r=e?fe.resolve(e):fe.join(Ct(),".hermes");return fe.join(r,"auth.json")}function z(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=At(),o=Ot(n),s=q(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 K(e=new Date().toISOString()){let r=pr(e);if(r.ready)return{...r,path:"codex_cli"};let t=z(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 mr=["low","medium","high"],fr={oauth_local:0,subscription_hermes:0,runner_token:1,api_key_env:2,none:3};function gr(e,r){let t=A(e);return r==="privileged"?t.supportsPrivilegedPlatformActions:r==="low"?t.supportsLowRiskOrchestration:!0}function Pt(e,r){let t=A(e.providerId),n=A(r.providerId),o=mr.indexOf(t.costTier)-mr.indexOf(n.costTier);if(o!==0)return o;let s=fr[e.binding.authSource]-fr[r.binding.authSource];return s!==0?s:e.providerId.localeCompare(r.providerId)}function ge(e){let r=cr().map(l=>({providerId:l.id,binding:e.inventory.bindings[l.id]})).filter(l=>l.binding.ready&&gr(l.providerId,e.riskClass));if(r.length===0)return null;let n=[...r].sort(Pt)[0],o="codex";if(n.providerId===o)return{providerId:n.providerId,binding:n.binding};let s=e.inventory.bindings[o],i;return gr(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 wt}from"node:fs";import{homedir as It}from"node:os";import Nt from"node:path";var Tt="claude";function Wt(){let e=It();return[Nt.join(e,".claude",".credentials.json")]}function hr(e=new Date().toISOString()){let r=g(Tt,["KYNVER_CLAUDE_BIN","CLAUDE_BIN"]);if(process.env.ANTHROPIC_API_KEY?.trim())return{providerId:"claude",ready:!1,authSource:"api_key_env",sessionFingerprint:P("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=Wt().find(i=>wt(i)),o=q(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 Kt}from"node:fs";import{homedir as Mt}from"node:os";import he from"node:path";var Bt="agent";function Dt(){let e=Mt(),r=[he.join(e,".config","cursor","auth.json")];if(process.platform==="win32"){let t=process.env.LOCALAPPDATA?.trim(),n=process.env.APPDATA?.trim();t&&r.push(he.join(t,"cursor-agent","auth.json")),n&&r.push(he.join(n,"cursor","auth.json"))}return r}function yr(e=new Date().toISOString()){let r=g(Bt,["KYNVER_CURSOR_AGENT_BIN","CURSOR_AGENT_BIN"]);if(process.env.CURSOR_API_KEY?.trim())return{providerId:"cursor",ready:!1,authSource:"api_key_env",sessionFingerprint:P("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=Dt().find(s=>Kt(s)),o=!!n&&t.ok;return{providerId:"cursor",ready:o,authSource:"oauth_local",sessionFingerprint:n?y(n):void 0,checkedAt:e,note:o?"Local Cursor/Composer OAuth session bound on runner":[t.note,n?void 0:"no ~/.config/cursor/auth.json"].filter(Boolean).join("; ")}}import{existsSync as Ut,readFileSync as Lt}from"node:fs";import{homedir as Ft}from"node:os";import ye from"node:path";var $t=["OPENAI_API_KEY","ANTHROPIC_API_KEY","KYNVER_API_KEY","KYNVER_BASE_URL"];function Ht(){let e=process.env.HERMES_HOME?.trim(),r=e?ye.resolve(e):ye.join(Ft(),".hermes");return ye.join(r,".env")}function jt(e){try{let r=Lt(e,"utf8"),t=[];for(let n of $t)new RegExp(`^${n}=`,"m").test(r)&&t.push(n);return t}catch{return[]}}function Rr(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=Ht(),o=Ut(n),s=o?jt(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 kr(e={}){let r=e.nowIso?.()??new Date().toISOString(),t=K(r),n={codex:t,cursor:yr(r),claude:hr(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:Rr(r),hermesOpenAiCodex:z(r),codexAdapterPath:t.path,readyCount:o}}var Yt=[/\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],Vt=[/\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 Re(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function Gt(e){let r=Re(e,"executorRef").toLowerCase(),t=Re(e,"title").toLowerCase(),n=Re(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 Ae}from"node:os";import we from"node:path";function Fr(e){return e==="~"?Ae():e.startsWith("~/")||e.startsWith("~\\")?we.join(Ae(),e.slice(2)):e}function S(e){return we.resolve(Fr(e))}var O=a(()=>{"use strict"});var d=a(()=>{"use strict"});var $r,Cn,Hr,An,ne=a(()=>{"use strict";$r=["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"],Cn=new Set($r),Hr=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],An=new Set(Hr)});var $=a(()=>{"use strict";O();d();ne()});var Pe=a(()=>{"use strict";$()});var oe=a(()=>{"use strict";$();O();Pe()});var ie=a(()=>{"use strict";d()});var _=a(()=>{"use strict"});var H=a(()=>{"use strict"});var Ie=a(()=>{"use strict"});var qn,zn,se=a(()=>{"use strict";qn=25*1024*1024*1024,zn=12*1024*1024*1024});var eo,ro,Ne=a(()=>{"use strict";se();eo=5*1024*1024*1024,ro=10*1024*1024*1024});var ao,lo,ae=a(()=>{"use strict";Ne();se();ao=30*1024*1024*1024,lo=15*1024*1024*1024});var Ke=a(()=>{"use strict";d()});import Gr from"node:path";var yo,le=a(()=>{"use strict";O();Ke();yo=Gr.join(".openclaw","harness")});var Y=a(()=>{"use strict";k();_();H();V();le()});var De=a(()=>{"use strict";k();le();Y();d()});var ce=a(()=>{"use strict";De();d()});var Be=a(()=>{"use strict";ce();d()});var Ue=a(()=>{"use strict"});var Le=a(()=>{"use strict";Ue();d()});var Fe=a(()=>{"use strict"});var $e=a(()=>{"use strict";Fe()});var G=a(()=>{"use strict"});var He=a(()=>{"use strict";$e();d();G()});var je=a(()=>{"use strict";G()});var Ye=a(()=>{"use strict"});var Ve=a(()=>{"use strict"});var de=a(()=>{"use strict"});var Ge=a(()=>{"use strict"});var qe=a(()=>{"use strict";de();Ge()});var ze=a(()=>{"use strict";Le();He();G();je();Ye();$();Ve();qe();de();d()});var Je=a(()=>{"use strict";ze()});var nt,ot,Xe=a(()=>{"use strict";Ie();k();_();H();V();ae();ce();Be();Je();d();nt=500*1024*1024,ot=4*1024*1024*1024});var V=a(()=>{"use strict";Xe()});import{homedir as it}from"node:os";import st from"node:path";var Qe,pe=a(()=>{"use strict";Qe=st.join(it(),".kynver",".env")});var Ze=a(()=>{"use strict"});var er=a(()=>{"use strict";Ze()});var rr=a(()=>{"use strict"});var me=a(()=>{"use strict";er();rr()});var tr=a(()=>{"use strict"});var nr=a(()=>{"use strict";tr()});var q=a(()=>{"use strict";pe();O();k();me();nr()});var or=a(()=>{"use strict";_();_()});var ir=a(()=>{"use strict";pe();me();q()});var sr=a(()=>{"use strict";oe();_();or();k();q();ir();ie();Y()});function v(e){let r=e.trim().toLowerCase();return gt[r]??r}var ar,ft,gt,z=a(()=>{"use strict";ar=["claude","cursor","codex","gemini","gemini-api","openai-compatible"],ft=ar.join("|"),gt={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 Rt,mkdirSync as _a,readFileSync as yt,writeFileSync as ka}from"node:fs";import{homedir as _t,totalmem as ba}from"node:os";import fe from"node:path";function kt(e){return{...e,...e.harnessRoot?.trim()?{harnessRoot:S(e.harnessRoot.trim())}:{},...e.defaultRepo?.trim()?{defaultRepo:S(e.defaultRepo.trim())}:{}}}function A(){if(!Rt(lr))return{};try{return kt(JSON.parse(yt(lr,"utf8")))}catch{return{}}}var ur,lr,Wa,Ma,Da,k=a(()=>{"use strict";oe();O();ie();_();H();V();ae();q();sr();z();Y();ur=fe.join(_t(),".kynver"),lr=fe.join(ur,"config.json"),Wa=fe.join(ur,"credentials");Ma=500*1024*1024,Da=4*1024*1024*1024});var Mr=/^claude[-_]/i,Dr=/^(?:opus|sonnet|haiku)\b/i;function Se(e){let r=e.trim();return Mr.test(r)||Dr.test(r)}function Oe(e){let r=e.trim().toLowerCase();return r.startsWith("gpt-")||r.startsWith("gpt5")||r.includes("codex")}function re(e){let r=e.trim().toLowerCase();return r.includes("composer")||r.includes("cursor")}function Ce(e){return e.trim().toLowerCase().startsWith("gemini-")}function Br(e){return Oe(e)?"codex":Se(e)?"claude":Ce(e)?"gemini":(re(e),"cursor")}function Ur(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 Lr(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?Se(n)||Oe(n)||re(n)||Ce(n)?{lane:t,model:n,provider:Br(n),rule:"executor_ref:harness_lane_model"}:{lane:t,rule:"executor_ref:harness_lane"}:{lane:t,rule:"executor_ref:harness_lane"}}function m(e){let r=typeof e=="string"?e.trim():"";return r?Ur(r)??Lr(r):null}function te(e){let r=m(e);return r?!!(r.provider&&r.provider!=="cursor"||r.model&&!re(r.model)):!1}k();var cr={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 w(e){return cr[e]}function dr(){return Object.values(cr)}import{existsSync as bt}from"node:fs";import{homedir as xt}from"node:os";import W from"node:path";import{createHash as pr}from"node:crypto";import{statSync as vt}from"node:fs";import{spawnSync as mr}from"node:child_process";function R(e){try{let r=vt(e),t=`${e}|${r.size}|${r.mtimeMs}`;return pr("sha256").update(t).digest("hex").slice(0,16)}catch{return}}function P(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=mr(e,r,{encoding:"utf8",timeout:n,env:{...process.env,...t.env,CI:"1",NO_COLOR:"1"}});if(o.status===0)return{ok:!0,note:t.okNote??`${e} ${r.join(" ")}: ok`};let s=(o.stderr||o.stdout||"").trim(),i=t.failPrefix??`${e} ${r.join(" ")} failed`;return{ok:!1,note:s?`${i}: ${s.slice(0,200)}`:i}}catch(o){return{ok:!1,note:o instanceof Error?o.message:`${e} probe failed`}}}function J(e,r,t={}){let n=t.timeoutMs??8e3;try{return mr(e,r,{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 Et="codex";function St(){let e=xt();return[process.env.CODEX_HOME?.trim()?W.join(W.resolve(process.env.CODEX_HOME.trim()),"auth.json"):null,W.join(e,".codex","auth.json"),W.join(e,".config","codex","auth.json")].filter(t=>!!t)}function Ot(e){return W.dirname(e)}function Ct(e){let r,t;for(let n of St()){if(!bt(n))continue;r??=n;let o=h(e,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status",env:{CODEX_HOME:Ot(n)}});if(t??=o,o.ok)return{authPath:n,login:o}}return{authPath:r,login:t??h(e,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status"})}}function fr(e=new Date().toISOString()){let r=g(Et,["KYNVER_CODEX_BIN","CODEX_BIN"]);if(process.env.CODEX_API_KEY?.trim())return{providerId:"codex",ready:!0,authSource:"api_key_env",sessionFingerprint:P("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}=Ct(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 At}from"node:fs";import{homedir as wt}from"node:os";import ge from"node:path";function Pt(){let e=process.env.HERMES_HOME?.trim(),r=e?ge.resolve(e):ge.join(wt(),".hermes");return ge.join(r,"auth.json")}function X(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=Pt(),o=At(n),s=J(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 M(e=new Date().toISOString()){let r=fr(e);if(r.ready)return{...r,path:"codex_cli"};let t=X(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 gr=["low","medium","high"],hr={oauth_local:0,subscription_hermes:0,runner_token:1,api_key_env:2,none:3};function Rr(e,r){let t=w(e);return r==="privileged"?t.supportsPrivilegedPlatformActions:r==="low"?t.supportsLowRiskOrchestration:!0}function It(e,r){let t=w(e.providerId),n=w(r.providerId),o=gr.indexOf(t.costTier)-gr.indexOf(n.costTier);if(o!==0)return o;let s=hr[e.binding.authSource]-hr[r.binding.authSource];return s!==0?s:e.providerId.localeCompare(r.providerId)}function he(e){let r=dr().map(l=>({providerId:l.id,binding:e.inventory.bindings[l.id]})).filter(l=>l.binding.ready&&Rr(l.providerId,e.riskClass));if(r.length===0)return null;let n=[...r].sort(It)[0],o="codex";if(n.providerId===o)return{providerId:n.providerId,binding:n.binding};let s=e.inventory.bindings[o],i;return Rr(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 Nt}from"node:fs";import{homedir as Tt}from"node:os";import Kt from"node:path";var Wt="claude";function Mt(){let e=Tt();return[Kt.join(e,".claude",".credentials.json")]}function yr(e=new Date().toISOString()){let r=g(Wt,["KYNVER_CLAUDE_BIN","CLAUDE_BIN"]);if(process.env.ANTHROPIC_API_KEY?.trim())return{providerId:"claude",ready:!1,authSource:"api_key_env",sessionFingerprint:P("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=Mt().find(i=>Nt(i)),o=J(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 Ut}from"node:fs";import{homedir as Bt}from"node:os";import I from"node:path";d();ne();import{spawnSync as Dt}from"node:child_process";function Re(e,r=process.env){try{let t=Dt(e,["status","--format","json"],{encoding:"utf8",timeout:8e3,env:{...r,CI:"1",NO_COLOR:"1"}});if(t.status!==0)return{ok:!1,note:"agent status: not authenticated"};let n=(t.stdout||"").trim();if(!n)return{ok:!1,note:"agent status: empty response"};let o;try{o=JSON.parse(n)}catch{return{ok:!1,note:"agent status: unparseable response"}}return typeof o=="object"&&o!==null&&o.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 ye(e=process.env){let r=[],t=e.KYNVER_CURSOR_AUTH_HOME?.trim();t&&(r.push(I.join(t,".config","cursor","auth.json")),r.push(I.join(t,".cursor-agent","auth.json")));let n=Bt();if(r.push(I.join(n,".config","cursor","auth.json")),r.push(I.join(n,".cursor-agent","auth.json")),process.platform==="win32"){let o=e.LOCALAPPDATA?.trim(),s=e.APPDATA?.trim();o&&r.push(I.join(o,"cursor-agent","auth.json")),s&&r.push(I.join(s,"cursor","auth.json"))}return r}var Lt="agent";function _r(e=new Date().toISOString()){let r=g(Lt,["KYNVER_CURSOR_AGENT_BIN","CURSOR_AGENT_BIN"]);if(process.env.CURSOR_API_KEY?.trim())return{providerId:"cursor",ready:!1,authSource:"api_key_env",sessionFingerprint:P("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=ye().find(l=>Ut(l)),o=Re(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 Ft,readFileSync as $t}from"node:fs";import{homedir as Ht}from"node:os";import _e from"node:path";var jt=["OPENAI_API_KEY","ANTHROPIC_API_KEY","KYNVER_API_KEY","KYNVER_BASE_URL"];function Yt(){let e=process.env.HERMES_HOME?.trim(),r=e?_e.resolve(e):_e.join(Ht(),".hermes");return _e.join(r,".env")}function Vt(e){try{let r=$t(e,"utf8"),t=[];for(let n of jt)new RegExp(`^${n}=`,"m").test(r)&&t.push(n);return t}catch{return[]}}function kr(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=Yt(),o=Ft(n),s=o?Vt(n):[],l=s.some(u=>u.endsWith("_API_KEY"))?"api_key_env":o?"oauth_local":"none",c=t.ok&&o;return{adapterId:"hermes",cliAvailable:t.ok,profileBound:o,authSource:l,sessionFingerprint:o?R(n):void 0,checkedAt:e,note:c?`Hermes profile bound (${s.length?`keys: ${s.join(", ")}`:"no API keys detected"})`:[t.note,o?void 0:"no ~/.hermes/.env"].filter(Boolean).join("; ")}}function vr(e={}){let r=e.nowIso?.()??new Date().toISOString(),t=M(r),n={codex:t,cursor:_r(r),claude:yr(r)},o=Object.values(n).filter(s=>s.ready).length;return{generatedAt:r,bindings:n,cloudApiCredits:{anthropicApiKey:!!process.env.ANTHROPIC_API_KEY?.trim(),openaiApiKey:!!process.env.OPENAI_API_KEY?.trim(),codexApiKey:!!process.env.CODEX_API_KEY?.trim()},workerEndpoint:{baseUrlConfigured:!!process.env.KYNVER_WORKER_BASE_URL?.trim(),apiKeyConfigured:!!process.env.KYNVER_WORKER_API_KEY?.trim()},hermes:kr(r),hermesOpenAiCodex:X(r),codexAdapterPath:t.path,readyCount:o}}var Gt=[/\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],qt=[/\borchestration\b/i,/\bplan[- ]?progress\b/i,/\bstatus\s+sync\b/i,/\bheartbeat\b/i,/\bboard[- ]?drain\b/i,/\bmaintenance\b/i,/\[orchestration:\s*low-risk\]/i];function ke(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function zt(e){let r=ke(e,"executorRef").toLowerCase(),t=ke(e,"title").toLowerCase(),n=ke(e,"description").toLowerCase(),o=`${r}
2
2
  ${t}
3
- ${n}`;return Yt.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":Vt.some(s=>s.test(o))?"low":"elevated"}function qt(e){let r=A(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 zt(e){let r=e.inventory??kr();return e.codexBinding?{...r,bindings:{...r.bindings,codex:e.codexBinding}}:r}function b(e){let r=qt({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 _r(e){let r=e.task??{},t=Gt(r),n=zt({inventory:e.inventory,codexBinding:e.codexBinding??(e.inventory?null:K())}),o=e.preferLowCost===!1?null:e.explicitProvider?.trim().toLowerCase(),s=e.explicitModel?.trim()||void 0,i=w;if(o==="codex"||o==="provider:codex"){let c=n.bindings.codex;if(!c.ready){let f=ge({inventory:n,riskClass:t});return b(f?{providerId:f.providerId,binding:f.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 b({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 b({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 b({providerId:"claude",binding:c,riskClass:t,routingRule:"orchestration:explicit_claude",model:s})}let l=ge({inventory:n,riskClass:t});if(l)return b({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 b({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"}})}te();d();var vr="kynver",br=["agent_os_context_envelope","agent_os_search_memory","agent_os_search_skills","agent_os_get_skill","agent_os_progress_note"],Jt=br.map(e=>`mcp__${vr}__${e}`);var M="claude-sonnet-4-6",B="claude-opus-4-8";d();d();var Gl=process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.5";function Qt(){return process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.5"}var I=Qt();d();var ke="openai-compatible",kc=600*1e3;d();var x="gemini";function E(e=process.env){return e.KYNVER_GEMINI_DEFAULT_MODEL?.trim()||"gemini-2.5-pro"}var N="gemini-api";var Nc=600*1e3;var Sr="claude-sonnet-4-6",D="composer-2.5";function p(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function rn(e){if(!e)return;let r=p(e,"workerModelOverride")||p(e,"modelOverride");return r||`${p(e,"title")}
3
+ ${n}`;return Gt.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":qt.some(s=>s.test(o))?"low":"elevated"}function Jt(e){let r=w(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 Xt(e){let r=e.inventory??vr();return e.codexBinding?{...r,bindings:{...r.bindings,codex:e.codexBinding}}:r}function b(e){let r=Jt({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=zt(r),n=Xt({inventory:e.inventory,codexBinding:e.codexBinding??(e.inventory?null:M())}),o=e.preferLowCost===!1?null:e.explicitProvider?.trim().toLowerCase(),s=e.explicitModel?.trim()||void 0,i=N;if(o==="codex"||o==="provider:codex"){let u=n.bindings.codex;if(!u.ready){let f=he({inventory:n,riskClass:t});return b(f?{providerId:f.providerId,binding:f.binding,riskClass:t,routingRule:"orchestration:explicit_codex_unavailable_cost_aware",model:s,escalatedFrom:"codex",escalatedReason:u.note??"codex oauth not bound"}:{providerId:i,binding:n.bindings[i],riskClass:t,routingRule:"orchestration:codex_unavailable_escalate_cursor",model:s,escalatedFrom:"codex",escalatedReason:u.note??"codex oauth not bound"})}return b({providerId:"codex",binding:u,riskClass:t,routingRule:"orchestration:explicit_codex",model:s})}if(o==="cursor"||o==="provider:cursor"){let u=n.bindings.cursor;if(u.ready)return b({providerId:"cursor",binding:u,riskClass:t,routingRule:"orchestration:explicit_cursor",model:s})}if(o==="claude"||o==="provider:claude"){let u=n.bindings.claude;if(u.ready)return b({providerId:"claude",binding:u,riskClass:t,routingRule:"orchestration:explicit_claude",model:s})}let l=he({inventory:n,riskClass:t});if(l)return b({providerId:l.providerId,binding:l.binding,riskClass:t,routingRule:`orchestration:cost_aware_${l.providerId}`,model:s,escalatedFrom:l.escalatedFrom,escalatedReason:l.escalatedReason});let c=n.bindings.codex;return b({providerId:i,binding:n.bindings[i],riskClass:t,routingRule:c.ready?"orchestration:inventory_empty_default_cursor":"orchestration:codex_unavailable_default_cursor",model:s,...c.ready?{}:{escalatedFrom:"codex",escalatedReason:c.note??"codex oauth not bound"}})}d();var xr="kynver",Er=["agent_os_context_envelope","agent_os_search_memory","agent_os_search_skills","agent_os_get_skill","agent_os_progress_note"],Qt=Er.map(e=>`mcp__${xr}__${e}`);var B="claude-sonnet-4-6",U="claude-opus-4-8";d();d();var pu=process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.5";function en(){return process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.5"}var T=en();d();var ve="openai-compatible",Bu=600*1e3;d();var x="gemini";function E(e=process.env){return e.KYNVER_GEMINI_DEFAULT_MODEL?.trim()||"gemini-2.5-pro"}var K="gemini-api";var Xu=600*1e3;var Cr="claude-sonnet-4-6",L="composer-2.5";function p(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function nn(e){if(!e)return;let r=p(e,"workerModelOverride")||p(e,"modelOverride");return r||`${p(e,"title")}
4
4
  ${p(e,"description")}
5
- ${p(e,"executorRef")}`.match(/\[(?:worker-)?model:\s*([^\]\n]+)\]/i)?.[1]?.trim()||void 0}function xr(e){return e.toLowerCase()}function Z(e=C()){let r=e.defaultModel?.trim();if(r)return r;let t=process.env.KYNVER_DEFAULT_MODEL?.trim();return t||Sr}function X(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-")?x:"cursor"}function tn(e,r){let t=e.trim().toLowerCase(),n=r?.trim();return t==="cursor"?{model:D,provider:"cursor",rule:n&&n!=="cursor"?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:t==="claude"||t==="anthropic"?{model:M,provider:"claude",rule:n&&n!=="claude"?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:t==="gemini"||t==="google"?{model:E(),provider:x,rule:n&&n!==x?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:t==="gemini-api"||t==="gemini_api"||t==="google-api"?{model:E(),provider:N,rule:n&&n!==N?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:null}function Er(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 nn=new Set(["report_reviewer","deep_reviewer","plan_reviewer"]);function Or(e,r,t){return nn.has(e)?B:r.includes("review")||/^review[\s:]/.test(t)||t.includes("critique")?B:M}function Cr(e){let r=xr(p(e,"executorRef")),t=p(e,"title").toLowerCase(),n=p(e,"priority")||"normal",o=xr(p(e,"roleLane"));if(r.includes("provider:claude")||r.startsWith("claude:")){let i=Or(o,r,t);return{provider:"claude",model:i,rule:i===B?"factory:claude_review":"factory:claude_implementation"}}if(r.includes("provider:codex")||r.startsWith("codex:"))return{provider:"codex",model:I,rule:"lane:codex_orchestration"};if(r.includes("provider:chatgpt")||r.startsWith("chatgpt:")||r.includes("provider:gpt")||r.startsWith("gpt:")){let i=m(p(e,"executorRef"));return{provider:"codex",...i?.model?{model:i.model}:{model:I},rule:"lane:codex_orchestration"}}if(r.includes("provider:openai")||r.startsWith("openai-compatible:")){let i=m(p(e,"executorRef"));return{provider:ke,...i?.model?{model:i.model}:{},rule:"lane:openai_compatible"}}if(r.includes("provider:gemini-api")||r.startsWith("gemini-api:")){let i=m(p(e,"executorRef"));return{provider:N,...i?.model?{model:i.model}:{model:E()},rule:"lane:gemini_api"}}if(r.includes("provider:gemini")||r.startsWith("gemini:")){let i=m(p(e,"executorRef"));return{provider:x,...i?.model?{model:i.model}:{model:E()},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:I,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 Er(r,t)||o==="deep_reviewer"?{provider:"cursor",rule:"lane:deep_review"}:{provider:"cursor",rule:"lane:review"};if(Er(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=Z();return{model:s,provider:X(s),rule:"default:global"}}function on(e){return e?m(p(e,"executorRef")):null}function sn(e){switch(v(e)){case x:case N:return E();case"claude":return M;case"codex":return I;case"cursor":return D;default:return}}var _e="explicit:cli_provider",Ar="config:worker_provider";function Pr(e,r,t){let n=v(r);return n===e.provider&&e.rule===t?e:{...e,provider:n,model:sn(n)??e.model,rule:t}}function an(e,r){let t=r?.trim();return!t||e.rule.startsWith("explicit:")&&e.rule!==_e?e:Pr(e,t,_e)}function ln(e,r){if(r.explicitProvider?.trim()||ve(r.task))return e;let t=r.configuredProvider?.trim();if(!t)return e;let n=v(t);return n===w||n===e.provider?e:Pr(e,n,Ar)}function cn(e){let r,t=on(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=tn(u,e.explicitProvider);c?r=c:r={model:u,provider:e.explicitProvider?.trim()||X(u),rule:"explicit:cli",requestedModel:u}}else if(n)r={model:n,provider:o||X(n),rule:t?.rule??"executor_ref:model",requestedModel:n};else if(e.task&&Q(e.task)){let u=rn(e.task),c,f;if(u)c=u,f="task:provider_override";else{let be=typeof e.task.roleLane=="string"?e.task.roleLane.toLowerCase():"",Nr=typeof e.task.executorRef=="string"?e.task.executorRef.toLowerCase():"",Tr=typeof e.task.title=="string"?e.task.title.toLowerCase():"";c=Or(be,Nr,Tr),f=c===B?"factory:claude_review":"factory:claude_implementation"}r={model:c,provider:"claude",rule:f,requestedModel:c}}else if(e.task&&Object.keys(e.task).length>0){let u=Cr(e.task);r={...u,requestedModel:u.model}}else{let u=Z();r={model:u,provider:e.explicitProvider?.trim()||X(u),rule:"default:global",requestedModel:u}}r=an(r,e.explicitProvider),r=ln(r,{explicitProvider:e.explicitProvider,task:e.task,configuredProvider:e.configuredProvider});let s=!!e.configuredProvider?.trim()&&v(e.configuredProvider)!==w&&r.rule==="config:worker_provider",i=wr({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===_e||i.rule===Ar||R(i.provider)&&(e.explicitProviderIsOperatorOverride||Q(e.task))||i.provider===ke||i.provider===x||i.provider===N||i.provider==="codex")return i;let l=_r({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??I:i.model,rule:l.rule,requestedModel:i.requestedModel,orchestrationAudit:l.audit}}function un(e,r,t){return e||r||t||Z()||M}G();G();var w="cursor",dn=new Set(["claude","opus","anthropic"]),pn=[/\[worker-provider:\s*claude\]/i,/\[use-claude-worker\]/i,/\[operator-worker-provider:\s*claude\]/i];function U(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function R(e){if(!e?.trim())return!1;let r=e.trim().toLowerCase();return dn.has(r)?!0:r.includes("claude")||r.includes("opus")}function Q(e){if(!e)return!1;let r=e.workerProviderOverride;if(typeof r=="string"&&R(r))return!0;let t=U(e,"executorRef").toLowerCase();if(t==="provider:claude"||t.startsWith("provider:claude:")||t.includes("claude-worker-override")||t.includes("operator-claude"))return!0;let n=m(U(e,"executorRef"));if(n?.provider&&R(n.provider)||n?.model&&R(mn(n.model)))return!0;let o=U(e,"description");if(pn.some(i=>i.test(o)))return!0;let s=U(e,"title");return!!/\[use-claude-worker\]/i.test(s)}function mn(e){let r=e.trim().toLowerCase();return/^claude[-_]/.test(r)||/^(?:opus|sonnet|haiku)\b/.test(r)?"claude":r}function fn(e,r){return{provider:w,model:D,rule:`policy:cursor_default${r}`,requestedModel:e}}var gn=["explicit:","executor_ref:","factory:","task:"];function hn(e){return gn.some(r=>e.startsWith(r))}function ve(e){if(!e)return!1;let r=e.workerProviderOverride;return typeof r=="string"&&r.trim()||m(U(e,"executorRef"))?.provider?!0:Q(e)}function wr(e){let{routing:r,task:t}=e,n=e.explicitProvider?.trim().toLowerCase();if(e.explicitProviderIsOperatorOverride&&R(n))return{...r,provider:"claude",rule:r.rule.startsWith("explicit:")?r.rule:"explicit:operator_provider"};if(n||hn(r.rule)||ve(t)||!R(r.provider))return r;let o=r.rule&&r.rule!=="default:global"?`:${r.rule.replace(/:/g,"_")}`:"";return fn(r.model,o)}function yn(e){let r=e?.executorRef;return typeof r=="string"?r.trim():""}function Ir(e){return e?.trim()||void 0}function Rn(e){let r=yn(e.task),t=m(r),n=e.explicitProvider?.trim().toLowerCase(),o=Ir(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=Ir(e.routing.model),f={provider:u,model:c,rule:e.routing.rule};return s&&s!=="cursor"||r&&re(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:f}:i&&c&&i!==c&&!R(u)?{ok:!1,error:`model_routing_mismatch: requested model=${i} (${l}) but routing resolved model=${c} (${e.routing.rule})`,requested:{provider:s,model:i,source:l},resolved:f}:{ok:!0,requested:{provider:s,model:i,source:l},resolved:f}:{ok:!0,resolved:f}}export{D as CURSOR_DEFAULT_MODEL,Sr as GLOBAL_DEFAULT_MODEL,Rn as assessDispatchModelGuard,re as executorRefRequestsNonCursorWorker,Cr as inferModelRoutingFromTask,m as parseExecutorRefRoutingIntent,Z as resolveGlobalDefaultModel,un as resolveModelFallback,cn as resolveWorkerLaunch};
5
+ ${p(e,"executorRef")}`.match(/\[(?:worker-)?model:\s*([^\]\n]+)\]/i)?.[1]?.trim()||void 0}function Sr(e){return e.toLowerCase()}function ee(e=A()){let r=e.defaultModel?.trim();if(r)return r;let t=process.env.KYNVER_DEFAULT_MODEL?.trim();return t||Cr}function Q(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-")?x:"cursor"}function on(e,r){let t=e.trim().toLowerCase(),n=r?.trim();return t==="cursor"?{model:L,provider:"cursor",rule:n&&n!=="cursor"?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:t==="claude"||t==="anthropic"?{model:B,provider:"claude",rule:n&&n!=="claude"?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:t==="gemini"||t==="google"?{model:E(),provider:x,rule:n&&n!==x?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:t==="gemini-api"||t==="gemini_api"||t==="google-api"?{model:E(),provider:K,rule:n&&n!==K?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:null}function Or(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 sn=new Set(["report_reviewer","deep_reviewer","plan_reviewer"]);function Ar(e,r,t){return sn.has(e)?U:r.includes("review")||/^review[\s:]/.test(t)||t.includes("critique")?U:B}function wr(e){let r=Sr(p(e,"executorRef")),t=p(e,"title").toLowerCase(),n=p(e,"priority")||"normal",o=Sr(p(e,"roleLane"));if(r.includes("provider:claude")||r.startsWith("claude:")){let i=Ar(o,r,t);return{provider:"claude",model:i,rule:i===U?"factory:claude_review":"factory:claude_implementation"}}if(r.includes("provider:codex")||r.startsWith("codex:"))return{provider:"codex",model:T,rule:"lane:codex_orchestration"};if(r.includes("provider:chatgpt")||r.startsWith("chatgpt:")||r.includes("provider:gpt")||r.startsWith("gpt:")){let i=m(p(e,"executorRef"));return{provider:"codex",...i?.model?{model:i.model}:{model:T},rule:"lane:codex_orchestration"}}if(r.includes("provider:openai")||r.startsWith("openai-compatible:")){let i=m(p(e,"executorRef"));return{provider:ve,...i?.model?{model:i.model}:{},rule:"lane:openai_compatible"}}if(r.includes("provider:gemini-api")||r.startsWith("gemini-api:")){let i=m(p(e,"executorRef"));return{provider:K,...i?.model?{model:i.model}:{model:E()},rule:"lane:gemini_api"}}if(r.includes("provider:gemini")||r.startsWith("gemini:")){let i=m(p(e,"executorRef"));return{provider:x,...i?.model?{model:i.model}:{model:E()},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:T,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 Or(r,t)||o==="deep_reviewer"?{provider:"cursor",rule:"lane:deep_review"}:{provider:"cursor",rule:"lane:review"};if(Or(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=ee();return{model:s,provider:Q(s),rule:"default:global"}}function an(e){return e?m(p(e,"executorRef")):null}function ln(e){switch(v(e)){case x:case K:return E();case"claude":return B;case"codex":return T;case"cursor":return L;default:return}}var be="explicit:cli_provider",Pr="config:worker_provider";function Ir(e,r,t){let n=v(r);return n===e.provider&&e.rule===t?e:{...e,provider:n,model:ln(n)??e.model,rule:t}}function un(e,r){let t=r?.trim();return!t||e.rule.startsWith("explicit:")&&e.rule!==be?e:Ir(e,t,be)}function cn(e,r){if(r.explicitProvider?.trim()||xe(r.task))return e;let t=r.configuredProvider?.trim();if(!t)return e;let n=v(t);return n===N||n===e.provider?e:Ir(e,n,Pr)}function dn(e){let r,t=an(e.task),n=e.explicitModel?.trim()?void 0:t?.model?.trim(),o=!e.explicitProvider?.trim()&&t?.provider?.trim()?t.provider.trim():void 0;if(e.explicitModel?.trim()){let c=e.explicitModel.trim(),u=on(c,e.explicitProvider);u?r=u:r={model:c,provider:e.explicitProvider?.trim()||Q(c),rule:"explicit:cli",requestedModel:c}}else if(n)r={model:n,provider:o||Q(n),rule:t?.rule??"executor_ref:model",requestedModel:n};else if(e.task&&Z(e.task)){let c=nn(e.task),u,f;if(c)u=c,f="task:provider_override";else{let Ee=typeof e.task.roleLane=="string"?e.task.roleLane.toLowerCase():"",Kr=typeof e.task.executorRef=="string"?e.task.executorRef.toLowerCase():"",Wr=typeof e.task.title=="string"?e.task.title.toLowerCase():"";u=Ar(Ee,Kr,Wr),f=u===U?"factory:claude_review":"factory:claude_implementation"}r={model:u,provider:"claude",rule:f,requestedModel:u}}else if(e.task&&Object.keys(e.task).length>0){let c=wr(e.task);r={...c,requestedModel:c.model}}else{let c=ee();r={model:c,provider:e.explicitProvider?.trim()||Q(c),rule:"default:global",requestedModel:c}}r=un(r,e.explicitProvider),r=cn(r,{explicitProvider:e.explicitProvider,task:e.task,configuredProvider:e.configuredProvider});let s=!!e.configuredProvider?.trim()&&v(e.configuredProvider)!==N&&r.rule==="config:worker_provider",i=Nr({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===be||i.rule===Pr||y(i.provider)&&(e.explicitProviderIsOperatorOverride||Z(e.task))||i.provider===ve||i.provider===x||i.provider===K||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??T:i.model,rule:l.rule,requestedModel:i.requestedModel,orchestrationAudit:l.audit}}function pn(e,r,t){return e||r||t||ee()||B}z();z();var N="cursor",mn=new Set(["claude","opus","anthropic"]),fn=[/\[worker-provider:\s*claude\]/i,/\[use-claude-worker\]/i,/\[operator-worker-provider:\s*claude\]/i];function F(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function y(e){if(!e?.trim())return!1;let r=e.trim().toLowerCase();return mn.has(r)?!0:r.includes("claude")||r.includes("opus")}function Z(e){if(!e)return!1;let r=e.workerProviderOverride;if(typeof r=="string"&&y(r))return!0;let t=F(e,"executorRef").toLowerCase();if(t==="provider:claude"||t.startsWith("provider:claude:")||t.includes("claude-worker-override")||t.includes("operator-claude"))return!0;let n=m(F(e,"executorRef"));if(n?.provider&&y(n.provider)||n?.model&&y(gn(n.model)))return!0;let o=F(e,"description");if(fn.some(i=>i.test(o)))return!0;let s=F(e,"title");return!!/\[use-claude-worker\]/i.test(s)}function gn(e){let r=e.trim().toLowerCase();return/^claude[-_]/.test(r)||/^(?:opus|sonnet|haiku)\b/.test(r)?"claude":r}function hn(e,r){return{provider:N,model:L,rule:`policy:cursor_default${r}`,requestedModel:e}}var Rn=["explicit:","executor_ref:","factory:","task:"];function yn(e){return Rn.some(r=>e.startsWith(r))}function xe(e){if(!e)return!1;let r=e.workerProviderOverride;return typeof r=="string"&&r.trim()||m(F(e,"executorRef"))?.provider?!0:Z(e)}function Nr(e){let{routing:r,task:t}=e,n=e.explicitProvider?.trim().toLowerCase();if(e.explicitProviderIsOperatorOverride&&y(n))return{...r,provider:"claude",rule:r.rule.startsWith("explicit:")?r.rule:"explicit:operator_provider"};if(n||yn(r.rule)||xe(t)||!y(r.provider))return r;let o=r.rule&&r.rule!=="default:global"?`:${r.rule.replace(/:/g,"_")}`:"";return hn(r.model,o)}function _n(e){let r=e?.executorRef;return typeof r=="string"?r.trim():""}function Tr(e){return e?.trim()||void 0}function kn(e){let r=_n(e.task),t=m(r),n=e.explicitProvider?.trim().toLowerCase(),o=Tr(e.explicitModel??void 0),s=n||t?.provider,i=o||t?.model,l=n||o?"cli":t?.rule??"none";if(!s&&!i)return{ok:!0};!s&&i&&(/^claude[-_]/i.test(i)||/^(?:opus|sonnet|haiku)\b/i.test(i))&&(s="claude");let c=e.routing.provider,u=Tr(e.routing.model),f={provider:c,model:u,rule:e.routing.rule};return s&&s!=="cursor"||r&&te(r)||n&&n!=="cursor"?c==="cursor"?{ok:!1,error:`model_routing_mismatch: requested ${s??"non-cursor"}${i?` model=${i}`:""} (${l}) but routing resolved to cursor (${e.routing.rule})`,requested:{provider:s,model:i,source:l},resolved:f}:i&&u&&i!==u&&!y(c)?{ok:!1,error:`model_routing_mismatch: requested model=${i} (${l}) but routing resolved model=${u} (${e.routing.rule})`,requested:{provider:s,model:i,source:l},resolved:f}:{ok:!0,requested:{provider:s,model:i,source:l},resolved:f}:{ok:!0,resolved:f}}export{L as CURSOR_DEFAULT_MODEL,Cr as GLOBAL_DEFAULT_MODEL,kn as assessDispatchModelGuard,te as executorRefRequestsNonCursorWorker,wr as inferModelRoutingFromTask,m as parseExecutorRefRoutingIntent,ee as resolveGlobalDefaultModel,pn as resolveModelFallback,dn 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 Oe}from"node:os";import Ce from"node:path";function Ur(e){return e==="~"?Oe():e.startsWith("~/")||e.startsWith("~\\")?Ce.join(Oe(),e.slice(2)):e}function S(e){return Ce.resolve(Ur(e))}var O=a(()=>{"use strict"});var d=a(()=>{"use strict"});var Lr,Sn,Fr,On,te=a(()=>{"use strict";Lr=["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"],Sn=new Set(Lr),Fr=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],On=new Set(Fr)});var L=a(()=>{"use strict";O();d();te()});var Ae=a(()=>{"use strict";L()});var ne=a(()=>{"use strict";L();O();Ae()});var oe=a(()=>{"use strict";d()});var k=a(()=>{"use strict"});var F=a(()=>{"use strict"});var Pe=a(()=>{"use strict"});var Vn,Gn,ie=a(()=>{"use strict";Vn=25*1024*1024*1024,Gn=12*1024*1024*1024});var Qn,Zn,we=a(()=>{"use strict";ie();Qn=5*1024*1024*1024,Zn=10*1024*1024*1024});var io,so,se=a(()=>{"use strict";we();ie();io=30*1024*1024*1024,so=15*1024*1024*1024});var Ne=a(()=>{"use strict";d()});import Yr from"node:path";var ho,ae=a(()=>{"use strict";O();Ne();ho=Yr.join(".openclaw","harness")});var H=a(()=>{"use strict";_();k();F();j();ae()});var Ke=a(()=>{"use strict";_();ae();H();d()});var ce=a(()=>{"use strict";Ke();d()});var Me=a(()=>{"use strict";ce();d()});var Be=a(()=>{"use strict"});var De=a(()=>{"use strict";Be();d()});var Ue=a(()=>{"use strict"});var Le=a(()=>{"use strict";Ue()});var Y=a(()=>{"use strict"});var Fe=a(()=>{"use strict";Le();d();Y()});var $e=a(()=>{"use strict";Y()});var He=a(()=>{"use strict"});var je=a(()=>{"use strict"});var ue=a(()=>{"use strict"});var Ye=a(()=>{"use strict"});var Ve=a(()=>{"use strict";ue();Ye()});var Ge=a(()=>{"use strict";De();Fe();Y();$e();He();L();je();Ve();ue();d()});var qe=a(()=>{"use strict";Ge()});var rt,tt,ze=a(()=>{"use strict";Pe();_();k();F();j();se();ce();Me();qe();d();rt=500*1024*1024,tt=4*1024*1024*1024});var j=a(()=>{"use strict";ze()});import{homedir as nt}from"node:os";import ot from"node:path";var Je,de=a(()=>{"use strict";Je=ot.join(nt(),".kynver",".env")});var Xe=a(()=>{"use strict"});var Qe=a(()=>{"use strict";Xe()});var Ze=a(()=>{"use strict"});var pe=a(()=>{"use strict";Qe();Ze()});var er=a(()=>{"use strict"});var rr=a(()=>{"use strict";er()});var V=a(()=>{"use strict";de();O();_();pe();rr()});var tr=a(()=>{"use strict";k();k()});var nr=a(()=>{"use strict";de();pe();V()});var or=a(()=>{"use strict";ne();k();tr();_();V();nr();oe();H()});function v(e){let r=e.trim().toLowerCase();return mt[r]??r}var ir,pt,mt,G=a(()=>{"use strict";ir=["claude","cursor","codex","gemini","gemini-api","openai-compatible"],pt=ir.join("|"),mt={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 gt,mkdirSync as ya,readFileSync as ht,writeFileSync as Ra}from"node:fs";import{homedir as yt,totalmem as _a}from"node:os";import me from"node:path";function Rt(e){return{...e,...e.harnessRoot?.trim()?{harnessRoot:S(e.harnessRoot.trim())}:{},...e.defaultRepo?.trim()?{defaultRepo:S(e.defaultRepo.trim())}:{}}}function C(){if(!gt(sr))return{};try{return Rt(JSON.parse(ht(sr,"utf8")))}catch{return{}}}var ar,sr,Ta,Wa,Ka,_=a(()=>{"use strict";ne();O();oe();k();F();j();se();V();or();G();H();ar=me.join(yt(),".kynver"),sr=me.join(ar,"config.json"),Ta=me.join(ar,"credentials");Wa=500*1024*1024,Ka=4*1024*1024*1024});var Wr=/^claude[-_]/i,Kr=/^(?:opus|sonnet|haiku)\b/i;function xe(e){let r=e.trim();return Wr.test(r)||Kr.test(r)}function Ee(e){let r=e.trim().toLowerCase();return r.startsWith("gpt-")||r.startsWith("gpt5")||r.includes("codex")}function ee(e){let r=e.trim().toLowerCase();return r.includes("composer")||r.includes("cursor")}function Se(e){return e.trim().toLowerCase().startsWith("gemini-")}function Mr(e){return Ee(e)?"codex":xe(e)?"claude":Se(e)?"gemini":(ee(e),"cursor")}function Br(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 Dr(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?xe(n)||Ee(n)||ee(n)||Se(n)?{lane:t,model:n,provider:Mr(n),rule:"executor_ref:harness_lane_model"}:{lane:t,rule:"executor_ref:harness_lane"}:{lane:t,rule:"executor_ref:harness_lane"}}function m(e){let r=typeof e=="string"?e.trim():"";return r?Br(r)??Dr(r):null}function re(e){let r=m(e);return r?!!(r.provider&&r.provider!=="cursor"||r.model&&!ee(r.model)):!1}_();var lr={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 A(e){return lr[e]}function cr(){return Object.values(lr)}import{existsSync as _t}from"node:fs";import{homedir as vt}from"node:os";import W from"node:path";import{createHash as ur}from"node:crypto";import{statSync as kt}from"node:fs";import{spawnSync as dr}from"node:child_process";function y(e){try{let r=kt(e),t=`${e}|${r.size}|${r.mtimeMs}`;return ur("sha256").update(t).digest("hex").slice(0,16)}catch{return}}function P(e){return ur("sha256").update(`env:${e}`).digest("hex").slice(0,16)}function g(e,r){for(let t of r){let n=process.env[t]?.trim();if(n)return n}return e}function h(e,r,t={}){let n=t.timeoutMs??8e3;try{let o=dr(e,r,{encoding:"utf8",timeout:n,env:{...process.env,...t.env,CI:"1",NO_COLOR:"1"}});if(o.status===0)return{ok:!0,note:t.okNote??`${e} ${r.join(" ")}: ok`};let s=(o.stderr||o.stdout||"").trim(),i=t.failPrefix??`${e} ${r.join(" ")} failed`;return{ok:!1,note:s?`${i}: ${s.slice(0,200)}`:i}}catch(o){return{ok:!1,note:o instanceof Error?o.message:`${e} probe failed`}}}function q(e,r,t={}){let n=t.timeoutMs??8e3;try{return dr(e,r,{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 bt="codex";function xt(){let e=vt();return[process.env.CODEX_HOME?.trim()?W.join(W.resolve(process.env.CODEX_HOME.trim()),"auth.json"):null,W.join(e,".codex","auth.json"),W.join(e,".config","codex","auth.json")].filter(t=>!!t)}function Et(e){return W.dirname(e)}function St(e){let r,t;for(let n of xt()){if(!_t(n))continue;r??=n;let o=h(e,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status",env:{CODEX_HOME:Et(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(bt,["KYNVER_CODEX_BIN","CODEX_BIN"]);if(process.env.CODEX_API_KEY?.trim())return{providerId:"codex",ready:!0,authSource:"api_key_env",sessionFingerprint:P("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}=St(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 Ot}from"node:fs";import{homedir as Ct}from"node:os";import fe from"node:path";function At(){let e=process.env.HERMES_HOME?.trim(),r=e?fe.resolve(e):fe.join(Ct(),".hermes");return fe.join(r,"auth.json")}function z(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=At(),o=Ot(n),s=q(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 K(e=new Date().toISOString()){let r=pr(e);if(r.ready)return{...r,path:"codex_cli"};let t=z(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 mr=["low","medium","high"],fr={oauth_local:0,subscription_hermes:0,runner_token:1,api_key_env:2,none:3};function gr(e,r){let t=A(e);return r==="privileged"?t.supportsPrivilegedPlatformActions:r==="low"?t.supportsLowRiskOrchestration:!0}function Pt(e,r){let t=A(e.providerId),n=A(r.providerId),o=mr.indexOf(t.costTier)-mr.indexOf(n.costTier);if(o!==0)return o;let s=fr[e.binding.authSource]-fr[r.binding.authSource];return s!==0?s:e.providerId.localeCompare(r.providerId)}function ge(e){let r=cr().map(l=>({providerId:l.id,binding:e.inventory.bindings[l.id]})).filter(l=>l.binding.ready&&gr(l.providerId,e.riskClass));if(r.length===0)return null;let n=[...r].sort(Pt)[0],o="codex";if(n.providerId===o)return{providerId:n.providerId,binding:n.binding};let s=e.inventory.bindings[o],i;return gr(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 wt}from"node:fs";import{homedir as It}from"node:os";import Nt from"node:path";var Tt="claude";function Wt(){let e=It();return[Nt.join(e,".claude",".credentials.json")]}function hr(e=new Date().toISOString()){let r=g(Tt,["KYNVER_CLAUDE_BIN","CLAUDE_BIN"]);if(process.env.ANTHROPIC_API_KEY?.trim())return{providerId:"claude",ready:!1,authSource:"api_key_env",sessionFingerprint:P("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=Wt().find(i=>wt(i)),o=q(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 Kt}from"node:fs";import{homedir as Mt}from"node:os";import he from"node:path";var Bt="agent";function Dt(){let e=Mt(),r=[he.join(e,".config","cursor","auth.json")];if(process.platform==="win32"){let t=process.env.LOCALAPPDATA?.trim(),n=process.env.APPDATA?.trim();t&&r.push(he.join(t,"cursor-agent","auth.json")),n&&r.push(he.join(n,"cursor","auth.json"))}return r}function yr(e=new Date().toISOString()){let r=g(Bt,["KYNVER_CURSOR_AGENT_BIN","CURSOR_AGENT_BIN"]);if(process.env.CURSOR_API_KEY?.trim())return{providerId:"cursor",ready:!1,authSource:"api_key_env",sessionFingerprint:P("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=Dt().find(s=>Kt(s)),o=!!n&&t.ok;return{providerId:"cursor",ready:o,authSource:"oauth_local",sessionFingerprint:n?y(n):void 0,checkedAt:e,note:o?"Local Cursor/Composer OAuth session bound on runner":[t.note,n?void 0:"no ~/.config/cursor/auth.json"].filter(Boolean).join("; ")}}import{existsSync as Ut,readFileSync as Lt}from"node:fs";import{homedir as Ft}from"node:os";import ye from"node:path";var $t=["OPENAI_API_KEY","ANTHROPIC_API_KEY","KYNVER_API_KEY","KYNVER_BASE_URL"];function Ht(){let e=process.env.HERMES_HOME?.trim(),r=e?ye.resolve(e):ye.join(Ft(),".hermes");return ye.join(r,".env")}function jt(e){try{let r=Lt(e,"utf8"),t=[];for(let n of $t)new RegExp(`^${n}=`,"m").test(r)&&t.push(n);return t}catch{return[]}}function Rr(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=Ht(),o=Ut(n),s=o?jt(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 kr(e={}){let r=e.nowIso?.()??new Date().toISOString(),t=K(r),n={codex:t,cursor:yr(r),claude:hr(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:Rr(r),hermesOpenAiCodex:z(r),codexAdapterPath:t.path,readyCount:o}}var Yt=[/\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],Vt=[/\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 Re(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function Gt(e){let r=Re(e,"executorRef").toLowerCase(),t=Re(e,"title").toLowerCase(),n=Re(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 Ae}from"node:os";import we from"node:path";function Fr(e){return e==="~"?Ae():e.startsWith("~/")||e.startsWith("~\\")?we.join(Ae(),e.slice(2)):e}function S(e){return we.resolve(Fr(e))}var O=a(()=>{"use strict"});var d=a(()=>{"use strict"});var $r,Cn,Hr,An,ne=a(()=>{"use strict";$r=["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"],Cn=new Set($r),Hr=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],An=new Set(Hr)});var $=a(()=>{"use strict";O();d();ne()});var Pe=a(()=>{"use strict";$()});var oe=a(()=>{"use strict";$();O();Pe()});var ie=a(()=>{"use strict";d()});var _=a(()=>{"use strict"});var H=a(()=>{"use strict"});var Ie=a(()=>{"use strict"});var qn,zn,se=a(()=>{"use strict";qn=25*1024*1024*1024,zn=12*1024*1024*1024});var eo,ro,Ne=a(()=>{"use strict";se();eo=5*1024*1024*1024,ro=10*1024*1024*1024});var ao,lo,ae=a(()=>{"use strict";Ne();se();ao=30*1024*1024*1024,lo=15*1024*1024*1024});var Ke=a(()=>{"use strict";d()});import Gr from"node:path";var yo,le=a(()=>{"use strict";O();Ke();yo=Gr.join(".openclaw","harness")});var Y=a(()=>{"use strict";k();_();H();V();le()});var De=a(()=>{"use strict";k();le();Y();d()});var ce=a(()=>{"use strict";De();d()});var Be=a(()=>{"use strict";ce();d()});var Ue=a(()=>{"use strict"});var Le=a(()=>{"use strict";Ue();d()});var Fe=a(()=>{"use strict"});var $e=a(()=>{"use strict";Fe()});var G=a(()=>{"use strict"});var He=a(()=>{"use strict";$e();d();G()});var je=a(()=>{"use strict";G()});var Ye=a(()=>{"use strict"});var Ve=a(()=>{"use strict"});var de=a(()=>{"use strict"});var Ge=a(()=>{"use strict"});var qe=a(()=>{"use strict";de();Ge()});var ze=a(()=>{"use strict";Le();He();G();je();Ye();$();Ve();qe();de();d()});var Je=a(()=>{"use strict";ze()});var nt,ot,Xe=a(()=>{"use strict";Ie();k();_();H();V();ae();ce();Be();Je();d();nt=500*1024*1024,ot=4*1024*1024*1024});var V=a(()=>{"use strict";Xe()});import{homedir as it}from"node:os";import st from"node:path";var Qe,pe=a(()=>{"use strict";Qe=st.join(it(),".kynver",".env")});var Ze=a(()=>{"use strict"});var er=a(()=>{"use strict";Ze()});var rr=a(()=>{"use strict"});var me=a(()=>{"use strict";er();rr()});var tr=a(()=>{"use strict"});var nr=a(()=>{"use strict";tr()});var q=a(()=>{"use strict";pe();O();k();me();nr()});var or=a(()=>{"use strict";_();_()});var ir=a(()=>{"use strict";pe();me();q()});var sr=a(()=>{"use strict";oe();_();or();k();q();ir();ie();Y()});function v(e){let r=e.trim().toLowerCase();return gt[r]??r}var ar,ft,gt,z=a(()=>{"use strict";ar=["claude","cursor","codex","gemini","gemini-api","openai-compatible"],ft=ar.join("|"),gt={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 Rt,mkdirSync as _a,readFileSync as yt,writeFileSync as ka}from"node:fs";import{homedir as _t,totalmem as ba}from"node:os";import fe from"node:path";function kt(e){return{...e,...e.harnessRoot?.trim()?{harnessRoot:S(e.harnessRoot.trim())}:{},...e.defaultRepo?.trim()?{defaultRepo:S(e.defaultRepo.trim())}:{}}}function A(){if(!Rt(lr))return{};try{return kt(JSON.parse(yt(lr,"utf8")))}catch{return{}}}var ur,lr,Wa,Ma,Da,k=a(()=>{"use strict";oe();O();ie();_();H();V();ae();q();sr();z();Y();ur=fe.join(_t(),".kynver"),lr=fe.join(ur,"config.json"),Wa=fe.join(ur,"credentials");Ma=500*1024*1024,Da=4*1024*1024*1024});var Mr=/^claude[-_]/i,Dr=/^(?:opus|sonnet|haiku)\b/i;function Se(e){let r=e.trim();return Mr.test(r)||Dr.test(r)}function Oe(e){let r=e.trim().toLowerCase();return r.startsWith("gpt-")||r.startsWith("gpt5")||r.includes("codex")}function re(e){let r=e.trim().toLowerCase();return r.includes("composer")||r.includes("cursor")}function Ce(e){return e.trim().toLowerCase().startsWith("gemini-")}function Br(e){return Oe(e)?"codex":Se(e)?"claude":Ce(e)?"gemini":(re(e),"cursor")}function Ur(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 Lr(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?Se(n)||Oe(n)||re(n)||Ce(n)?{lane:t,model:n,provider:Br(n),rule:"executor_ref:harness_lane_model"}:{lane:t,rule:"executor_ref:harness_lane"}:{lane:t,rule:"executor_ref:harness_lane"}}function m(e){let r=typeof e=="string"?e.trim():"";return r?Ur(r)??Lr(r):null}function te(e){let r=m(e);return r?!!(r.provider&&r.provider!=="cursor"||r.model&&!re(r.model)):!1}k();var cr={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 w(e){return cr[e]}function dr(){return Object.values(cr)}import{existsSync as bt}from"node:fs";import{homedir as xt}from"node:os";import W from"node:path";import{createHash as pr}from"node:crypto";import{statSync as vt}from"node:fs";import{spawnSync as mr}from"node:child_process";function R(e){try{let r=vt(e),t=`${e}|${r.size}|${r.mtimeMs}`;return pr("sha256").update(t).digest("hex").slice(0,16)}catch{return}}function P(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=mr(e,r,{encoding:"utf8",timeout:n,env:{...process.env,...t.env,CI:"1",NO_COLOR:"1"}});if(o.status===0)return{ok:!0,note:t.okNote??`${e} ${r.join(" ")}: ok`};let s=(o.stderr||o.stdout||"").trim(),i=t.failPrefix??`${e} ${r.join(" ")} failed`;return{ok:!1,note:s?`${i}: ${s.slice(0,200)}`:i}}catch(o){return{ok:!1,note:o instanceof Error?o.message:`${e} probe failed`}}}function J(e,r,t={}){let n=t.timeoutMs??8e3;try{return mr(e,r,{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 Et="codex";function St(){let e=xt();return[process.env.CODEX_HOME?.trim()?W.join(W.resolve(process.env.CODEX_HOME.trim()),"auth.json"):null,W.join(e,".codex","auth.json"),W.join(e,".config","codex","auth.json")].filter(t=>!!t)}function Ot(e){return W.dirname(e)}function Ct(e){let r,t;for(let n of St()){if(!bt(n))continue;r??=n;let o=h(e,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status",env:{CODEX_HOME:Ot(n)}});if(t??=o,o.ok)return{authPath:n,login:o}}return{authPath:r,login:t??h(e,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status"})}}function fr(e=new Date().toISOString()){let r=g(Et,["KYNVER_CODEX_BIN","CODEX_BIN"]);if(process.env.CODEX_API_KEY?.trim())return{providerId:"codex",ready:!0,authSource:"api_key_env",sessionFingerprint:P("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}=Ct(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 At}from"node:fs";import{homedir as wt}from"node:os";import ge from"node:path";function Pt(){let e=process.env.HERMES_HOME?.trim(),r=e?ge.resolve(e):ge.join(wt(),".hermes");return ge.join(r,"auth.json")}function X(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=Pt(),o=At(n),s=J(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 M(e=new Date().toISOString()){let r=fr(e);if(r.ready)return{...r,path:"codex_cli"};let t=X(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 gr=["low","medium","high"],hr={oauth_local:0,subscription_hermes:0,runner_token:1,api_key_env:2,none:3};function Rr(e,r){let t=w(e);return r==="privileged"?t.supportsPrivilegedPlatformActions:r==="low"?t.supportsLowRiskOrchestration:!0}function It(e,r){let t=w(e.providerId),n=w(r.providerId),o=gr.indexOf(t.costTier)-gr.indexOf(n.costTier);if(o!==0)return o;let s=hr[e.binding.authSource]-hr[r.binding.authSource];return s!==0?s:e.providerId.localeCompare(r.providerId)}function he(e){let r=dr().map(l=>({providerId:l.id,binding:e.inventory.bindings[l.id]})).filter(l=>l.binding.ready&&Rr(l.providerId,e.riskClass));if(r.length===0)return null;let n=[...r].sort(It)[0],o="codex";if(n.providerId===o)return{providerId:n.providerId,binding:n.binding};let s=e.inventory.bindings[o],i;return Rr(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 Nt}from"node:fs";import{homedir as Tt}from"node:os";import Kt from"node:path";var Wt="claude";function Mt(){let e=Tt();return[Kt.join(e,".claude",".credentials.json")]}function yr(e=new Date().toISOString()){let r=g(Wt,["KYNVER_CLAUDE_BIN","CLAUDE_BIN"]);if(process.env.ANTHROPIC_API_KEY?.trim())return{providerId:"claude",ready:!1,authSource:"api_key_env",sessionFingerprint:P("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=Mt().find(i=>Nt(i)),o=J(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 Ut}from"node:fs";import{homedir as Bt}from"node:os";import I from"node:path";d();ne();import{spawnSync as Dt}from"node:child_process";function Re(e,r=process.env){try{let t=Dt(e,["status","--format","json"],{encoding:"utf8",timeout:8e3,env:{...r,CI:"1",NO_COLOR:"1"}});if(t.status!==0)return{ok:!1,note:"agent status: not authenticated"};let n=(t.stdout||"").trim();if(!n)return{ok:!1,note:"agent status: empty response"};let o;try{o=JSON.parse(n)}catch{return{ok:!1,note:"agent status: unparseable response"}}return typeof o=="object"&&o!==null&&o.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 ye(e=process.env){let r=[],t=e.KYNVER_CURSOR_AUTH_HOME?.trim();t&&(r.push(I.join(t,".config","cursor","auth.json")),r.push(I.join(t,".cursor-agent","auth.json")));let n=Bt();if(r.push(I.join(n,".config","cursor","auth.json")),r.push(I.join(n,".cursor-agent","auth.json")),process.platform==="win32"){let o=e.LOCALAPPDATA?.trim(),s=e.APPDATA?.trim();o&&r.push(I.join(o,"cursor-agent","auth.json")),s&&r.push(I.join(s,"cursor","auth.json"))}return r}var Lt="agent";function _r(e=new Date().toISOString()){let r=g(Lt,["KYNVER_CURSOR_AGENT_BIN","CURSOR_AGENT_BIN"]);if(process.env.CURSOR_API_KEY?.trim())return{providerId:"cursor",ready:!1,authSource:"api_key_env",sessionFingerprint:P("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=ye().find(l=>Ut(l)),o=Re(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 Ft,readFileSync as $t}from"node:fs";import{homedir as Ht}from"node:os";import _e from"node:path";var jt=["OPENAI_API_KEY","ANTHROPIC_API_KEY","KYNVER_API_KEY","KYNVER_BASE_URL"];function Yt(){let e=process.env.HERMES_HOME?.trim(),r=e?_e.resolve(e):_e.join(Ht(),".hermes");return _e.join(r,".env")}function Vt(e){try{let r=$t(e,"utf8"),t=[];for(let n of jt)new RegExp(`^${n}=`,"m").test(r)&&t.push(n);return t}catch{return[]}}function kr(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=Yt(),o=Ft(n),s=o?Vt(n):[],l=s.some(u=>u.endsWith("_API_KEY"))?"api_key_env":o?"oauth_local":"none",c=t.ok&&o;return{adapterId:"hermes",cliAvailable:t.ok,profileBound:o,authSource:l,sessionFingerprint:o?R(n):void 0,checkedAt:e,note:c?`Hermes profile bound (${s.length?`keys: ${s.join(", ")}`:"no API keys detected"})`:[t.note,o?void 0:"no ~/.hermes/.env"].filter(Boolean).join("; ")}}function vr(e={}){let r=e.nowIso?.()??new Date().toISOString(),t=M(r),n={codex:t,cursor:_r(r),claude:yr(r)},o=Object.values(n).filter(s=>s.ready).length;return{generatedAt:r,bindings:n,cloudApiCredits:{anthropicApiKey:!!process.env.ANTHROPIC_API_KEY?.trim(),openaiApiKey:!!process.env.OPENAI_API_KEY?.trim(),codexApiKey:!!process.env.CODEX_API_KEY?.trim()},workerEndpoint:{baseUrlConfigured:!!process.env.KYNVER_WORKER_BASE_URL?.trim(),apiKeyConfigured:!!process.env.KYNVER_WORKER_API_KEY?.trim()},hermes:kr(r),hermesOpenAiCodex:X(r),codexAdapterPath:t.path,readyCount:o}}var Gt=[/\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],qt=[/\borchestration\b/i,/\bplan[- ]?progress\b/i,/\bstatus\s+sync\b/i,/\bheartbeat\b/i,/\bboard[- ]?drain\b/i,/\bmaintenance\b/i,/\[orchestration:\s*low-risk\]/i];function ke(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function zt(e){let r=ke(e,"executorRef").toLowerCase(),t=ke(e,"title").toLowerCase(),n=ke(e,"description").toLowerCase(),o=`${r}
2
2
  ${t}
3
- ${n}`;return Yt.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":Vt.some(s=>s.test(o))?"low":"elevated"}function qt(e){let r=A(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 zt(e){let r=e.inventory??kr();return e.codexBinding?{...r,bindings:{...r.bindings,codex:e.codexBinding}}:r}function b(e){let r=qt({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 _r(e){let r=e.task??{},t=Gt(r),n=zt({inventory:e.inventory,codexBinding:e.codexBinding??(e.inventory?null:K())}),o=e.preferLowCost===!1?null:e.explicitProvider?.trim().toLowerCase(),s=e.explicitModel?.trim()||void 0,i=w;if(o==="codex"||o==="provider:codex"){let c=n.bindings.codex;if(!c.ready){let f=ge({inventory:n,riskClass:t});return b(f?{providerId:f.providerId,binding:f.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 b({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 b({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 b({providerId:"claude",binding:c,riskClass:t,routingRule:"orchestration:explicit_claude",model:s})}let l=ge({inventory:n,riskClass:t});if(l)return b({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 b({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"}})}te();d();var vr="kynver",br=["agent_os_context_envelope","agent_os_search_memory","agent_os_search_skills","agent_os_get_skill","agent_os_progress_note"],Jt=br.map(e=>`mcp__${vr}__${e}`);var M="claude-sonnet-4-6",B="claude-opus-4-8";d();d();var Gl=process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.5";function Qt(){return process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.5"}var I=Qt();d();var ke="openai-compatible",kc=600*1e3;d();var x="gemini";function E(e=process.env){return e.KYNVER_GEMINI_DEFAULT_MODEL?.trim()||"gemini-2.5-pro"}var N="gemini-api";var Nc=600*1e3;var Sr="claude-sonnet-4-6",D="composer-2.5";function p(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function rn(e){if(!e)return;let r=p(e,"workerModelOverride")||p(e,"modelOverride");return r||`${p(e,"title")}
3
+ ${n}`;return Gt.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":qt.some(s=>s.test(o))?"low":"elevated"}function Jt(e){let r=w(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 Xt(e){let r=e.inventory??vr();return e.codexBinding?{...r,bindings:{...r.bindings,codex:e.codexBinding}}:r}function b(e){let r=Jt({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=zt(r),n=Xt({inventory:e.inventory,codexBinding:e.codexBinding??(e.inventory?null:M())}),o=e.preferLowCost===!1?null:e.explicitProvider?.trim().toLowerCase(),s=e.explicitModel?.trim()||void 0,i=N;if(o==="codex"||o==="provider:codex"){let u=n.bindings.codex;if(!u.ready){let f=he({inventory:n,riskClass:t});return b(f?{providerId:f.providerId,binding:f.binding,riskClass:t,routingRule:"orchestration:explicit_codex_unavailable_cost_aware",model:s,escalatedFrom:"codex",escalatedReason:u.note??"codex oauth not bound"}:{providerId:i,binding:n.bindings[i],riskClass:t,routingRule:"orchestration:codex_unavailable_escalate_cursor",model:s,escalatedFrom:"codex",escalatedReason:u.note??"codex oauth not bound"})}return b({providerId:"codex",binding:u,riskClass:t,routingRule:"orchestration:explicit_codex",model:s})}if(o==="cursor"||o==="provider:cursor"){let u=n.bindings.cursor;if(u.ready)return b({providerId:"cursor",binding:u,riskClass:t,routingRule:"orchestration:explicit_cursor",model:s})}if(o==="claude"||o==="provider:claude"){let u=n.bindings.claude;if(u.ready)return b({providerId:"claude",binding:u,riskClass:t,routingRule:"orchestration:explicit_claude",model:s})}let l=he({inventory:n,riskClass:t});if(l)return b({providerId:l.providerId,binding:l.binding,riskClass:t,routingRule:`orchestration:cost_aware_${l.providerId}`,model:s,escalatedFrom:l.escalatedFrom,escalatedReason:l.escalatedReason});let c=n.bindings.codex;return b({providerId:i,binding:n.bindings[i],riskClass:t,routingRule:c.ready?"orchestration:inventory_empty_default_cursor":"orchestration:codex_unavailable_default_cursor",model:s,...c.ready?{}:{escalatedFrom:"codex",escalatedReason:c.note??"codex oauth not bound"}})}d();var xr="kynver",Er=["agent_os_context_envelope","agent_os_search_memory","agent_os_search_skills","agent_os_get_skill","agent_os_progress_note"],Qt=Er.map(e=>`mcp__${xr}__${e}`);var B="claude-sonnet-4-6",U="claude-opus-4-8";d();d();var pu=process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.5";function en(){return process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.5"}var T=en();d();var ve="openai-compatible",Bu=600*1e3;d();var x="gemini";function E(e=process.env){return e.KYNVER_GEMINI_DEFAULT_MODEL?.trim()||"gemini-2.5-pro"}var K="gemini-api";var Xu=600*1e3;var Cr="claude-sonnet-4-6",L="composer-2.5";function p(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function nn(e){if(!e)return;let r=p(e,"workerModelOverride")||p(e,"modelOverride");return r||`${p(e,"title")}
4
4
  ${p(e,"description")}
5
- ${p(e,"executorRef")}`.match(/\[(?:worker-)?model:\s*([^\]\n]+)\]/i)?.[1]?.trim()||void 0}function xr(e){return e.toLowerCase()}function Z(e=C()){let r=e.defaultModel?.trim();if(r)return r;let t=process.env.KYNVER_DEFAULT_MODEL?.trim();return t||Sr}function X(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-")?x:"cursor"}function tn(e,r){let t=e.trim().toLowerCase(),n=r?.trim();return t==="cursor"?{model:D,provider:"cursor",rule:n&&n!=="cursor"?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:t==="claude"||t==="anthropic"?{model:M,provider:"claude",rule:n&&n!=="claude"?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:t==="gemini"||t==="google"?{model:E(),provider:x,rule:n&&n!==x?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:t==="gemini-api"||t==="gemini_api"||t==="google-api"?{model:E(),provider:N,rule:n&&n!==N?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:null}function Er(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 nn=new Set(["report_reviewer","deep_reviewer","plan_reviewer"]);function Or(e,r,t){return nn.has(e)?B:r.includes("review")||/^review[\s:]/.test(t)||t.includes("critique")?B:M}function Cr(e){let r=xr(p(e,"executorRef")),t=p(e,"title").toLowerCase(),n=p(e,"priority")||"normal",o=xr(p(e,"roleLane"));if(r.includes("provider:claude")||r.startsWith("claude:")){let i=Or(o,r,t);return{provider:"claude",model:i,rule:i===B?"factory:claude_review":"factory:claude_implementation"}}if(r.includes("provider:codex")||r.startsWith("codex:"))return{provider:"codex",model:I,rule:"lane:codex_orchestration"};if(r.includes("provider:chatgpt")||r.startsWith("chatgpt:")||r.includes("provider:gpt")||r.startsWith("gpt:")){let i=m(p(e,"executorRef"));return{provider:"codex",...i?.model?{model:i.model}:{model:I},rule:"lane:codex_orchestration"}}if(r.includes("provider:openai")||r.startsWith("openai-compatible:")){let i=m(p(e,"executorRef"));return{provider:ke,...i?.model?{model:i.model}:{},rule:"lane:openai_compatible"}}if(r.includes("provider:gemini-api")||r.startsWith("gemini-api:")){let i=m(p(e,"executorRef"));return{provider:N,...i?.model?{model:i.model}:{model:E()},rule:"lane:gemini_api"}}if(r.includes("provider:gemini")||r.startsWith("gemini:")){let i=m(p(e,"executorRef"));return{provider:x,...i?.model?{model:i.model}:{model:E()},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:I,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 Er(r,t)||o==="deep_reviewer"?{provider:"cursor",rule:"lane:deep_review"}:{provider:"cursor",rule:"lane:review"};if(Er(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=Z();return{model:s,provider:X(s),rule:"default:global"}}function on(e){return e?m(p(e,"executorRef")):null}function sn(e){switch(v(e)){case x:case N:return E();case"claude":return M;case"codex":return I;case"cursor":return D;default:return}}var _e="explicit:cli_provider",Ar="config:worker_provider";function Pr(e,r,t){let n=v(r);return n===e.provider&&e.rule===t?e:{...e,provider:n,model:sn(n)??e.model,rule:t}}function an(e,r){let t=r?.trim();return!t||e.rule.startsWith("explicit:")&&e.rule!==_e?e:Pr(e,t,_e)}function ln(e,r){if(r.explicitProvider?.trim()||ve(r.task))return e;let t=r.configuredProvider?.trim();if(!t)return e;let n=v(t);return n===w||n===e.provider?e:Pr(e,n,Ar)}function cn(e){let r,t=on(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=tn(u,e.explicitProvider);c?r=c:r={model:u,provider:e.explicitProvider?.trim()||X(u),rule:"explicit:cli",requestedModel:u}}else if(n)r={model:n,provider:o||X(n),rule:t?.rule??"executor_ref:model",requestedModel:n};else if(e.task&&Q(e.task)){let u=rn(e.task),c,f;if(u)c=u,f="task:provider_override";else{let be=typeof e.task.roleLane=="string"?e.task.roleLane.toLowerCase():"",Nr=typeof e.task.executorRef=="string"?e.task.executorRef.toLowerCase():"",Tr=typeof e.task.title=="string"?e.task.title.toLowerCase():"";c=Or(be,Nr,Tr),f=c===B?"factory:claude_review":"factory:claude_implementation"}r={model:c,provider:"claude",rule:f,requestedModel:c}}else if(e.task&&Object.keys(e.task).length>0){let u=Cr(e.task);r={...u,requestedModel:u.model}}else{let u=Z();r={model:u,provider:e.explicitProvider?.trim()||X(u),rule:"default:global",requestedModel:u}}r=an(r,e.explicitProvider),r=ln(r,{explicitProvider:e.explicitProvider,task:e.task,configuredProvider:e.configuredProvider});let s=!!e.configuredProvider?.trim()&&v(e.configuredProvider)!==w&&r.rule==="config:worker_provider",i=wr({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===_e||i.rule===Ar||R(i.provider)&&(e.explicitProviderIsOperatorOverride||Q(e.task))||i.provider===ke||i.provider===x||i.provider===N||i.provider==="codex")return i;let l=_r({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??I:i.model,rule:l.rule,requestedModel:i.requestedModel,orchestrationAudit:l.audit}}function un(e,r,t){return e||r||t||Z()||M}G();G();var w="cursor",dn=new Set(["claude","opus","anthropic"]),pn=[/\[worker-provider:\s*claude\]/i,/\[use-claude-worker\]/i,/\[operator-worker-provider:\s*claude\]/i];function U(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function R(e){if(!e?.trim())return!1;let r=e.trim().toLowerCase();return dn.has(r)?!0:r.includes("claude")||r.includes("opus")}function Q(e){if(!e)return!1;let r=e.workerProviderOverride;if(typeof r=="string"&&R(r))return!0;let t=U(e,"executorRef").toLowerCase();if(t==="provider:claude"||t.startsWith("provider:claude:")||t.includes("claude-worker-override")||t.includes("operator-claude"))return!0;let n=m(U(e,"executorRef"));if(n?.provider&&R(n.provider)||n?.model&&R(mn(n.model)))return!0;let o=U(e,"description");if(pn.some(i=>i.test(o)))return!0;let s=U(e,"title");return!!/\[use-claude-worker\]/i.test(s)}function mn(e){let r=e.trim().toLowerCase();return/^claude[-_]/.test(r)||/^(?:opus|sonnet|haiku)\b/.test(r)?"claude":r}function fn(e,r){return{provider:w,model:D,rule:`policy:cursor_default${r}`,requestedModel:e}}var gn=["explicit:","executor_ref:","factory:","task:"];function hn(e){return gn.some(r=>e.startsWith(r))}function ve(e){if(!e)return!1;let r=e.workerProviderOverride;return typeof r=="string"&&r.trim()||m(U(e,"executorRef"))?.provider?!0:Q(e)}function wr(e){let{routing:r,task:t}=e,n=e.explicitProvider?.trim().toLowerCase();if(e.explicitProviderIsOperatorOverride&&R(n))return{...r,provider:"claude",rule:r.rule.startsWith("explicit:")?r.rule:"explicit:operator_provider"};if(n||hn(r.rule)||ve(t)||!R(r.provider))return r;let o=r.rule&&r.rule!=="default:global"?`:${r.rule.replace(/:/g,"_")}`:"";return fn(r.model,o)}function yn(e){let r=e?.executorRef;return typeof r=="string"?r.trim():""}function Ir(e){return e?.trim()||void 0}function Rn(e){let r=yn(e.task),t=m(r),n=e.explicitProvider?.trim().toLowerCase(),o=Ir(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=Ir(e.routing.model),f={provider:u,model:c,rule:e.routing.rule};return s&&s!=="cursor"||r&&re(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:f}:i&&c&&i!==c&&!R(u)?{ok:!1,error:`model_routing_mismatch: requested model=${i} (${l}) but routing resolved model=${c} (${e.routing.rule})`,requested:{provider:s,model:i,source:l},resolved:f}:{ok:!0,requested:{provider:s,model:i,source:l},resolved:f}:{ok:!0,resolved:f}}export{D as CURSOR_DEFAULT_MODEL,Sr as GLOBAL_DEFAULT_MODEL,Rn as assessDispatchModelGuard,re as executorRefRequestsNonCursorWorker,Cr as inferModelRoutingFromTask,m as parseExecutorRefRoutingIntent,Z as resolveGlobalDefaultModel,un as resolveModelFallback,cn as resolveWorkerLaunch};
5
+ ${p(e,"executorRef")}`.match(/\[(?:worker-)?model:\s*([^\]\n]+)\]/i)?.[1]?.trim()||void 0}function Sr(e){return e.toLowerCase()}function ee(e=A()){let r=e.defaultModel?.trim();if(r)return r;let t=process.env.KYNVER_DEFAULT_MODEL?.trim();return t||Cr}function Q(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-")?x:"cursor"}function on(e,r){let t=e.trim().toLowerCase(),n=r?.trim();return t==="cursor"?{model:L,provider:"cursor",rule:n&&n!=="cursor"?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:t==="claude"||t==="anthropic"?{model:B,provider:"claude",rule:n&&n!=="claude"?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:t==="gemini"||t==="google"?{model:E(),provider:x,rule:n&&n!==x?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:t==="gemini-api"||t==="gemini_api"||t==="google-api"?{model:E(),provider:K,rule:n&&n!==K?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:null}function Or(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 sn=new Set(["report_reviewer","deep_reviewer","plan_reviewer"]);function Ar(e,r,t){return sn.has(e)?U:r.includes("review")||/^review[\s:]/.test(t)||t.includes("critique")?U:B}function wr(e){let r=Sr(p(e,"executorRef")),t=p(e,"title").toLowerCase(),n=p(e,"priority")||"normal",o=Sr(p(e,"roleLane"));if(r.includes("provider:claude")||r.startsWith("claude:")){let i=Ar(o,r,t);return{provider:"claude",model:i,rule:i===U?"factory:claude_review":"factory:claude_implementation"}}if(r.includes("provider:codex")||r.startsWith("codex:"))return{provider:"codex",model:T,rule:"lane:codex_orchestration"};if(r.includes("provider:chatgpt")||r.startsWith("chatgpt:")||r.includes("provider:gpt")||r.startsWith("gpt:")){let i=m(p(e,"executorRef"));return{provider:"codex",...i?.model?{model:i.model}:{model:T},rule:"lane:codex_orchestration"}}if(r.includes("provider:openai")||r.startsWith("openai-compatible:")){let i=m(p(e,"executorRef"));return{provider:ve,...i?.model?{model:i.model}:{},rule:"lane:openai_compatible"}}if(r.includes("provider:gemini-api")||r.startsWith("gemini-api:")){let i=m(p(e,"executorRef"));return{provider:K,...i?.model?{model:i.model}:{model:E()},rule:"lane:gemini_api"}}if(r.includes("provider:gemini")||r.startsWith("gemini:")){let i=m(p(e,"executorRef"));return{provider:x,...i?.model?{model:i.model}:{model:E()},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:T,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 Or(r,t)||o==="deep_reviewer"?{provider:"cursor",rule:"lane:deep_review"}:{provider:"cursor",rule:"lane:review"};if(Or(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=ee();return{model:s,provider:Q(s),rule:"default:global"}}function an(e){return e?m(p(e,"executorRef")):null}function ln(e){switch(v(e)){case x:case K:return E();case"claude":return B;case"codex":return T;case"cursor":return L;default:return}}var be="explicit:cli_provider",Pr="config:worker_provider";function Ir(e,r,t){let n=v(r);return n===e.provider&&e.rule===t?e:{...e,provider:n,model:ln(n)??e.model,rule:t}}function un(e,r){let t=r?.trim();return!t||e.rule.startsWith("explicit:")&&e.rule!==be?e:Ir(e,t,be)}function cn(e,r){if(r.explicitProvider?.trim()||xe(r.task))return e;let t=r.configuredProvider?.trim();if(!t)return e;let n=v(t);return n===N||n===e.provider?e:Ir(e,n,Pr)}function dn(e){let r,t=an(e.task),n=e.explicitModel?.trim()?void 0:t?.model?.trim(),o=!e.explicitProvider?.trim()&&t?.provider?.trim()?t.provider.trim():void 0;if(e.explicitModel?.trim()){let c=e.explicitModel.trim(),u=on(c,e.explicitProvider);u?r=u:r={model:c,provider:e.explicitProvider?.trim()||Q(c),rule:"explicit:cli",requestedModel:c}}else if(n)r={model:n,provider:o||Q(n),rule:t?.rule??"executor_ref:model",requestedModel:n};else if(e.task&&Z(e.task)){let c=nn(e.task),u,f;if(c)u=c,f="task:provider_override";else{let Ee=typeof e.task.roleLane=="string"?e.task.roleLane.toLowerCase():"",Kr=typeof e.task.executorRef=="string"?e.task.executorRef.toLowerCase():"",Wr=typeof e.task.title=="string"?e.task.title.toLowerCase():"";u=Ar(Ee,Kr,Wr),f=u===U?"factory:claude_review":"factory:claude_implementation"}r={model:u,provider:"claude",rule:f,requestedModel:u}}else if(e.task&&Object.keys(e.task).length>0){let c=wr(e.task);r={...c,requestedModel:c.model}}else{let c=ee();r={model:c,provider:e.explicitProvider?.trim()||Q(c),rule:"default:global",requestedModel:c}}r=un(r,e.explicitProvider),r=cn(r,{explicitProvider:e.explicitProvider,task:e.task,configuredProvider:e.configuredProvider});let s=!!e.configuredProvider?.trim()&&v(e.configuredProvider)!==N&&r.rule==="config:worker_provider",i=Nr({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===be||i.rule===Pr||y(i.provider)&&(e.explicitProviderIsOperatorOverride||Z(e.task))||i.provider===ve||i.provider===x||i.provider===K||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??T:i.model,rule:l.rule,requestedModel:i.requestedModel,orchestrationAudit:l.audit}}function pn(e,r,t){return e||r||t||ee()||B}z();z();var N="cursor",mn=new Set(["claude","opus","anthropic"]),fn=[/\[worker-provider:\s*claude\]/i,/\[use-claude-worker\]/i,/\[operator-worker-provider:\s*claude\]/i];function F(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function y(e){if(!e?.trim())return!1;let r=e.trim().toLowerCase();return mn.has(r)?!0:r.includes("claude")||r.includes("opus")}function Z(e){if(!e)return!1;let r=e.workerProviderOverride;if(typeof r=="string"&&y(r))return!0;let t=F(e,"executorRef").toLowerCase();if(t==="provider:claude"||t.startsWith("provider:claude:")||t.includes("claude-worker-override")||t.includes("operator-claude"))return!0;let n=m(F(e,"executorRef"));if(n?.provider&&y(n.provider)||n?.model&&y(gn(n.model)))return!0;let o=F(e,"description");if(fn.some(i=>i.test(o)))return!0;let s=F(e,"title");return!!/\[use-claude-worker\]/i.test(s)}function gn(e){let r=e.trim().toLowerCase();return/^claude[-_]/.test(r)||/^(?:opus|sonnet|haiku)\b/.test(r)?"claude":r}function hn(e,r){return{provider:N,model:L,rule:`policy:cursor_default${r}`,requestedModel:e}}var Rn=["explicit:","executor_ref:","factory:","task:"];function yn(e){return Rn.some(r=>e.startsWith(r))}function xe(e){if(!e)return!1;let r=e.workerProviderOverride;return typeof r=="string"&&r.trim()||m(F(e,"executorRef"))?.provider?!0:Z(e)}function Nr(e){let{routing:r,task:t}=e,n=e.explicitProvider?.trim().toLowerCase();if(e.explicitProviderIsOperatorOverride&&y(n))return{...r,provider:"claude",rule:r.rule.startsWith("explicit:")?r.rule:"explicit:operator_provider"};if(n||yn(r.rule)||xe(t)||!y(r.provider))return r;let o=r.rule&&r.rule!=="default:global"?`:${r.rule.replace(/:/g,"_")}`:"";return hn(r.model,o)}function _n(e){let r=e?.executorRef;return typeof r=="string"?r.trim():""}function Tr(e){return e?.trim()||void 0}function kn(e){let r=_n(e.task),t=m(r),n=e.explicitProvider?.trim().toLowerCase(),o=Tr(e.explicitModel??void 0),s=n||t?.provider,i=o||t?.model,l=n||o?"cli":t?.rule??"none";if(!s&&!i)return{ok:!0};!s&&i&&(/^claude[-_]/i.test(i)||/^(?:opus|sonnet|haiku)\b/i.test(i))&&(s="claude");let c=e.routing.provider,u=Tr(e.routing.model),f={provider:c,model:u,rule:e.routing.rule};return s&&s!=="cursor"||r&&te(r)||n&&n!=="cursor"?c==="cursor"?{ok:!1,error:`model_routing_mismatch: requested ${s??"non-cursor"}${i?` model=${i}`:""} (${l}) but routing resolved to cursor (${e.routing.rule})`,requested:{provider:s,model:i,source:l},resolved:f}:i&&u&&i!==u&&!y(c)?{ok:!1,error:`model_routing_mismatch: requested model=${i} (${l}) but routing resolved model=${u} (${e.routing.rule})`,requested:{provider:s,model:i,source:l},resolved:f}:{ok:!0,requested:{provider:s,model:i,source:l},resolved:f}:{ok:!0,resolved:f}}export{L as CURSOR_DEFAULT_MODEL,Cr as GLOBAL_DEFAULT_MODEL,kn as assessDispatchModelGuard,te as executorRefRequestsNonCursorWorker,wr as inferModelRoutingFromTask,m as parseExecutorRefRoutingIntent,ee as resolveGlobalDefaultModel,pn as resolveModelFallback,dn as resolveWorkerLaunch};
@@ -1 +1 @@
1
- import{existsSync as K}from"node:fs";import{homedir as H}from"node:os";import T from"node:path";import{createHash as _}from"node:crypto";import{statSync as R}from"node:fs";import{spawnSync as x}from"node:child_process";function c(e){try{let t=R(e),r=`${e}|${t.size}|${t.mtimeMs}`;return _("sha256").update(r).digest("hex").slice(0,16)}catch{return}}function u(e){return _("sha256").update(`env:${e}`).digest("hex").slice(0,16)}function d(e,t){for(let r of t){let o=process.env[r]?.trim();if(o)return o}return e}function a(e,t,r={}){let o=r.timeoutMs??8e3;try{let n=x(e,t,{encoding:"utf8",timeout:o,env:{...process.env,...r.env,CI:"1",NO_COLOR:"1"}});if(n.status===0)return{ok:!0,note:r.okNote??`${e} ${t.join(" ")}: ok`};let i=(n.stderr||n.stdout||"").trim(),s=r.failPrefix??`${e} ${t.join(" ")} failed`;return{ok:!1,note:i?`${s}: ${i.slice(0,200)}`:s}}catch(n){return{ok:!1,note:n instanceof Error?n.message:`${e} probe failed`}}}function h(e,t,r={}){let o=r.timeoutMs??8e3;try{return x(e,t,{stdio:"ignore",timeout:o,env:{...process.env,CI:"1",NO_COLOR:"1"}}).status===0?{ok:!0,note:r.okNote??`${e} authenticated`}:{ok:!1,note:r.failNote??`${e} not authenticated`}}catch(n){return{ok:!1,note:n instanceof Error?n.message:`${e} auth probe failed`}}}var j="claude";function L(){let e=H();return[T.join(e,".claude",".credentials.json")]}function P(e=new Date().toISOString()){let t=d(j,["KYNVER_CLAUDE_BIN","CLAUDE_BIN"]);if(process.env.ANTHROPIC_API_KEY?.trim())return{providerId:"claude",ready:!1,authSource:"api_key_env",sessionFingerprint:u("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 r=a(t,["--version"],{okNote:`${t} CLI available`,failPrefix:`${t} CLI not available`}),o=L().find(s=>K(s)),n=h(t,["auth","status"],{okNote:"claude auth status: authenticated",failNote:"claude auth status: not authenticated"}),i=r.ok&&(n.ok||!!o);return{providerId:"claude",ready:i,authSource:"oauth_local",sessionFingerprint:o?c(o):void 0,checkedAt:e,note:i?"Local Claude Code OAuth session bound on runner":[r.note,n.note,o?void 0:"no ~/.claude/.credentials.json"].filter(Boolean).join("; ")}}import{existsSync as D}from"node:fs";import{homedir as M}from"node:os";import p from"node:path";var Y="codex";function $(){let e=M();return[process.env.CODEX_HOME?.trim()?p.join(p.resolve(process.env.CODEX_HOME.trim()),"auth.json"):null,p.join(e,".codex","auth.json"),p.join(e,".config","codex","auth.json")].filter(r=>!!r)}function w(e){return p.dirname(e)}function F(e){let t,r;for(let o of $()){if(!D(o))continue;t??=o;let n=a(e,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status",env:{CODEX_HOME:w(o)}});if(r??=n,n.ok)return{authPath:o,login:n}}return{authPath:t,login:r??a(e,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status"})}}function I(e=new Date().toISOString()){let t=d(Y,["KYNVER_CODEX_BIN","CODEX_BIN"]);if(process.env.CODEX_API_KEY?.trim())return{providerId:"codex",ready:!0,authSource:"api_key_env",sessionFingerprint:u("CODEX_API_KEY"),checkedAt:e,note:"CODEX_API_KEY present (env binding \u2014 cloud credits path, no token stored in Kynver)"};let{authPath:r,login:o}=F(t),n=!!r&&o.ok;return{providerId:"codex",ready:n,authSource:"oauth_local",sessionFingerprint:r?c(r):void 0,checkedAt:e,note:n?"Local Codex OAuth session bound on runner":[o.note,r?void 0:"no Codex auth store found"].filter(Boolean).join("; ")}}import{existsSync as U}from"node:fs";import{homedir as V}from"node:os";import O from"node:path";function X(){let e=process.env.HERMES_HOME?.trim(),t=e?O.resolve(e):O.join(V(),".hermes");return O.join(t,"auth.json")}function f(e=new Date().toISOString()){let t=d("hermes",["KYNVER_HERMES_BIN","HERMES_BIN"]),r=a(t,["--version"],{okNote:`${t} CLI available`,failPrefix:`${t} CLI not available`}),o=X(),n=U(o),i=h(t,["auth","status","openai-codex"],{okNote:"hermes openai-codex: logged in",failNote:"hermes openai-codex: not logged in"}),s=r.ok&&i.ok;return{path:"hermes_openai_codex",ready:s,authSource:s?"subscription_hermes":"none",sessionFingerprint:n?c(o):void 0,checkedAt:e,note:s?"Hermes openai-codex subscription session bound (ChatGPT Codex OAuth)":[r.note,i.note,n?void 0:"no ~/.hermes/auth.json"].filter(Boolean).join("; ")}}function S(e=new Date().toISOString()){let t=I(e);if(t.ready)return{...t,path:"codex_cli"};let r=f(e);return r.ready?{providerId:"codex",ready:!0,authSource:r.authSource,sessionFingerprint:r.sessionFingerprint,checkedAt:r.checkedAt,note:r.note,path:"hermes_openai_codex",hermesOpenAiCodex:r}:{providerId:"codex",ready:!1,authSource:"none",checkedAt:e,path:"none",hermesOpenAiCodex:r,note:[t.note,r.note].filter(Boolean).join("; ")||"Codex CLI and Hermes openai-codex unavailable"}}import{existsSync as W}from"node:fs";import{homedir as G}from"node:os";import g from"node:path";var J="agent";function z(){let e=G(),t=[g.join(e,".config","cursor","auth.json")];if(process.platform==="win32"){let r=process.env.LOCALAPPDATA?.trim(),o=process.env.APPDATA?.trim();r&&t.push(g.join(r,"cursor-agent","auth.json")),o&&t.push(g.join(o,"cursor","auth.json"))}return t}function E(e=new Date().toISOString()){let t=d(J,["KYNVER_CURSOR_AGENT_BIN","CURSOR_AGENT_BIN"]);if(process.env.CURSOR_API_KEY?.trim())return{providerId:"cursor",ready:!1,authSource:"api_key_env",sessionFingerprint:u("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 r=a(t,["-v"],{okNote:`${t} CLI available`,failPrefix:`${t} CLI not available`}),o=z().find(i=>W(i)),n=!!o&&r.ok;return{providerId:"cursor",ready:n,authSource:"oauth_local",sessionFingerprint:o?c(o):void 0,checkedAt:e,note:n?"Local Cursor/Composer OAuth session bound on runner":[r.note,o?void 0:"no ~/.config/cursor/auth.json"].filter(Boolean).join("; ")}}import{existsSync as q,readFileSync as Q}from"node:fs";import{homedir as Z}from"node:os";import C from"node:path";var ee=["OPENAI_API_KEY","ANTHROPIC_API_KEY","KYNVER_API_KEY","KYNVER_BASE_URL"];function te(){let e=process.env.HERMES_HOME?.trim(),t=e?C.resolve(e):C.join(Z(),".hermes");return C.join(t,".env")}function re(e){try{let t=Q(e,"utf8"),r=[];for(let o of ee)new RegExp(`^${o}=`,"m").test(t)&&r.push(o);return r}catch{return[]}}function b(e=new Date().toISOString()){let t=d("hermes",["KYNVER_HERMES_BIN","HERMES_BIN"]),r=a(t,["--version"],{okNote:`${t} CLI available`,failPrefix:`${t} CLI not available`}),o=te(),n=q(o),i=n?re(o):[],v=i.some(B=>B.endsWith("_API_KEY"))?"api_key_env":n?"oauth_local":"none",N=r.ok&&n;return{adapterId:"hermes",cliAvailable:r.ok,profileBound:n,authSource:v,sessionFingerprint:n?c(o):void 0,checkedAt:e,note:N?`Hermes profile bound (${i.length?`keys: ${i.join(", ")}`:"no API keys detected"})`:[r.note,n?void 0:"no ~/.hermes/.env"].filter(Boolean).join("; ")}}function oe(e={}){let t=e.nowIso?.()??new Date().toISOString(),r=S(t),o={codex:r,cursor:E(t),claude:P(t)},n=Object.values(o).filter(i=>i.ready).length;return{generatedAt:t,bindings:o,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:b(t),hermesOpenAiCodex:f(t),codexAdapterPath:r.path,readyCount:n}}var ne={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 ie(){return Object.values(ne)}var k=["off","observe","enforce"];function se(e){let t=(e??"off").trim().toLowerCase();return k.includes(t)?t:"off"}function m(e=process.env){return se(e.KYNVER_ORCHESTRATION_POLICY_MODE)}function y(e=process.env){let t=e.KYNVER_ORCHESTRATION_ENFORCE_TASKS?.trim().toLowerCase();return t?t==="1"||t==="true"||t==="yes"||t==="on":m(e)==="enforce"}import{createHash as ae}from"node:crypto";function l(e){if(e==null)return null;let t=e.trim();return t.length?t:null}function A(e){let t=l(e.sessionId)??"anonymous",r=l(e.title)??l(e.action)??"foreground",o=ae("sha256").update([l(e.planId)??"",l(e.parentTaskId)??"",r.toLowerCase()].join("|")).digest("hex").slice(0,16);return`hermes-foreground:${t}:${o}`}function ce(e,t){return e==="enforce"&&t?"enforce_harness_task":e==="observe"?"observe_bypass":"allow_local"}function de(e,t=process.env){let r=m(t),o=y(t),n=ce(r,o),i=n==="enforce_harness_task"?A({sessionId:e.sessionId,planId:e.planId,parentTaskId:e.parentTaskId,title:e.title,action:e.action}):null,s;return r==="off"?s="Orchestration policy off \u2014 local foreground path allowed.":n==="observe_bypass"?s=`Observe mode: ${e.action} bypass logged; local fallback preserved.`:n==="enforce_harness_task"?s=`Enforce mode: ${e.action} must create linked harness AgentTask (${i}).`:s="Local foreground path allowed.",{mode:r,decision:n,idempotencyKey:i,bypassLogged:n==="observe_bypass",reason:s}}export{A as buildForegroundHarnessIdempotencyKey,oe as buildOrchestrationProviderInventory,de as evaluateOrchestrationPolicy,y as isOrchestrationEnforceTasksEnabled,ie as listOrchestrationProviderCapabilities,m as resolveOrchestrationPolicyMode};
1
+ import{existsSync as L}from"node:fs";import{homedir as D}from"node:os";import B from"node:path";import{createHash as v}from"node:crypto";import{statSync as w}from"node:fs";import{spawnSync as P}from"node:child_process";function c(e){try{let r=w(e),t=`${e}|${r.size}|${r.mtimeMs}`;return v("sha256").update(t).digest("hex").slice(0,16)}catch{return}}function d(e){return v("sha256").update(`env:${e}`).digest("hex").slice(0,16)}function u(e,r){for(let t of r){let n=process.env[t]?.trim();if(n)return n}return e}function a(e,r,t={}){let n=t.timeoutMs??8e3;try{let o=P(e,r,{encoding:"utf8",timeout:n,env:{...process.env,...t.env,CI:"1",NO_COLOR:"1"}});if(o.status===0)return{ok:!0,note:t.okNote??`${e} ${r.join(" ")}: ok`};let i=(o.stderr||o.stdout||"").trim(),s=t.failPrefix??`${e} ${r.join(" ")} failed`;return{ok:!1,note:i?`${s}: ${i.slice(0,200)}`:s}}catch(o){return{ok:!1,note:o instanceof Error?o.message:`${e} probe failed`}}}function h(e,r,t={}){let n=t.timeoutMs??8e3;try{return P(e,r,{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 Y="claude";function M(){let e=D();return[B.join(e,".claude",".credentials.json")]}function x(e=new Date().toISOString()){let r=u(Y,["KYNVER_CLAUDE_BIN","CLAUDE_BIN"]);if(process.env.ANTHROPIC_API_KEY?.trim())return{providerId:"claude",ready:!1,authSource:"api_key_env",sessionFingerprint:d("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=a(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=M().find(s=>L(s)),o=h(r,["auth","status"],{okNote:"claude auth status: authenticated",failNote:"claude auth status: not authenticated"}),i=t.ok&&(o.ok||!!n);return{providerId:"claude",ready:i,authSource:"oauth_local",sessionFingerprint:n?c(n):void 0,checkedAt:e,note:i?"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 j}from"node:fs";import{homedir as U}from"node:os";import p from"node:path";var H="codex";function $(){let e=U();return[process.env.CODEX_HOME?.trim()?p.join(p.resolve(process.env.CODEX_HOME.trim()),"auth.json"):null,p.join(e,".codex","auth.json"),p.join(e,".config","codex","auth.json")].filter(t=>!!t)}function F(e){return p.dirname(e)}function W(e){let r,t;for(let n of $()){if(!j(n))continue;r??=n;let o=a(e,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status",env:{CODEX_HOME:F(n)}});if(t??=o,o.ok)return{authPath:n,login:o}}return{authPath:r,login:t??a(e,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status"})}}function y(e=new Date().toISOString()){let r=u(H,["KYNVER_CODEX_BIN","CODEX_BIN"]);if(process.env.CODEX_API_KEY?.trim())return{providerId:"codex",ready:!0,authSource:"api_key_env",sessionFingerprint:d("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}=W(r),o=!!t&&n.ok;return{providerId:"codex",ready:o,authSource:"oauth_local",sessionFingerprint:t?c(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 V}from"node:fs";import{homedir as J}from"node:os";import E from"node:path";function z(){let e=process.env.HERMES_HOME?.trim(),r=e?E.resolve(e):E.join(J(),".hermes");return E.join(r,"auth.json")}function g(e=new Date().toISOString()){let r=u("hermes",["KYNVER_HERMES_BIN","HERMES_BIN"]),t=a(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=z(),o=V(n),i=h(r,["auth","status","openai-codex"],{okNote:"hermes openai-codex: logged in",failNote:"hermes openai-codex: not logged in"}),s=t.ok&&i.ok;return{path:"hermes_openai_codex",ready:s,authSource:s?"subscription_hermes":"none",sessionFingerprint:o?c(n):void 0,checkedAt:e,note:s?"Hermes openai-codex subscription session bound (ChatGPT Codex OAuth)":[t.note,i.note,o?void 0:"no ~/.hermes/auth.json"].filter(Boolean).join("; ")}}function I(e=new Date().toISOString()){let r=y(e);if(r.ready)return{...r,path:"codex_cli"};let t=g(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"}}import{existsSync as Z}from"node:fs";import{homedir as Q}from"node:os";import l from"node:path";var G=["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"],Be=new Set(G);var X=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],Ye=new Set(X);import{spawnSync as q}from"node:child_process";function O(e,r=process.env){try{let t=q(e,["status","--format","json"],{encoding:"utf8",timeout:8e3,env:{...r,CI:"1",NO_COLOR:"1"}});if(t.status!==0)return{ok:!1,note:"agent status: not authenticated"};let n=(t.stdout||"").trim();if(!n)return{ok:!1,note:"agent status: empty response"};let o;try{o=JSON.parse(n)}catch{return{ok:!1,note:"agent status: unparseable response"}}return typeof o=="object"&&o!==null&&o.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 C(e=process.env){let r=[],t=e.KYNVER_CURSOR_AUTH_HOME?.trim();t&&(r.push(l.join(t,".config","cursor","auth.json")),r.push(l.join(t,".cursor-agent","auth.json")));let n=Q();if(r.push(l.join(n,".config","cursor","auth.json")),r.push(l.join(n,".cursor-agent","auth.json")),process.platform==="win32"){let o=e.LOCALAPPDATA?.trim(),i=e.APPDATA?.trim();o&&r.push(l.join(o,"cursor-agent","auth.json")),i&&r.push(l.join(i,"cursor","auth.json"))}return r}var ee="agent";function b(e=new Date().toISOString()){let r=u(ee,["KYNVER_CURSOR_AGENT_BIN","CURSOR_AGENT_BIN"]);if(process.env.CURSOR_API_KEY?.trim())return{providerId:"cursor",ready:!1,authSource:"api_key_env",sessionFingerprint:d("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=a(r,["-v"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=C().find(m=>Z(m)),o=O(r),i=!!n||o.ok,s=t.ok&&i;return{providerId:"cursor",ready:s,authSource:"oauth_local",sessionFingerprint:n?c(n):void 0,checkedAt:e,note:s?"Local Cursor/Composer OAuth session bound on runner":[t.note,i?void 0:o.note??"no ~/.config/cursor/auth.json or `agent login` session"].filter(Boolean).join("; ")}}import{existsSync as re,readFileSync as te}from"node:fs";import{homedir as oe}from"node:os";import S from"node:path";var ne=["OPENAI_API_KEY","ANTHROPIC_API_KEY","KYNVER_API_KEY","KYNVER_BASE_URL"];function ie(){let e=process.env.HERMES_HOME?.trim(),r=e?S.resolve(e):S.join(oe(),".hermes");return S.join(r,".env")}function se(e){try{let r=te(e,"utf8"),t=[];for(let n of ne)new RegExp(`^${n}=`,"m").test(r)&&t.push(n);return t}catch{return[]}}function N(e=new Date().toISOString()){let r=u("hermes",["KYNVER_HERMES_BIN","HERMES_BIN"]),t=a(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=ie(),o=re(n),i=o?se(n):[],m=i.some(K=>K.endsWith("_API_KEY"))?"api_key_env":o?"oauth_local":"none",T=t.ok&&o;return{adapterId:"hermes",cliAvailable:t.ok,profileBound:o,authSource:m,sessionFingerprint:o?c(n):void 0,checkedAt:e,note:T?`Hermes profile bound (${i.length?`keys: ${i.join(", ")}`:"no API keys detected"})`:[t.note,o?void 0:"no ~/.hermes/.env"].filter(Boolean).join("; ")}}function ae(e={}){let r=e.nowIso?.()??new Date().toISOString(),t=I(r),n={codex:t,cursor:b(r),claude:x(r)},o=Object.values(n).filter(i=>i.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:N(r),hermesOpenAiCodex:g(r),codexAdapterPath:t.path,readyCount:o}}var ce={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 ue(){return Object.values(ce)}var k=["off","observe","enforce"];function de(e){let r=(e??"off").trim().toLowerCase();return k.includes(r)?r:"off"}function _(e=process.env){return de(e.KYNVER_ORCHESTRATION_POLICY_MODE)}function A(e=process.env){let r=e.KYNVER_ORCHESTRATION_ENFORCE_TASKS?.trim().toLowerCase();return r?r==="1"||r==="true"||r==="yes"||r==="on":_(e)==="enforce"}import{createHash as le}from"node:crypto";function f(e){if(e==null)return null;let r=e.trim();return r.length?r:null}function R(e){let r=f(e.sessionId)??"anonymous",t=f(e.title)??f(e.action)??"foreground",n=le("sha256").update([f(e.planId)??"",f(e.parentTaskId)??"",t.toLowerCase()].join("|")).digest("hex").slice(0,16);return`hermes-foreground:${r}:${n}`}function pe(e,r){return e==="enforce"&&r?"enforce_harness_task":e==="observe"?"observe_bypass":"allow_local"}function fe(e,r=process.env){let t=_(r),n=A(r),o=pe(t,n),i=o==="enforce_harness_task"?R({sessionId:e.sessionId,planId:e.planId,parentTaskId:e.parentTaskId,title:e.title,action:e.action}):null,s;return t==="off"?s="Orchestration policy off \u2014 local foreground path allowed.":o==="observe_bypass"?s=`Observe mode: ${e.action} bypass logged; local fallback preserved.`:o==="enforce_harness_task"?s=`Enforce mode: ${e.action} must create linked harness AgentTask (${i}).`:s="Local foreground path allowed.",{mode:t,decision:o,idempotencyKey:i,bypassLogged:o==="observe_bypass",reason:s}}export{R as buildForegroundHarnessIdempotencyKey,ae as buildOrchestrationProviderInventory,fe as evaluateOrchestrationPolicy,A as isOrchestrationEnforceTasksEnabled,ue as listOrchestrationProviderCapabilities,_ as resolveOrchestrationPolicyMode};
@@ -1,2 +1,2 @@
1
- var i=(e,r,t)=>()=>{if(t)throw t[0];try{return e&&(r=e(e=0)),r}catch(n){throw t=[n],n}};function G(e){let r=e[Cr];return r?new Set(r.split(/[\s,]+/).map(t=>t.trim()).filter(Boolean)):new Set}function v(e,r={}){return kr.has(e)?!0:Sr.has(e)||r.operatorAllow?.has(e)||Or.some(t=>e.endsWith(t))?!1:xr.some(t=>e.endsWith(t))}function ye(e){let r=G(e);return Object.keys(e).filter(t=>v(t,{operatorAllow:r})).sort()}function ve(e){let r=G(e);return r.size===0?[]:Object.keys(e).filter(t=>r.has(t)&&!v(t,{operatorAllow:r})&&v(t)).sort()}function C(e){let r=G(e),t={...e};for(let n of Object.keys(t))v(n,{operatorAllow:r})&&delete t[n];return t}function Ar(e){let r=ye(e),t=ve(e);return{forbiddenPresent:r,safe:r.length===0,...t.length?{operatorAllowedActive:t}:{}}}var br,kr,xr,Er,Sr,Or,Cr,A=i(()=>{"use strict";br=["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"],kr=new Set(br),xr=["_SECRET","_API_KEY","_KEK","_KEY","_TOKEN","_PASSWORD","_PASSPHRASE","_SALT"],Er=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],Sr=new Set(Er),Or=["_PUBLIC_KEY"],Cr="KYNVER_WORKER_ENV_ALLOW"});var g=i(()=>{"use strict"});function J(e){if(!e)return!1;try{return process.kill(e,0),!0}catch{return!1}}var a=i(()=>{"use strict"});var I=i(()=>{"use strict";g();a();A()});var Se=i(()=>{"use strict";I()});var Q=i(()=>{"use strict";I();g();Se()});var Z=i(()=>{"use strict";a()});var m=i(()=>{"use strict"});var N=i(()=>{"use strict"});var Oe=i(()=>{"use strict"});var In,Nn,ee=i(()=>{"use strict";In=25*1024*1024*1024,Nn=12*1024*1024*1024});var Dn,Bn,Ce=i(()=>{"use strict";ee();Dn=5*1024*1024*1024,Bn=10*1024*1024*1024});var Vn,jn,re=i(()=>{"use strict";Ce();ee();Vn=30*1024*1024*1024,jn=15*1024*1024*1024});var we=i(()=>{"use strict";a()});import jr from"node:path";var eo,te=i(()=>{"use strict";g();we();eo=jr.join(".openclaw","harness")});var W=i(()=>{"use strict";f();m();N();K();te()});var Ne=i(()=>{"use strict";f();te();W();a()});var oe=i(()=>{"use strict";Ne();a()});var Te=i(()=>{"use strict";oe();a()});var We=i(()=>{"use strict"});var Ke=i(()=>{"use strict";We();a()});var Me=i(()=>{"use strict"});var De=i(()=>{"use strict";Me()});var D=i(()=>{"use strict"});var Be=i(()=>{"use strict";De();a();D()});var Ue=i(()=>{"use strict";D()});var Le=i(()=>{"use strict"});var Fe=i(()=>{"use strict"});var ie=i(()=>{"use strict"});var $e=i(()=>{"use strict"});var He=i(()=>{"use strict";ie();$e()});var Ve=i(()=>{"use strict";Ke();Be();D();Ue();Le();I();Fe();He();ie();a()});var je=i(()=>{"use strict";Ve()});var rt,tt,Ye=i(()=>{"use strict";Oe();f();m();N();K();re();oe();Te();je();a();rt=500*1024*1024,tt=4*1024*1024*1024});var K=i(()=>{"use strict";Ye()});import{homedir as nt}from"node:os";import ot from"node:path";var Ge,se=i(()=>{"use strict";Ge=ot.join(nt(),".kynver",".env")});var qe=i(()=>{"use strict"});var ze=i(()=>{"use strict";qe()});var Je=i(()=>{"use strict"});var ae=i(()=>{"use strict";ze();Je()});var Xe=i(()=>{"use strict"});var Qe=i(()=>{"use strict";Xe()});var B=i(()=>{"use strict";se();g();f();ae();Qe()});var Ze=i(()=>{"use strict";m();m()});var er=i(()=>{"use strict";se();ae();B()});var rr=i(()=>{"use strict";Q();m();Ze();f();B();er();Z();W()});function _(e){let r=e.trim().toLowerCase();return mt[r]??r}var tr,pt,mt,U=i(()=>{"use strict";tr=["claude","cursor","codex","gemini","gemini-api","openai-compatible"],pt=tr.join("|"),mt={anthropic:"claude",opus:"claude",openai:"openai-compatible",openai_compatible:"openai-compatible","openai-compat":"openai-compatible",chatgpt:"codex",gpt:"codex","openai-api":"openai-compatible",openai_api:"openai-compatible",google:"gemini",gemini_cli:"gemini",gemini_api:"gemini-api","google-api":"gemini-api",google_api:"gemini-api"}});import{homedir as gt,totalmem as ra}from"node:os";import le from"node:path";var nr,fa,ga,ha,ya,f=i(()=>{"use strict";Q();g();Z();m();N();K();re();B();rr();U();W();nr=le.join(gt(),".kynver"),fa=le.join(nr,"config.json"),ga=le.join(nr,"credentials"),ha=500*1024*1024,ya=4*1024*1024*1024});A();A();var q="KYNVER_NO_PROD_DB_CREDENTIALS",wr=["KYNVER_ENV_FILE"],Pr=new Set(["1","true","yes","on"]);function _e(e){let r=e[q]?.trim().toLowerCase();return r!==void 0&&Pr.has(r)}function p(e,r={}){let t=C(e);if(!r.reviewWorker)return t;let n={...t,[q]:"1"};for(let o of wr)delete n[o];return n}var Re=["DATABASE_URL","PRODUCTION_DATABASE_URL","KYNVER_PRODUCTION_DATABASE_URL"];function Ir(e,r={}){let t=p(e,r),n=Object.keys(t).filter(c=>c.endsWith("_SECRET")||c.endsWith("_API_KEY")||Re.includes(c)),o=Re.every(c=>t[c]===void 0),s=r.reviewWorker?t.KYNVER_ENV_FILE===void 0:!0,l=_e(t);return{reviewMode:!!r.reviewWorker,noProdFlagPresent:r.reviewWorker?l:!0,forbiddenKeysAfterScrub:n.sort(),productionDbKeysAbsent:o,envFilePointerStripped:s,safe:o&&n.length===0&&s&&(!r.reviewWorker||l)}}var Nr="expert-lane-pr-review:",Tr="plan-review-task",Wr="scheduledjob:",w=new Set(["lorentz","dalton","rhea","sentinel"]);function Kr(e){if(!e)return null;let r=e.trim().toLowerCase();return r.length?r:null}function z(e){return/\b(deep[- ]?review|plan review|review .*plan|security review|red[- ]team|lb\d+|runtime verification)\b/.test(e)}function Mr(e,r){return e.startsWith("factory:")?e.includes("lb")||z(r):!1}function Dr(e){let r=(e.executorRef??"").toLowerCase(),t=(e.title??"").toLowerCase(),n=(e.description??"").toLowerCase(),o=`${t}
2
- ${n}`,s=Kr(e.personaSlug);return r.startsWith("harness-lane:blocked-lane-unblock:")||r==="lane:over_attempt_recovery"||r.startsWith("next-action-fix:")||r.startsWith("next-action-landing:")||r.startsWith("code-work-lane-chain:release:")?!1:!!(r.startsWith(Nr)||r===Tr||r.startsWith("daemon-review:")||s&&w.has(s)&&(r.includes("evidence")||r.includes("validate")||r.includes("review")||Mr(r,o)||z(o))||r.startsWith(Wr)&&e.parentTaskId&&s&&w.has(s)||e.planId&&!e.parentTaskId&&s&&w.has(s)&&z(o)||t.includes("expert pr review")||e.parentTaskId&&(t.startsWith("review:")||t.includes("review required")||t.includes("runtime review"))&&s&&w.has(s))}var Br=/^claude[-_]/i,Ur=/^(?:opus|sonnet|haiku)\b/i;function be(e){let r=e.trim();return Br.test(r)||Ur.test(r)}function ke(e){let r=e.trim().toLowerCase();return r.startsWith("gpt-")||r.startsWith("gpt5")||r.includes("codex")}function xe(e){let r=e.trim().toLowerCase();return r.includes("composer")||r.includes("cursor")}function Ee(e){return e.trim().toLowerCase().startsWith("gemini-")}function Lr(e){return ke(e)?"codex":be(e)?"claude":Ee(e)?"gemini":(xe(e),"cursor")}function Fr(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 $r(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?be(n)||ke(n)||xe(n)||Ee(n)?{lane:t,model:n,provider:Lr(n),rule:"executor_ref:harness_lane_model"}:{lane:t,rule:"executor_ref:harness_lane"}:{lane:t,rule:"executor_ref:harness_lane"}}function P(e){let r=typeof e=="string"?e.trim():"";return r?Fr(r)??$r(r):null}f();a();var sr="kynver",ar=["agent_os_context_envelope","agent_os_search_memory","agent_os_search_skills","agent_os_get_skill","agent_os_progress_note"],Rt=ar.map(e=>`mcp__${sr}__${e}`);a();a();var hl=process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.5";function bt(){return process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.5"}var kt=bt();a();var $l=600*1e3;a();var rc=600*1e3;var lr="composer-2.5";U();U();var d="cursor",Ot=new Set(["claude","opus","anthropic"]),Ct=[/\[worker-provider:\s*claude\]/i,/\[use-claude-worker\]/i,/\[operator-worker-provider:\s*claude\]/i];function k(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function u(e){if(!e?.trim())return!1;let r=e.trim().toLowerCase();return Ot.has(r)?!0:r.includes("claude")||r.includes("opus")}function ce(e){if(!e)return!1;let r=e.workerProviderOverride;if(typeof r=="string"&&u(r))return!0;let t=k(e,"executorRef").toLowerCase();if(t==="provider:claude"||t.startsWith("provider:claude:")||t.includes("claude-worker-override")||t.includes("operator-claude"))return!0;let n=P(k(e,"executorRef"));if(n?.provider&&u(n.provider)||n?.model&&u(At(n.model)))return!0;let o=k(e,"description");if(Ct.some(l=>l.test(o)))return!0;let s=k(e,"title");return!!/\[use-claude-worker\]/i.test(s)}function At(e){let r=e.trim().toLowerCase();return/^claude[-_]/.test(r)||/^(?:opus|sonnet|haiku)\b/.test(r)?"claude":r}function wt(e,r){return{provider:d,model:lr,rule:`policy:cursor_default${r}`,requestedModel:e}}var Pt=["explicit:","executor_ref:","factory:","task:"];function It(e){return Pt.some(r=>e.startsWith(r))}function ue(e){if(!e)return!1;let r=e.workerProviderOverride;return typeof r=="string"&&r.trim()||P(k(e,"executorRef"))?.provider?!0:ce(e)}function cr(e){let{routing:r,task:t}=e,n=e.explicitProvider?.trim().toLowerCase();if(e.explicitProviderIsOperatorOverride&&u(n))return{...r,provider:"claude",rule:r.rule.startsWith("explicit:")?r.rule:"explicit:operator_provider"};if(n||It(r.rule)||ue(t)||!u(r.provider))return r;let o=r.rule&&r.rule!=="default:global"?`:${r.rule.replace(/:/g,"_")}`:"";return wt(r.model,o)}function Nt(e,r=d){let t=e?.trim();return t?_(t):r}function Tt(e){let r=[...new Set(e.map(t=>t.trim().toLowerCase()).filter(Boolean))];return r.includes(d)?[...new Set(r.map(t=>u(t)?d:t))]:r.every(t=>u(t))?[d]:r}var Wt=/\b(npm run typecheck|tsc\b[^|&;]*--noEmit|node scripts\/verify-pr-local\.mjs|kynver (harness )?verify)\b/i,Kt=/\b(npm run build\b|next build\b)\b/i,Mt=/\b(vercel (build|deploy|--prod))\b/i,Dt=/\b(openai|anthropic|perplexity|voyage)\b.*\b(api|cli)\b|\b(paid|billable)[-_ ]?compute\b/i;function de(e){let r=e.trim();return r?Dt.test(r)?{heavy:!0,commandClass:"paid_compute",reason:"paid external compute requires heavy-verification token and operator approval"}:Mt.test(r)?{heavy:!0,commandClass:"vercel_verify",reason:"Vercel build/deploy verification requires heavy-verification token"}:Kt.test(r)?{heavy:!0,commandClass:"full_build",reason:"full app build requires heavy-verification token"}:Wt.test(r)?{heavy:!0,commandClass:"full_typecheck",reason:"full repo typecheck requires heavy-verification token"}:{heavy:!1,commandClass:"allowed",reason:null}:{heavy:!1,commandClass:"allowed",reason:null}}var $="heavy_verification_token_required";import{spawnSync as rn}from"node:child_process";a();import{closeSync as Ht,existsSync as E,mkdirSync as Vt,openSync as jt,readdirSync as mr,readFileSync as Yt,statSync as Gt,unlinkSync as fr,writeFileSync as qt}from"node:fs";import fe from"node:path";import{mkdirSync as Ut}from"node:fs";import{tmpdir as Lt}from"node:os";import H from"node:path";import{homedir as Bt}from"node:os";import ur from"node:path";function dr(){let e=process.env.KYNVER_STATE_ROOT;return e?ur.resolve(e):ur.join(Bt(),".kynver","state")}function Ft(){return!!(process.env.VERCEL||process.env.VERCEL_ENV||process.env.AWS_LAMBDA_FUNCTION_NAME||process.env.AWS_EXECUTION_ENV)}function $t(){let e=process.env.KYNVER_HEAVY_VERIFICATION_STATE_ROOT;return e?H.resolve(e):Ft()?H.join(Lt(),"kynver","state","heavy-verification"):H.join(dr(),"heavy-verification")}function pe(){return H.join($t(),"slots")}function x(){let e=pe();return Ut(e,{recursive:!0}),e}var S=120*6e4,pr=1;function zt(e,r){let t=Number(e);return!Number.isFinite(t)||t<=0?r:Math.floor(t)}function j(){let e=process.env.KYNVER_HEAVY_VERIFICATION_SKIP?.trim().toLowerCase();return e==="1"||e==="true"||e==="yes"}function V(){let e=process.env.KYNVER_HEAVY_VERIFICATION_MAX_CONCURRENT;return e?zt(e,pr):pr}function Jt(e){return`slot-${e}`}function Xt(e,r=pe()){return fe.join(r,`${e}.json`)}function ge(e){if(!E(e))return null;try{let r=JSON.parse(Yt(e,"utf8"));if(typeof r.slotId=="string"&&typeof r.pid=="number"&&typeof r.acquiredAt=="string"&&typeof r.command=="string")return r}catch{return null}return null}function gr(e,r=S){if(!e||!J(e.pid))return!0;let t=Date.parse(e.acquiredAt);return Number.isNaN(t)?!0:Date.now()-t>r}function hr(e,r){let t=ge(e);if(t)return gr(t,r);if(!E(e))return!0;try{return Date.now()-Gt(e).mtimeMs>r}catch{return!0}}function Qt(e,r){if(hr(e,r))try{fr(e)}catch{}}function Zt(e){return Vt(e,{recursive:!0}),e}function he(e={}){let r=Zt(e.slotsDir??x()),t=e.staleMs??S,n=0;for(let o of mr(r)){if(!o.endsWith(".json"))continue;let s=fe.join(r,o),l=E(s);Qt(s,t),l&&!E(s)&&(n+=1)}return n}function en(e={}){let r=e.slotsDir??x(),t=e.staleMs??S;he({slotsDir:r,staleMs:t});let n=[];for(let o of mr(r)){if(!o.endsWith(".json"))continue;let s=ge(fe.join(r,o));s&&!gr(s,t)&&n.push(s)}return n}function me(e={}){return en(e).length}function O(e,r={}){if(j())return{admitted:!0,slotId:null,activeSlots:0,maxSlots:V(),reason:null};let t=r.slotsDir??x(),n=r.staleMs??S,o=r.maxSlots??V();he({slotsDir:t,staleMs:n});for(let l=0;l<o;l+=1){let c=Jt(l),h=Xt(c,t),vr=ge(h);if(hr(h,n))try{fr(h)}catch{}else if(vr||E(h))continue;let Rr={slotId:c,pid:process.pid,acquiredAt:new Date().toISOString(),command:e};try{let y=jt(h,"wx");qt(y,JSON.stringify(Rr,null,2),"utf8"),Ht(y);let _r=me({slotsDir:t,staleMs:n});return{admitted:!0,slotId:c,activeSlots:_r,maxSlots:o,reason:null}}catch(y){if(y.code==="EEXIST")continue;throw y}}let s=me({slotsDir:t,staleMs:n});return{admitted:!1,slotId:null,activeSlots:s,maxSlots:o,reason:`heavy verification at capacity (${s}/${o} slots)`}}function Y(e,r={}){if(j())return{admitted:!0,slotId:null,activeSlots:0,maxSlots:V(),reason:null};let t=r.slotsDir??x(),n=r.staleMs??S,o=r.maxSlots??V();he({slotsDir:t,staleMs:n});let s=me({slotsDir:t,staleMs:n}),l=s<o;return{admitted:l,slotId:null,activeSlots:s,maxSlots:o,reason:l?null:`heavy verification at capacity (${s}/${o} slots); waiting for ${e}`}}function tn(e){e<=0||rn(process.execPath,["-e",`const d=Date.now()+${Math.floor(e)};while(Date.now()<d);`],{stdio:"ignore"})}function yr(e,r,t=2e3,n={}){let o=Date.now()+Math.max(0,r),s=O(e,n);for(;!s.admitted&&Date.now()<o;)tn(Math.min(t,o-Date.now())),s=O(e,n);return s}function nn(e,r={}){let t=de(e);if(!t.heavy)return{allowed:!0,outcome:"allowed",commandClass:t.commandClass,reason:"command does not require heavy-verification token",verificationGate:{...Y(e),slotId:null}};if(j())return{allowed:!0,outcome:"heavy_verification_skipped",commandClass:t.commandClass,reason:"KYNVER_HEAVY_VERIFICATION_SKIP bypasses gate",verificationGate:{...Y(e),slotId:null}};let n=r.waitMs??0,o=n>0?yr(e,n,r.pollMs):O(e);return o.admitted?{allowed:!0,outcome:"allowed",commandClass:t.commandClass,reason:t.reason??"heavy-verification token acquired",verificationGate:o}:{allowed:!1,outcome:$,commandClass:t.commandClass,reason:t.reason??o.reason??$,verificationGate:o}}export{d as DEFAULT_WORKER_PROVIDER,$ as HEAVY_VERIFICATION_TOKEN_REQUIRED,q as KYNVER_NO_PROD_DB_CREDENTIALS_ENV,Ir as auditReviewWorkerCredentialScope,Ar as auditWorkerEnv,p as buildWorkerSpawnEnv,de as classifyHeavyShellCommand,cr as enforceCursorWorkerProvider,nn as gateWorkerShellCommand,u as isClaudeFamilyProvider,v as isForbiddenWorkerEnvKey,Dr as isHarnessExpertReviewWorker,_e as isNoProdCredentialReviewEnvironment,ye as listForbiddenWorkerEnvKeys,ve as listOperatorAllowedWorkerEnvKeys,_ as normalizeWorkerProviderName,Tt as preferCursorExecutor,Nt as resolveConfiguredWorkerProvider,C as scrubWorkerEnv,ce as taskAllowsClaudeWorker,ue as taskExpressesWorkerProviderPreference};
1
+ var i=(e,r,t)=>()=>{if(t)throw t[0];try{return e&&(r=e(e=0)),r}catch(n){throw t=[n],n}};function G(e){let r=e[Or];return r?new Set(r.split(/[\s,]+/).map(t=>t.trim()).filter(Boolean)):new Set}function v(e,r={}){return kr.has(e)?!0:Sr.has(e)||r.operatorAllow?.has(e)||Cr.some(t=>e.endsWith(t))?!1:xr.some(t=>e.endsWith(t))}function ye(e){let r=G(e);return Object.keys(e).filter(t=>v(t,{operatorAllow:r})).sort()}function Re(e){let r=G(e);return r.size===0?[]:Object.keys(e).filter(t=>r.has(t)&&!v(t,{operatorAllow:r})&&v(t)).sort()}function O(e){let r=G(e),t={...e};for(let n of Object.keys(t))v(n,{operatorAllow:r})&&delete t[n];return t}function Ar(e){let r=ye(e),t=Re(e);return{forbiddenPresent:r,safe:r.length===0,...t.length?{operatorAllowedActive:t}:{}}}var br,kr,xr,Er,Sr,Cr,Or,A=i(()=>{"use strict";br=["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"],kr=new Set(br),xr=["_SECRET","_API_KEY","_KEK","_KEY","_TOKEN","_PASSWORD","_PASSPHRASE","_SALT"],Er=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],Sr=new Set(Er),Cr=["_PUBLIC_KEY"],Or="KYNVER_WORKER_ENV_ALLOW"});var g=i(()=>{"use strict"});function J(e){if(!e)return!1;try{return process.kill(e,0),!0}catch{return!1}}var a=i(()=>{"use strict"});var I=i(()=>{"use strict";g();a();A()});var Se=i(()=>{"use strict";I()});var Q=i(()=>{"use strict";I();g();Se()});var Z=i(()=>{"use strict";a()});var m=i(()=>{"use strict"});var N=i(()=>{"use strict"});var Ce=i(()=>{"use strict"});var Tn,Wn,ee=i(()=>{"use strict";Tn=25*1024*1024*1024,Wn=12*1024*1024*1024});var Bn,Ln,Oe=i(()=>{"use strict";ee();Bn=5*1024*1024*1024,Ln=10*1024*1024*1024});var Yn,Gn,re=i(()=>{"use strict";Oe();ee();Yn=30*1024*1024*1024,Gn=15*1024*1024*1024});var we=i(()=>{"use strict";a()});import Vr from"node:path";var to,te=i(()=>{"use strict";g();we();to=Vr.join(".openclaw","harness")});var W=i(()=>{"use strict";f();m();N();K();te()});var Ne=i(()=>{"use strict";f();te();W();a()});var oe=i(()=>{"use strict";Ne();a()});var Te=i(()=>{"use strict";oe();a()});var We=i(()=>{"use strict"});var Ke=i(()=>{"use strict";We();a()});var De=i(()=>{"use strict"});var Me=i(()=>{"use strict";De()});var M=i(()=>{"use strict"});var Ue=i(()=>{"use strict";Me();a();M()});var Be=i(()=>{"use strict";M()});var Le=i(()=>{"use strict"});var Fe=i(()=>{"use strict"});var ie=i(()=>{"use strict"});var $e=i(()=>{"use strict"});var He=i(()=>{"use strict";ie();$e()});var je=i(()=>{"use strict";Ke();Ue();M();Be();Le();I();Fe();He();ie();a()});var Ve=i(()=>{"use strict";je()});var rt,tt,Ye=i(()=>{"use strict";Ce();f();m();N();K();re();oe();Te();Ve();a();rt=500*1024*1024,tt=4*1024*1024*1024});var K=i(()=>{"use strict";Ye()});import{homedir as nt}from"node:os";import ot from"node:path";var Ge,se=i(()=>{"use strict";Ge=ot.join(nt(),".kynver",".env")});var qe=i(()=>{"use strict"});var ze=i(()=>{"use strict";qe()});var Je=i(()=>{"use strict"});var ae=i(()=>{"use strict";ze();Je()});var Xe=i(()=>{"use strict"});var Qe=i(()=>{"use strict";Xe()});var U=i(()=>{"use strict";se();g();f();ae();Qe()});var Ze=i(()=>{"use strict";m();m()});var er=i(()=>{"use strict";se();ae();U()});var rr=i(()=>{"use strict";Q();m();Ze();f();U();er();Z();W()});function _(e){let r=e.trim().toLowerCase();return mt[r]??r}var tr,pt,mt,B=i(()=>{"use strict";tr=["claude","cursor","codex","gemini","gemini-api","openai-compatible"],pt=tr.join("|"),mt={anthropic:"claude",opus:"claude",openai:"openai-compatible",openai_compatible:"openai-compatible","openai-compat":"openai-compatible",chatgpt:"codex",gpt:"codex","openai-api":"openai-compatible",openai_api:"openai-compatible",google:"gemini",gemini_cli:"gemini",gemini_api:"gemini-api","google-api":"gemini-api",google_api:"gemini-api"}});import{homedir as gt,totalmem as na}from"node:os";import le from"node:path";var nr,ha,ya,Ra,va,f=i(()=>{"use strict";Q();g();Z();m();N();K();re();U();rr();B();W();nr=le.join(gt(),".kynver"),ha=le.join(nr,"config.json"),ya=le.join(nr,"credentials"),Ra=500*1024*1024,va=4*1024*1024*1024});A();A();var q="KYNVER_NO_PROD_DB_CREDENTIALS",wr=["KYNVER_ENV_FILE"],Pr=new Set(["1","true","yes","on"]);function _e(e){let r=e[q]?.trim().toLowerCase();return r!==void 0&&Pr.has(r)}function d(e,r={}){let t=O(e);if(!r.reviewWorker)return t;let n={...t,[q]:"1"};for(let o of wr)delete n[o];return n}var ve=["DATABASE_URL","PRODUCTION_DATABASE_URL","KYNVER_PRODUCTION_DATABASE_URL"];function Ir(e,r={}){let t=d(e,r),n=Object.keys(t).filter(c=>c.endsWith("_SECRET")||c.endsWith("_API_KEY")||ve.includes(c)),o=ve.every(c=>t[c]===void 0),s=r.reviewWorker?t.KYNVER_ENV_FILE===void 0:!0,l=_e(t);return{reviewMode:!!r.reviewWorker,noProdFlagPresent:r.reviewWorker?l:!0,forbiddenKeysAfterScrub:n.sort(),productionDbKeysAbsent:o,envFilePointerStripped:s,safe:o&&n.length===0&&s&&(!r.reviewWorker||l)}}var Nr="expert-lane-pr-review:",Tr="plan-review-task",Wr="scheduledjob:",w=new Set(["lorentz","dalton","rhea","sentinel"]);function Kr(e){if(!e)return null;let r=e.trim().toLowerCase();return r.length?r:null}function z(e){return/\b(deep[- ]?review|plan review|review .*plan|security review|red[- ]team|lb\d+|runtime verification)\b/.test(e)}function Dr(e,r){return e.startsWith("factory:")?e.includes("lb")||z(r):!1}function Mr(e){let r=(e.executorRef??"").toLowerCase(),t=(e.title??"").toLowerCase(),n=(e.description??"").toLowerCase(),o=`${t}
2
+ ${n}`,s=Kr(e.personaSlug);return r.startsWith("harness-lane:blocked-lane-unblock:")||r==="lane:over_attempt_recovery"||r.startsWith("next-action-fix:")||r.startsWith("next-action-landing:")||r.startsWith("code-work-lane-chain:release:")?!1:!!(r.startsWith(Nr)||r===Tr||r.startsWith("daemon-review:")||s&&w.has(s)&&(r.includes("evidence")||r.includes("validate")||r.includes("review")||Dr(r,o)||z(o))||r.startsWith(Wr)&&e.parentTaskId&&s&&w.has(s)||e.planId&&!e.parentTaskId&&s&&w.has(s)&&z(o)||t.includes("expert pr review")||e.parentTaskId&&(t.startsWith("review:")||t.includes("review required")||t.includes("runtime review"))&&s&&w.has(s))}var Ur=/^claude[-_]/i,Br=/^(?:opus|sonnet|haiku)\b/i;function be(e){let r=e.trim();return Ur.test(r)||Br.test(r)}function ke(e){let r=e.trim().toLowerCase();return r.startsWith("gpt-")||r.startsWith("gpt5")||r.includes("codex")}function xe(e){let r=e.trim().toLowerCase();return r.includes("composer")||r.includes("cursor")}function Ee(e){return e.trim().toLowerCase().startsWith("gemini-")}function Lr(e){return ke(e)?"codex":be(e)?"claude":Ee(e)?"gemini":(xe(e),"cursor")}function Fr(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 $r(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?be(n)||ke(n)||xe(n)||Ee(n)?{lane:t,model:n,provider:Lr(n),rule:"executor_ref:harness_lane_model"}:{lane:t,rule:"executor_ref:harness_lane"}:{lane:t,rule:"executor_ref:harness_lane"}}function P(e){let r=typeof e=="string"?e.trim():"";return r?Fr(r)??$r(r):null}f();a();a();var sr="kynver",ar=["agent_os_context_envelope","agent_os_search_memory","agent_os_search_skills","agent_os_get_skill","agent_os_progress_note"],bt=ar.map(e=>`mcp__${sr}__${e}`);a();a();var Wl=process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.5";function xt(){return process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.5"}var Et=xt();a();var sc=600*1e3;a();var vc=600*1e3;var lr="composer-2.5";B();B();var p="cursor",At=new Set(["claude","opus","anthropic"]),wt=[/\[worker-provider:\s*claude\]/i,/\[use-claude-worker\]/i,/\[operator-worker-provider:\s*claude\]/i];function k(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function u(e){if(!e?.trim())return!1;let r=e.trim().toLowerCase();return At.has(r)?!0:r.includes("claude")||r.includes("opus")}function ce(e){if(!e)return!1;let r=e.workerProviderOverride;if(typeof r=="string"&&u(r))return!0;let t=k(e,"executorRef").toLowerCase();if(t==="provider:claude"||t.startsWith("provider:claude:")||t.includes("claude-worker-override")||t.includes("operator-claude"))return!0;let n=P(k(e,"executorRef"));if(n?.provider&&u(n.provider)||n?.model&&u(Pt(n.model)))return!0;let o=k(e,"description");if(wt.some(l=>l.test(o)))return!0;let s=k(e,"title");return!!/\[use-claude-worker\]/i.test(s)}function Pt(e){let r=e.trim().toLowerCase();return/^claude[-_]/.test(r)||/^(?:opus|sonnet|haiku)\b/.test(r)?"claude":r}function It(e,r){return{provider:p,model:lr,rule:`policy:cursor_default${r}`,requestedModel:e}}var Nt=["explicit:","executor_ref:","factory:","task:"];function Tt(e){return Nt.some(r=>e.startsWith(r))}function ue(e){if(!e)return!1;let r=e.workerProviderOverride;return typeof r=="string"&&r.trim()||P(k(e,"executorRef"))?.provider?!0:ce(e)}function cr(e){let{routing:r,task:t}=e,n=e.explicitProvider?.trim().toLowerCase();if(e.explicitProviderIsOperatorOverride&&u(n))return{...r,provider:"claude",rule:r.rule.startsWith("explicit:")?r.rule:"explicit:operator_provider"};if(n||Tt(r.rule)||ue(t)||!u(r.provider))return r;let o=r.rule&&r.rule!=="default:global"?`:${r.rule.replace(/:/g,"_")}`:"";return It(r.model,o)}function Wt(e,r=p){let t=e?.trim();return t?_(t):r}function Kt(e){let r=[...new Set(e.map(t=>t.trim().toLowerCase()).filter(Boolean))];return r.includes(p)?[...new Set(r.map(t=>u(t)?p:t))]:r.every(t=>u(t))?[p]:r}var Dt=/\b(npm run typecheck|tsc\b[^|&;]*--noEmit|node scripts\/verify-pr-local\.mjs|kynver (harness )?verify)\b/i,Mt=/\b(npm run build\b|next build\b)\b/i,Ut=/\b(vercel (build|deploy|--prod))\b/i,Bt=/\b(openai|anthropic|perplexity|voyage)\b.*\b(api|cli)\b|\b(paid|billable)[-_ ]?compute\b/i;function de(e){let r=e.trim();return r?Bt.test(r)?{heavy:!0,commandClass:"paid_compute",reason:"paid external compute requires heavy-verification token and operator approval"}:Ut.test(r)?{heavy:!0,commandClass:"vercel_verify",reason:"Vercel build/deploy verification requires heavy-verification token"}:Mt.test(r)?{heavy:!0,commandClass:"full_build",reason:"full app build requires heavy-verification token"}:Dt.test(r)?{heavy:!0,commandClass:"full_typecheck",reason:"full repo typecheck requires heavy-verification token"}:{heavy:!1,commandClass:"allowed",reason:null}:{heavy:!1,commandClass:"allowed",reason:null}}var $="heavy_verification_token_required";import{spawnSync as nn}from"node:child_process";a();import{closeSync as Vt,existsSync as E,mkdirSync as Yt,openSync as Gt,readdirSync as mr,readFileSync as qt,statSync as zt,unlinkSync as fr,writeFileSync as Jt}from"node:fs";import fe from"node:path";import{mkdirSync as Ft}from"node:fs";import{tmpdir as $t}from"node:os";import H from"node:path";import{homedir as Lt}from"node:os";import ur from"node:path";function dr(){let e=process.env.KYNVER_STATE_ROOT;return e?ur.resolve(e):ur.join(Lt(),".kynver","state")}function Ht(){return!!(process.env.VERCEL||process.env.VERCEL_ENV||process.env.AWS_LAMBDA_FUNCTION_NAME||process.env.AWS_EXECUTION_ENV)}function jt(){let e=process.env.KYNVER_HEAVY_VERIFICATION_STATE_ROOT;return e?H.resolve(e):Ht()?H.join($t(),"kynver","state","heavy-verification"):H.join(dr(),"heavy-verification")}function pe(){return H.join(jt(),"slots")}function x(){let e=pe();return Ft(e,{recursive:!0}),e}var S=120*6e4,pr=1;function Xt(e,r){let t=Number(e);return!Number.isFinite(t)||t<=0?r:Math.floor(t)}function V(){let e=process.env.KYNVER_HEAVY_VERIFICATION_SKIP?.trim().toLowerCase();return e==="1"||e==="true"||e==="yes"}function j(){let e=process.env.KYNVER_HEAVY_VERIFICATION_MAX_CONCURRENT;return e?Xt(e,pr):pr}function Qt(e){return`slot-${e}`}function Zt(e,r=pe()){return fe.join(r,`${e}.json`)}function ge(e){if(!E(e))return null;try{let r=JSON.parse(qt(e,"utf8"));if(typeof r.slotId=="string"&&typeof r.pid=="number"&&typeof r.acquiredAt=="string"&&typeof r.command=="string")return r}catch{return null}return null}function gr(e,r=S){if(!e||!J(e.pid))return!0;let t=Date.parse(e.acquiredAt);return Number.isNaN(t)?!0:Date.now()-t>r}function hr(e,r){let t=ge(e);if(t)return gr(t,r);if(!E(e))return!0;try{return Date.now()-zt(e).mtimeMs>r}catch{return!0}}function en(e,r){if(hr(e,r))try{fr(e)}catch{}}function rn(e){return Yt(e,{recursive:!0}),e}function he(e={}){let r=rn(e.slotsDir??x()),t=e.staleMs??S,n=0;for(let o of mr(r)){if(!o.endsWith(".json"))continue;let s=fe.join(r,o),l=E(s);en(s,t),l&&!E(s)&&(n+=1)}return n}function tn(e={}){let r=e.slotsDir??x(),t=e.staleMs??S;he({slotsDir:r,staleMs:t});let n=[];for(let o of mr(r)){if(!o.endsWith(".json"))continue;let s=ge(fe.join(r,o));s&&!gr(s,t)&&n.push(s)}return n}function me(e={}){return tn(e).length}function C(e,r={}){if(V())return{admitted:!0,slotId:null,activeSlots:0,maxSlots:j(),reason:null};let t=r.slotsDir??x(),n=r.staleMs??S,o=r.maxSlots??j();he({slotsDir:t,staleMs:n});for(let l=0;l<o;l+=1){let c=Qt(l),y=Zt(c,t),Rr=ge(y);if(hr(y,n))try{fr(y)}catch{}else if(Rr||E(y))continue;let vr={slotId:c,pid:process.pid,acquiredAt:new Date().toISOString(),command:e};try{let R=Gt(y,"wx");Jt(R,JSON.stringify(vr,null,2),"utf8"),Vt(R);let _r=me({slotsDir:t,staleMs:n});return{admitted:!0,slotId:c,activeSlots:_r,maxSlots:o,reason:null}}catch(R){if(R.code==="EEXIST")continue;throw R}}let s=me({slotsDir:t,staleMs:n});return{admitted:!1,slotId:null,activeSlots:s,maxSlots:o,reason:`heavy verification at capacity (${s}/${o} slots)`}}function Y(e,r={}){if(V())return{admitted:!0,slotId:null,activeSlots:0,maxSlots:j(),reason:null};let t=r.slotsDir??x(),n=r.staleMs??S,o=r.maxSlots??j();he({slotsDir:t,staleMs:n});let s=me({slotsDir:t,staleMs:n}),l=s<o;return{admitted:l,slotId:null,activeSlots:s,maxSlots:o,reason:l?null:`heavy verification at capacity (${s}/${o} slots); waiting for ${e}`}}function on(e){e<=0||nn(process.execPath,["-e",`const d=Date.now()+${Math.floor(e)};while(Date.now()<d);`],{stdio:"ignore"})}function yr(e,r,t=2e3,n={}){let o=Date.now()+Math.max(0,r),s=C(e,n);for(;!s.admitted&&Date.now()<o;)on(Math.min(t,o-Date.now())),s=C(e,n);return s}function sn(e,r={}){let t=de(e);if(!t.heavy)return{allowed:!0,outcome:"allowed",commandClass:t.commandClass,reason:"command does not require heavy-verification token",verificationGate:{...Y(e),slotId:null}};if(V())return{allowed:!0,outcome:"heavy_verification_skipped",commandClass:t.commandClass,reason:"KYNVER_HEAVY_VERIFICATION_SKIP bypasses gate",verificationGate:{...Y(e),slotId:null}};let n=r.waitMs??0,o=n>0?yr(e,n,r.pollMs):C(e);return o.admitted?{allowed:!0,outcome:"allowed",commandClass:t.commandClass,reason:t.reason??"heavy-verification token acquired",verificationGate:o}:{allowed:!1,outcome:$,commandClass:t.commandClass,reason:t.reason??o.reason??$,verificationGate:o}}export{p as DEFAULT_WORKER_PROVIDER,$ as HEAVY_VERIFICATION_TOKEN_REQUIRED,q as KYNVER_NO_PROD_DB_CREDENTIALS_ENV,Ir as auditReviewWorkerCredentialScope,Ar as auditWorkerEnv,d as buildWorkerSpawnEnv,de as classifyHeavyShellCommand,cr as enforceCursorWorkerProvider,sn as gateWorkerShellCommand,u as isClaudeFamilyProvider,v as isForbiddenWorkerEnvKey,Mr as isHarnessExpertReviewWorker,_e as isNoProdCredentialReviewEnvironment,ye as listForbiddenWorkerEnvKeys,Re as listOperatorAllowedWorkerEnvKeys,_ as normalizeWorkerProviderName,Kt as preferCursorExecutor,Wt as resolveConfiguredWorkerProvider,O as scrubWorkerEnv,ce as taskAllowsClaudeWorker,ue as taskExpressesWorkerProviderPreference};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kynver-app/runtime",
3
- "version": "0.2.77",
3
+ "version": "0.2.78",
4
4
  "description": "Kynver AgentOS local execution runtime and CLI",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",