@kynver-app/runtime 0.2.56 → 0.2.62
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.
- package/README.md +11 -6
- package/dist/cli.js +110 -89
- package/dist/index.js +134 -114
- package/dist/local-run-store/index.js +7 -7
- package/dist/server/cleanup.js +14 -14
- package/dist/server/db-credentials.js +1 -2
- package/dist/server/default-repo.js +1 -1
- package/dist/server/dispatch-routing.js +4 -4
- package/dist/server/heavy-verification.js +1 -1
- package/dist/server/memory-cost-enforce.js +2 -2
- package/dist/server/memory-cost.js +1 -1
- package/dist/server/model-routing.js +4 -4
- package/dist/server/monitor.js +7 -7
- package/dist/server/worker-policy.js +2 -2
- package/dist/worker-broker/index.js +4 -4
- package/package.json +1 -1
|
@@ -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 he}from"node:os";import ye from"node:path";function xr(e){return e==="~"?he():e.startsWith("~/")||e.startsWith("~\\")?ye.join(he(),e.slice(2)):e}function v(e){return ye.resolve(xr(e))}var x=a(()=>{"use strict"});var d=a(()=>{"use strict"});var Sr,Zt,Er,en,G=a(()=>{"use strict";Sr=["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"],Zt=new Set(Sr),Er=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY"],en=new Set(Er)});var q=a(()=>{"use strict";x();d();G()});var z=a(()=>{"use strict";q();x()});var b=a(()=>{"use strict"});var N=a(()=>{"use strict"});var Re=a(()=>{"use strict"});var gn,hn,J=a(()=>{"use strict";gn=25*1024*1024*1024,hn=12*1024*1024*1024});var _n,vn,be=a(()=>{"use strict";J();_n=5*1024*1024*1024,vn=10*1024*1024*1024});var An,wn,X=a(()=>{"use strict";be();J();An=30*1024*1024*1024,wn=15*1024*1024*1024});var _e=a(()=>{"use strict";d()});import Ar from"node:path";var Dn,Q=a(()=>{"use strict";x();_e();Dn=Ar.join(".openclaw","harness")});var K=a(()=>{"use strict";k();b();N();W();Q()});var Se=a(()=>{"use strict";k();Q();K();d()});var ee=a(()=>{"use strict";Se();d()});var Ee=a(()=>{"use strict";ee();d()});var Oe=a(()=>{"use strict"});var Ce=a(()=>{"use strict";Oe();d()});var Ae=a(()=>{"use strict"});var we=a(()=>{"use strict";Ae()});var Pe=a(()=>{"use strict";we();d()});var Ie=a(()=>{"use strict"});var Ne=a(()=>{"use strict"});var Te=a(()=>{"use strict"});var re=a(()=>{"use strict"});var Ke=a(()=>{"use strict"});var We=a(()=>{"use strict";re();Ke()});var Be=a(()=>{"use strict";Ce();Pe();Ie();Ne();q();Te();We();re();d()});var Me=a(()=>{"use strict";Be()});var Br,Mr,De=a(()=>{"use strict";Re();k();b();N();W();X();ee();Ee();Me();d();Br=500*1024*1024,Mr=4*1024*1024*1024});var W=a(()=>{"use strict";De()});import{homedir as Dr}from"node:os";import Ur from"node:path";var Ue,te=a(()=>{"use strict";Ue=Ur.join(Dr(),".kynver",".env")});var Le=a(()=>{"use strict"});var Fe=a(()=>{"use strict";Le()});var $e=a(()=>{"use strict"});var ne=a(()=>{"use strict";Fe();$e()});var He=a(()=>{"use strict"});var je=a(()=>{"use strict";He()});var B=a(()=>{"use strict";te();x();k();ne();je()});var Ye=a(()=>{"use strict";b();b()});var Ve=a(()=>{"use strict";te();ne();B()});var Ge=a(()=>{"use strict";z();b();Ye();k();B();Ve();d();K()});import{existsSync as Gr,mkdirSync as Ks,readFileSync as qr,writeFileSync as Ws}from"node:fs";import{homedir as zr,totalmem as Ms}from"node:os";import oe from"node:path";function Jr(e){return{...e,...e.harnessRoot?.trim()?{harnessRoot:v(e.harnessRoot.trim())}:{},...e.defaultRepo?.trim()?{defaultRepo:v(e.defaultRepo.trim())}:{}}}function S(){if(!Gr(qe))return{};try{return Jr(JSON.parse(qr(qe,"utf8")))}catch{return{}}}var ze,qe,zs,Js,Xs,k=a(()=>{"use strict";z();x();d();b();N();W();X();B();Ge();K();ze=oe.join(zr(),".kynver"),qe=oe.join(ze,"config.json"),zs=oe.join(ze,"credentials");Js=500*1024*1024,Xs=4*1024*1024*1024});var Rr=/^claude[-_]/i,br=/^(?:opus|sonnet|haiku)\b/i;function fe(e){let r=e.trim();return Rr.test(r)||br.test(r)}function ge(e){let r=e.trim().toLowerCase();return r.startsWith("gpt-")||r.startsWith("gpt5")||r.includes("codex")}function Y(e){let r=e.trim().toLowerCase();return r.includes("composer")||r.includes("cursor")}function kr(e){return ge(e)?"codex":fe(e)?"claude":(Y(e),"cursor")}function _r(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==="cursor"||n==="composer"?{provider:"cursor",model:o,rule:"executor_ref:provider_cursor"}:null:null}function vr(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?fe(n)||ge(n)||Y(n)?{lane:t,model:n,provider:kr(n),rule:"executor_ref:harness_lane_model"}:{lane:t,rule:"executor_ref:harness_lane"}:{lane:t,rule:"executor_ref:harness_lane"}}function h(e){let r=typeof e=="string"?e.trim():"";return r?_r(r)??vr(r):null}function V(e){let r=h(e);return r?!!(r.provider&&r.provider!=="cursor"||r.model&&!Y(r.model)):!1}k();var Je={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 E(e){return Je[e]}function Xe(){return Object.values(Je)}import{existsSync as Qr}from"node:fs";import{homedir as Zr}from"node:os";import C from"node:path";import{createHash as Qe}from"node:crypto";import{statSync as Xr}from"node:fs";import{spawnSync as Ze}from"node:child_process";function y(e){try{let r=Xr(e),t=`${e}|${r.size}|${r.mtimeMs}`;return Qe("sha256").update(t).digest("hex").slice(0,16)}catch{return}}function O(e){return Qe("sha256").update(`env:${e}`).digest("hex").slice(0,16)}function p(e,r){for(let t of r){let n=process.env[t]?.trim();if(n)return n}return e}function m(e,r,t={}){let n=t.timeoutMs??8e3;try{let o=Ze(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 M(e,r,t={}){let n=t.timeoutMs??8e3;try{return Ze(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 rt(){let e=Zr();return[process.env.CODEX_HOME?.trim()?C.join(C.resolve(process.env.CODEX_HOME.trim()),"auth.json"):null,C.join(e,".codex","auth.json"),C.join(e,".config","codex","auth.json")].filter(t=>!!t)}function tt(e){return C.dirname(e)}function nt(e){let r,t;for(let n of rt()){if(!Qr(n))continue;r??=n;let o=m(e,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status",env:{CODEX_HOME:tt(n)}});if(t??=o,o.ok)return{authPath:n,login:o}}return{authPath:r,login:t??m(e,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status"})}}function er(e=new Date().toISOString()){let r=p(et,["KYNVER_CODEX_BIN","CODEX_BIN"]);if(process.env.CODEX_API_KEY?.trim())return{providerId:"codex",ready:!0,authSource:"api_key_env",sessionFingerprint:O("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}=nt(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 it}from"node:os";import ie from"node:path";function st(){let e=process.env.HERMES_HOME?.trim(),r=e?ie.resolve(e):ie.join(it(),".hermes");return ie.join(r,"auth.json")}function D(e=new Date().toISOString()){let r=p("hermes",["KYNVER_HERMES_BIN","HERMES_BIN"]),t=m(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=st(),o=ot(n),i=M(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?y(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 A(e=new Date().toISOString()){let r=er(e);if(r.ready)return{...r,path:"codex_cli"};let t=D(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 rr=["low","medium","high"],tr={oauth_local:0,subscription_hermes:0,runner_token:1,api_key_env:2,none:3};function nr(e,r){let t=E(e);return r==="privileged"?t.supportsPrivilegedPlatformActions:r==="low"?t.supportsLowRiskOrchestration:!0}function at(e,r){let t=E(e.providerId),n=E(r.providerId),o=rr.indexOf(t.costTier)-rr.indexOf(n.costTier);if(o!==0)return o;let i=tr[e.binding.authSource]-tr[r.binding.authSource];return i!==0?i:e.providerId.localeCompare(r.providerId)}function se(e){let r=Xe().map(l=>({providerId:l.id,binding:e.inventory.bindings[l.id]})).filter(l=>l.binding.ready&&nr(l.providerId,e.riskClass));if(r.length===0)return null;let n=[...r].sort(at)[0],o="codex";if(n.providerId===o)return{providerId:n.providerId,binding:n.binding};let i=e.inventory.bindings[o],s;return nr(o,e.riskClass)?i.ready||(s=i.note??`${o} not bound`):s=`${e.riskClass} orchestration requires privileged-capable provider`,{providerId:n.providerId,binding:n.binding,escalatedFrom:o,escalatedReason:s}}import{existsSync as lt}from"node:fs";import{homedir as ct}from"node:os";import ut from"node:path";var dt="claude";function pt(){let e=ct();return[ut.join(e,".claude",".credentials.json")]}function or(e=new Date().toISOString()){let r=p(dt,["KYNVER_CLAUDE_BIN","CLAUDE_BIN"]);if(process.env.ANTHROPIC_API_KEY?.trim())return{providerId:"claude",ready:!1,authSource:"api_key_env",sessionFingerprint:O("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=m(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=pt().find(s=>lt(s)),o=M(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?y(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 mt}from"node:fs";import{homedir as ft}from"node:os";import ae from"node:path";var gt="agent";function ht(){let e=ft(),r=[ae.join(e,".config","cursor","auth.json")];if(process.platform==="win32"){let t=process.env.LOCALAPPDATA?.trim(),n=process.env.APPDATA?.trim();t&&r.push(ae.join(t,"cursor-agent","auth.json")),n&&r.push(ae.join(n,"cursor","auth.json"))}return r}function ir(e=new Date().toISOString()){let r=p(gt,["KYNVER_CURSOR_AGENT_BIN","CURSOR_AGENT_BIN"]);if(process.env.CURSOR_API_KEY?.trim())return{providerId:"cursor",ready:!1,authSource:"api_key_env",sessionFingerprint:O("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=m(r,["-v"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=ht().find(i=>mt(i)),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 yt,readFileSync as Rt}from"node:fs";import{homedir as bt}from"node:os";import le from"node:path";var kt=["OPENAI_API_KEY","ANTHROPIC_API_KEY","KYNVER_API_KEY","KYNVER_BASE_URL"];function _t(){let e=process.env.HERMES_HOME?.trim(),r=e?le.resolve(e):le.join(bt(),".hermes");return le.join(r,".env")}function vt(e){try{let r=Rt(e,"utf8"),t=[];for(let n of kt)new RegExp(`^${n}=`,"m").test(r)&&t.push(n);return t}catch{return[]}}function sr(e=new Date().toISOString()){let r=p("hermes",["KYNVER_HERMES_BIN","HERMES_BIN"]),t=m(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=_t(),o=yt(n),i=o?vt(n):[],l=i.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 (${i.length?`keys: ${i.join(", ")}`:"no API keys detected"})`:[t.note,o?void 0:"no ~/.hermes/.env"].filter(Boolean).join("; ")}}function ar(e={}){let r=e.nowIso?.()??new Date().toISOString(),t=A(r),n={codex:t,cursor:ir(r),claude:or(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:sr(r),hermesOpenAiCodex:D(r),codexAdapterPath:t.path,readyCount:o}}var xt=[/\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],St=[/\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 ce(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function Et(e){let r=ce(e,"executorRef").toLowerCase(),t=ce(e,"title").toLowerCase(),n=ce(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 Ee}from"node:os";import Se from"node:path";function Mr(e){return e==="~"?Ee():e.startsWith("~/")||e.startsWith("~\\")?Se.join(Ee(),e.slice(2)):e}function S(e){return Se.resolve(Mr(e))}var O=a(()=>{"use strict"});var d=a(()=>{"use strict"});var Br,_n,Dr,kn,ee=a(()=>{"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"],_n=new Set(Br),Dr=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],kn=new Set(Dr)});var re=a(()=>{"use strict";O();d();ee()});var te=a(()=>{"use strict";re();O()});var _=a(()=>{"use strict"});var L=a(()=>{"use strict"});var Oe=a(()=>{"use strict"});var Wn,Kn,ne=a(()=>{"use strict";Wn=25*1024*1024*1024,Kn=12*1024*1024*1024});var Ln,Fn,Ce=a(()=>{"use strict";ne();Ln=5*1024*1024*1024,Fn=10*1024*1024*1024});var Gn,qn,oe=a(()=>{"use strict";Ce();ne();Gn=30*1024*1024*1024,qn=15*1024*1024*1024});var Pe=a(()=>{"use strict";d()});import Fr from"node:path";var no,ie=a(()=>{"use strict";O();Pe();no=Fr.join(".openclaw","harness")});var $=a(()=>{"use strict";k();_();L();H();ie()});var Ne=a(()=>{"use strict";k();ie();$();d()});var ae=a(()=>{"use strict";Ne();d()});var Te=a(()=>{"use strict";ae();d()});var We=a(()=>{"use strict"});var Ke=a(()=>{"use strict";We();d()});var Me=a(()=>{"use strict"});var Be=a(()=>{"use strict";Me()});var De=a(()=>{"use strict";Be();d()});var Ue=a(()=>{"use strict"});var Le=a(()=>{"use strict"});var Fe=a(()=>{"use strict"});var le=a(()=>{"use strict"});var $e=a(()=>{"use strict"});var He=a(()=>{"use strict";le();$e()});var je=a(()=>{"use strict";Ke();De();Ue();Le();re();Fe();He();le();d()});var Ye=a(()=>{"use strict";je()});var zr,Jr,Ve=a(()=>{"use strict";Oe();k();_();L();H();oe();ae();Te();Ye();d();zr=500*1024*1024,Jr=4*1024*1024*1024});var H=a(()=>{"use strict";Ve()});import{homedir as Xr}from"node:os";import Qr from"node:path";var Ge,ue=a(()=>{"use strict";Ge=Qr.join(Xr(),".kynver",".env")});var qe=a(()=>{"use strict"});var ze=a(()=>{"use strict";qe()});var Je=a(()=>{"use strict"});var ce=a(()=>{"use strict";ze();Je()});var Xe=a(()=>{"use strict"});var Qe=a(()=>{"use strict";Xe()});var j=a(()=>{"use strict";ue();O();k();ce();Qe()});var Ze=a(()=>{"use strict";_();_()});var er=a(()=>{"use strict";ue();ce();j()});var rr=a(()=>{"use strict";te();_();Ze();k();j();er();d();$()});function b(e){let r=e.trim().toLowerCase();return at[r]??r}var tr,st,at,Y=a(()=>{"use strict";tr=["claude","cursor","codex","gemini","gemini-api","openai-compatible"],st=tr.join("|"),at={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 ut,mkdirSync as ea,readFileSync as ct,writeFileSync as ra}from"node:fs";import{homedir as dt,totalmem as na}from"node:os";import de from"node:path";function pt(e){return{...e,...e.harnessRoot?.trim()?{harnessRoot:S(e.harnessRoot.trim())}:{},...e.defaultRepo?.trim()?{defaultRepo:S(e.defaultRepo.trim())}:{}}}function C(){if(!ut(nr))return{};try{return pt(JSON.parse(ct(nr,"utf8")))}catch{return{}}}var or,nr,ha,Ra,ya,k=a(()=>{"use strict";te();O();d();_();L();H();oe();j();rr();Y();$();or=de.join(dt(),".kynver"),nr=de.join(or,"config.json"),ha=de.join(or,"credentials");Ra=500*1024*1024,ya=4*1024*1024*1024});var Ir=/^claude[-_]/i,Nr=/^(?:opus|sonnet|haiku)\b/i;function be(e){let r=e.trim();return Ir.test(r)||Nr.test(r)}function ve(e){let r=e.trim().toLowerCase();return r.startsWith("gpt-")||r.startsWith("gpt5")||r.includes("codex")}function Q(e){let r=e.trim().toLowerCase();return r.includes("composer")||r.includes("cursor")}function xe(e){return e.trim().toLowerCase().startsWith("gemini-")}function Tr(e){return ve(e)?"codex":be(e)?"claude":xe(e)?"gemini":(Q(e),"cursor")}function Wr(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 Kr(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)||ve(n)||Q(n)||xe(n)?{lane:t,model:n,provider:Tr(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?Wr(r)??Kr(r):null}function Z(e){let r=m(e);return r?!!(r.provider&&r.provider!=="cursor"||r.model&&!Q(r.model)):!1}k();var ir={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 ir[e]}function sr(){return Object.values(ir)}import{existsSync as ft}from"node:fs";import{homedir as gt}from"node:os";import W from"node:path";import{createHash as ar}from"node:crypto";import{statSync as mt}from"node:fs";import{spawnSync as lr}from"node:child_process";function R(e){try{let r=mt(e),t=`${e}|${r.size}|${r.mtimeMs}`;return ar("sha256").update(t).digest("hex").slice(0,16)}catch{return}}function P(e){return ar("sha256").update(`env:${e}`).digest("hex").slice(0,16)}function g(e,r){for(let t of r){let n=process.env[t]?.trim();if(n)return n}return e}function h(e,r,t={}){let n=t.timeoutMs??8e3;try{let o=lr(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 V(e,r,t={}){let n=t.timeoutMs??8e3;try{return lr(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 ht="codex";function Rt(){let e=gt();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 yt(e){return W.dirname(e)}function _t(e){let r,t;for(let n of Rt()){if(!ft(n))continue;r??=n;let o=h(e,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status",env:{CODEX_HOME:yt(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 ur(e=new Date().toISOString()){let r=g(ht,["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}=_t(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 kt}from"node:fs";import{homedir as bt}from"node:os";import pe from"node:path";function vt(){let e=process.env.HERMES_HOME?.trim(),r=e?pe.resolve(e):pe.join(bt(),".hermes");return pe.join(r,"auth.json")}function G(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=vt(),o=kt(n),s=V(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 K(e=new Date().toISOString()){let r=ur(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"}}var cr=["low","medium","high"],dr={oauth_local:0,subscription_hermes:0,runner_token:1,api_key_env:2,none:3};function pr(e,r){let t=A(e);return r==="privileged"?t.supportsPrivilegedPlatformActions:r==="low"?t.supportsLowRiskOrchestration:!0}function xt(e,r){let t=A(e.providerId),n=A(r.providerId),o=cr.indexOf(t.costTier)-cr.indexOf(n.costTier);if(o!==0)return o;let s=dr[e.binding.authSource]-dr[r.binding.authSource];return s!==0?s:e.providerId.localeCompare(r.providerId)}function me(e){let r=sr().map(l=>({providerId:l.id,binding:e.inventory.bindings[l.id]})).filter(l=>l.binding.ready&&pr(l.providerId,e.riskClass));if(r.length===0)return null;let n=[...r].sort(xt)[0],o="codex";if(n.providerId===o)return{providerId:n.providerId,binding:n.binding};let s=e.inventory.bindings[o],i;return pr(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 Et}from"node:fs";import{homedir as St}from"node:os";import Ot from"node:path";var Ct="claude";function At(){let e=St();return[Ot.join(e,".claude",".credentials.json")]}function mr(e=new Date().toISOString()){let r=g(Ct,["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=At().find(i=>Et(i)),o=V(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 Pt}from"node:fs";import{homedir as wt}from"node:os";import fe from"node:path";var It="agent";function Nt(){let e=wt(),r=[fe.join(e,".config","cursor","auth.json")];if(process.platform==="win32"){let t=process.env.LOCALAPPDATA?.trim(),n=process.env.APPDATA?.trim();t&&r.push(fe.join(t,"cursor-agent","auth.json")),n&&r.push(fe.join(n,"cursor","auth.json"))}return r}function fr(e=new Date().toISOString()){let r=g(It,["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=Nt().find(s=>Pt(s)),o=!!n&&t.ok;return{providerId:"cursor",ready:o,authSource:"oauth_local",sessionFingerprint:n?R(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 Tt,readFileSync as Wt}from"node:fs";import{homedir as Kt}from"node:os";import ge from"node:path";var Mt=["OPENAI_API_KEY","ANTHROPIC_API_KEY","KYNVER_API_KEY","KYNVER_BASE_URL"];function Bt(){let e=process.env.HERMES_HOME?.trim(),r=e?ge.resolve(e):ge.join(Kt(),".hermes");return ge.join(r,".env")}function Dt(e){try{let r=Wt(e,"utf8"),t=[];for(let n of Mt)new RegExp(`^${n}=`,"m").test(r)&&t.push(n);return t}catch{return[]}}function gr(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=Bt(),o=Tt(n),s=o?Dt(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 hr(e={}){let r=e.nowIso?.()??new Date().toISOString(),t=K(r),n={codex:t,cursor:fr(r),claude:mr(r)},o=Object.values(n).filter(s=>s.ready).length;return{generatedAt:r,bindings:n,cloudApiCredits:{anthropicApiKey:!!process.env.ANTHROPIC_API_KEY?.trim(),openaiApiKey:!!process.env.OPENAI_API_KEY?.trim(),codexApiKey:!!process.env.CODEX_API_KEY?.trim()},workerEndpoint:{baseUrlConfigured:!!process.env.KYNVER_WORKER_BASE_URL?.trim(),apiKeyConfigured:!!process.env.KYNVER_WORKER_API_KEY?.trim()},hermes:gr(r),hermesOpenAiCodex:G(r),codexAdapterPath:t.path,readyCount:o}}var Ut=[/\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],Lt=[/\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 he(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function Ft(e){let r=he(e,"executorRef").toLowerCase(),t=he(e,"title").toLowerCase(),n=he(e,"description").toLowerCase(),o=`${r}
|
|
2
2
|
${t}
|
|
3
|
-
${n}`;return
|
|
4
|
-
${
|
|
5
|
-
${
|
|
3
|
+
${n}`;return Ut.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":Lt.some(s=>s.test(o))?"low":"elevated"}function $t(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 Ht(e){let r=e.inventory??hr();return e.codexBinding?{...r,bindings:{...r.bindings,codex:e.codexBinding}}:r}function v(e){let r=$t({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 Rr(e){let r=e.task??{},t=Ft(r),n=Ht({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 u=n.bindings.codex;if(!u.ready){let f=me({inventory:n,riskClass:t});return v(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 v({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 v({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 v({providerId:"claude",binding:u,riskClass:t,routingRule:"orchestration:explicit_claude",model:s})}let l=me({inventory:n,riskClass:t});if(l)return v({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 v({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"}})}ee();d();var yr="kynver",_r=["agent_os_context_envelope","agent_os_search_memory","agent_os_search_skills","agent_os_get_skill","agent_os_progress_note"],jt=_r.map(e=>`mcp__${yr}__${e}`);var M="claude-sonnet-4-6",B="claude-opus-4-8";d();d();var wl=process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.4";function Vt(){return process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.4"}var I=Vt();d();var Re="openai-compatible",tu=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 gu=600*1e3;var vr="claude-sonnet-4-6",D="composer-2.5";function p(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function zt(e){if(!e)return;let r=p(e,"workerModelOverride")||p(e,"modelOverride");return r||`${p(e,"title")}
|
|
4
|
+
${p(e,"description")}
|
|
5
|
+
${p(e,"executorRef")}`.match(/\[(?:worker-)?model:\s*([^\]\n]+)\]/i)?.[1]?.trim()||void 0}function kr(e){return e.toLowerCase()}function X(e=C()){let r=e.defaultModel?.trim();if(r)return r;let t=process.env.KYNVER_DEFAULT_MODEL?.trim();return t||vr}function z(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 Jt(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 br(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 Xt=new Set(["report_reviewer","deep_reviewer","plan_reviewer"]);function xr(e,r,t){return Xt.has(e)?B:r.includes("review")||/^review[\s:]/.test(t)||t.includes("critique")?B:M}function Er(e){let r=kr(p(e,"executorRef")),t=p(e,"title").toLowerCase(),n=p(e,"priority")||"normal",o=kr(p(e,"roleLane"));if(r.includes("provider:claude")||r.startsWith("claude:")){let i=xr(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:Re,...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 br(r,t)||o==="deep_reviewer"?{provider:"cursor",rule:"lane:deep_review"}:{provider:"cursor",rule:"lane:review"};if(br(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=X();return{model:s,provider:z(s),rule:"default:global"}}function Qt(e){return e?m(p(e,"executorRef")):null}function Zt(e){switch(b(e)){case x:case N:return E();case"claude":return M;case"codex":return I;case"cursor":return D;default:return}}var ye="explicit:cli_provider",Sr="config:worker_provider";function Or(e,r,t){let n=b(r);return n===e.provider&&e.rule===t?e:{...e,provider:n,model:Zt(n)??e.model,rule:t}}function en(e,r){let t=r?.trim();return!t||e.rule.startsWith("explicit:")&&e.rule!==ye?e:Or(e,t,ye)}function rn(e,r){if(r.explicitProvider?.trim()||_e(r.task))return e;let t=r.configuredProvider?.trim();if(!t)return e;let n=b(t);return n===w||n===e.provider?e:Or(e,n,Sr)}function tn(e){let r,t=Qt(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=Jt(c,e.explicitProvider);u?r=u:r={model:c,provider:e.explicitProvider?.trim()||z(c),rule:"explicit:cli",requestedModel:c}}else if(n)r={model:n,provider:o||z(n),rule:t?.rule??"executor_ref:model",requestedModel:n};else if(e.task&&J(e.task)){let c=zt(e.task),u,f;if(c)u=c,f="task:provider_override";else{let ke=typeof e.task.roleLane=="string"?e.task.roleLane.toLowerCase():"",Pr=typeof e.task.executorRef=="string"?e.task.executorRef.toLowerCase():"",wr=typeof e.task.title=="string"?e.task.title.toLowerCase():"";u=xr(ke,Pr,wr),f=u===B?"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=Er(e.task);r={...c,requestedModel:c.model}}else{let c=X();r={model:c,provider:e.explicitProvider?.trim()||z(c),rule:"default:global",requestedModel:c}}r=en(r,e.explicitProvider),r=rn(r,{explicitProvider:e.explicitProvider,task:e.task,configuredProvider:e.configuredProvider});let s=!!e.configuredProvider?.trim()&&b(e.configuredProvider)!==w&&r.rule==="config:worker_provider",i=Cr({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===ye||i.rule===Sr||y(i.provider)&&(e.explicitProviderIsOperatorOverride||J(e.task))||i.provider===Re||i.provider===x||i.provider===N||i.provider==="codex")return i;let l=Rr({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 nn(e,r,t){return e||r||t||X()||M}Y();Y();var w="cursor",on=new Set(["claude","opus","anthropic"]),sn=[/\[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 y(e){if(!e?.trim())return!1;let r=e.trim().toLowerCase();return on.has(r)?!0:r.includes("claude")||r.includes("opus")}function J(e){if(!e)return!1;let r=e.workerProviderOverride;if(typeof r=="string"&&y(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&&y(n.provider)||n?.model&&y(an(n.model)))return!0;let o=U(e,"description");if(sn.some(i=>i.test(o)))return!0;let s=U(e,"title");return!!/\[use-claude-worker\]/i.test(s)}function an(e){let r=e.trim().toLowerCase();return/^claude[-_]/.test(r)||/^(?:opus|sonnet|haiku)\b/.test(r)?"claude":r}function ln(e,r){return{provider:w,model:D,rule:`policy:cursor_default${r}`,requestedModel:e}}var un=["explicit:","executor_ref:","factory:","task:"];function cn(e){return un.some(r=>e.startsWith(r))}function _e(e){if(!e)return!1;let r=e.workerProviderOverride;return typeof r=="string"&&r.trim()||m(U(e,"executorRef"))?.provider?!0:J(e)}function Cr(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||cn(r.rule)||_e(t)||!y(r.provider))return r;let o=r.rule&&r.rule!=="default:global"?`:${r.rule.replace(/:/g,"_")}`:"";return ln(r.model,o)}function dn(e){let r=e?.executorRef;return typeof r=="string"?r.trim():""}function Ar(e){return e?.trim()||void 0}function pn(e){let r=dn(e.task),t=m(r),n=e.explicitProvider?.trim().toLowerCase(),o=Ar(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=Ar(e.routing.model),f={provider:c,model:u,rule:e.routing.rule};return s&&s!=="cursor"||r&&Z(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{D as CURSOR_DEFAULT_MODEL,vr as GLOBAL_DEFAULT_MODEL,pn as assessDispatchModelGuard,Z as executorRefRequestsNonCursorWorker,Er as inferModelRoutingFromTask,m as parseExecutorRefRoutingIntent,X as resolveGlobalDefaultModel,nn as resolveModelFallback,tn as resolveWorkerLaunch};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{closeSync as G,existsSync as l,mkdirSync as Y,openSync as L,readdirSync as C,readFileSync as U,statSync as F,unlinkSync as b,writeFileSync as W}from"node:fs";import v from"node:path";function R(e){if(!e)return!1;try{return process.kill(e,0),!0}catch{return!1}}import{mkdirSync as T}from"node:fs";import{tmpdir as K}from"node:os";import m from"node:path";import{homedir as D}from"node:os";import A from"node:path";function k(){let e=process.env.KYNVER_STATE_ROOT;return e?A.resolve(e):A.join(D(),".kynver","state")}function H(){return!!(process.env.VERCEL||process.env.VERCEL_ENV||process.env.AWS_LAMBDA_FUNCTION_NAME||process.env.AWS_EXECUTION_ENV)}function $(){let e=process.env.KYNVER_HEAVY_VERIFICATION_STATE_ROOT;return e?m.resolve(e):H()?m.join(K(),"kynver","state","heavy-verification"):m.join(k(),"heavy-verification")}function y(){return m.join($(),"slots")}function u(){let e=y();return T(e,{recursive:!0}),e}var f=120*6e4,x=1;function j(e,r){let t=Number(e);return!Number.isFinite(t)||t<=0?r:Math.floor(t)}function S(){let e=process.env.KYNVER_HEAVY_VERIFICATION_SKIP?.trim().toLowerCase();return e==="1"||e==="true"||e==="yes"}function p(){let e=process.env.KYNVER_HEAVY_VERIFICATION_MAX_CONCURRENT;return e?j(e,x):x}function B(e){return`slot-${e}`}function J(e,r=y()){return v.join(r,`${e}.json`)}function E(e){if(!l(e))return null;try{let r=JSON.parse(U(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
|
|
1
|
+
import{closeSync as G,existsSync as l,mkdirSync as Y,openSync as L,readdirSync as C,readFileSync as U,statSync as F,unlinkSync as b,writeFileSync as W}from"node:fs";import v from"node:path";function R(e){if(!e)return!1;try{return process.kill(e,0),!0}catch{return!1}}import{mkdirSync as T}from"node:fs";import{tmpdir as K}from"node:os";import m from"node:path";import{homedir as D}from"node:os";import A from"node:path";function k(){let e=process.env.KYNVER_STATE_ROOT;return e?A.resolve(e):A.join(D(),".kynver","state")}function H(){return!!(process.env.VERCEL||process.env.VERCEL_ENV||process.env.AWS_LAMBDA_FUNCTION_NAME||process.env.AWS_EXECUTION_ENV)}function $(){let e=process.env.KYNVER_HEAVY_VERIFICATION_STATE_ROOT;return e?m.resolve(e):H()?m.join(K(),"kynver","state","heavy-verification"):m.join(k(),"heavy-verification")}function y(){return m.join($(),"slots")}function u(){let e=y();return T(e,{recursive:!0}),e}var f=120*6e4,x=1;function j(e,r){let t=Number(e);return!Number.isFinite(t)||t<=0?r:Math.floor(t)}function S(){let e=process.env.KYNVER_HEAVY_VERIFICATION_SKIP?.trim().toLowerCase();return e==="1"||e==="true"||e==="yes"}function p(){let e=process.env.KYNVER_HEAVY_VERIFICATION_MAX_CONCURRENT;return e?j(e,x):x}function B(e){return`slot-${e}`}function J(e,r=y()){return v.join(r,`${e}.json`)}function E(e){if(!l(e))return null;try{let r=JSON.parse(U(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 M(e,r=f){if(!e||!R(e.pid))return!0;let t=Date.parse(e.acquiredAt);return Number.isNaN(t)?!0:Date.now()-t>r}function O(e,r){let t=E(e);if(t)return M(t,r);if(!l(e))return!0;try{return Date.now()-F(e).mtimeMs>r}catch{return!0}}function q(e,r){if(O(e,r))try{b(e)}catch{}}function X(e){return Y(e,{recursive:!0}),e}function _(e={}){let r=X(e.slotsDir??u()),t=e.staleMs??f,o=0;for(let n of C(r)){if(!n.endsWith(".json"))continue;let s=v.join(r,n),i=l(s);q(s,t),i&&!l(s)&&(o+=1)}return o}function z(e={}){let r=e.slotsDir??u(),t=e.staleMs??f;_({slotsDir:r,staleMs:t});let o=[];for(let n of C(r)){if(!n.endsWith(".json"))continue;let s=E(v.join(r,n));s&&!M(s,t)&&o.push(s)}return o}function d(e={}){return z(e).length}function h(e,r={}){if(S())return{admitted:!0,slotId:null,activeSlots:0,maxSlots:p(),reason:null};let t=r.slotsDir??u(),o=r.staleMs??f,n=r.maxSlots??p();_({slotsDir:t,staleMs:o});for(let i=0;i<n;i+=1){let g=B(i),a=J(g,t),V=E(a);if(O(a,o))try{b(a)}catch{}else if(V||l(a))continue;let I={slotId:g,pid:process.pid,acquiredAt:new Date().toISOString(),command:e};try{let c=L(a,"wx");W(c,JSON.stringify(I,null,2),"utf8"),G(c);let w=d({slotsDir:t,staleMs:o});return{admitted:!0,slotId:g,activeSlots:w,maxSlots:n,reason:null}}catch(c){if(c.code==="EEXIST")continue;throw c}}let s=d({slotsDir:t,staleMs:o});return{admitted:!1,slotId:null,activeSlots:s,maxSlots:n,reason:`heavy verification at capacity (${s}/${n} slots)`}}function P(e,r={}){if(S())return{admitted:!0,slotId:null,activeSlots:0,maxSlots:p(),reason:null};let t=r.slotsDir??u(),o=r.staleMs??f,n=r.maxSlots??p();_({slotsDir:t,staleMs:o});let s=d({slotsDir:t,staleMs:o}),i=s<n;return{admitted:i,slotId:null,activeSlots:s,maxSlots:n,reason:i?null:`heavy verification at capacity (${s}/${n} slots); waiting for ${e}`}}import{spawnSync as Q}from"node:child_process";function Z(e){e<=0||Q(process.execPath,["-e",`const d=Date.now()+${Math.floor(e)};while(Date.now()<d);`],{stdio:"ignore"})}function ee(e,r,t=2e3,o={}){let n=Date.now()+Math.max(0,r),s=h(e,o);for(;!s.admitted&&Date.now()<n;)Z(Math.min(t,n-Date.now())),s=h(e,o);return s}var re=["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"],ke=new Set(re);var te=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],xe=new Set(te);var oe={"@kynver-app/runtime":"0.1.83","@kynver-app/openclaw-agent-os":"0.1.43","@kynver-app/mcp-agent-os":"0.3.34"},Ye=Object.keys(oe);function N(e){let r=e.trim().split("-")[0]?.split("+")[0];if(!r)return null;let t=r.split(".");if(t.length<1||t.length>3)return null;let o=t.map(n=>Number.parseInt(n,10));if(o.some(n=>!Number.isFinite(n)||n<0))return null;for(;o.length<3;)o.push(0);return[o[0],o[1],o[2]]}function se(e,r){let t=N(e),o=N(r);if(!t||!o)return 0;for(let n=0;n<3;n+=1){if(t[n]>o[n])return 1;if(t[n]<o[n])return-1}return 0}export{P as assessHeavyVerificationGate,se as compareSemver,d as countActiveHeavyVerificationSlots,S as isHeavyVerificationGateSkipped,p as resolveHeavyVerificationMaxConcurrent,ee as waitForHeavyVerificationSlot};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{readFile as
|
|
2
|
-
`)),this.name="MemoryCostPackageVersionGuardError",this.result=r}};function W(e={}){let r=C(e);if(!r.ok)throw new h(r);return r}var Pe=["@kynver-app/runtime","@kynver-app/openclaw-agent-os","@kynver-app/mcp-agent-os"];function m(e){let r=e?.trim();return r||null}function _e(e){return[...new Set(e.filter(r=>!!r))]}function Re(){let e=ve(),r=m(process.env.KYNVER_OPENCLAW_NPM_ROOT)??m(process.env.OPENCLAW_NPM_ROOT)??p.join(e,".openclaw","npm"),t=m(process.env.KYNVER_NPM_GLOBAL_ROOT)??m(process.env.KYNVER_NPM_GLOBAL_MODULES_ROOT)??(m(process.env.NPM_CONFIG_PREFIX)?p.join(m(process.env.NPM_CONFIG_PREFIX),"lib","node_modules"):p.join(e,".npm-global","lib","node_modules"));return _e([p.join(r,"lib","node_modules"),p.join(r,"node_modules"),t.endsWith("node_modules")?t:p.join(t,"lib","node_modules")])}async function Se(e){try{let r=JSON.parse(await
|
|
1
|
+
import{readFile as ke}from"node:fs/promises";import{homedir as ve}from"node:os";import p from"node:path";import{existsSync as D,readFileSync as le}from"node:fs";import y from"node:path";import{existsSync as S,readFileSync as K}from"node:fs";import{homedir as ne}from"node:os";import u from"node:path";import{fileURLToPath as oe}from"node:url";import{spawnSync as te}from"node:child_process";import{homedir as x}from"node:os";import b from"node:path";function Z(e){return e==="~"?x():e.startsWith("~/")||e.startsWith("~\\")?b.join(x(),e.slice(2)):e}function _(e){return b.resolve(Z(e))}function I(e){return process.platform!=="win32"?e:{windowsHide:!0,...e}}var ee=["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"],Ke=new Set(ee);var re=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],Ge=new Set(re);function T(e,r){try{let t=te("git",r,I({cwd:e,encoding:"utf8"}));return{status:t.status,stdout:t.stdout||"",stderr:t.stderr||"",error:t.error?t.error.message:null}}catch(t){return{status:null,stdout:"",stderr:"",error:t.message}}}var se=["Kynver","repos/Kynver","repos/kynver-source-main","code/Kynver","projects/Kynver"];function ie(e){let r=u.join(e,"package.json");if(!S(r))return null;try{let t=JSON.parse(K(r,"utf8"));return typeof t.name=="string"?t.name.trim():null}catch{return null}}function ae(e){return ie(e)==="kynver"}function V(e){let r=u.resolve(e);if(!S(r))return null;let t=T(r,["rev-parse","--show-toplevel"]);if(t.status!==0)return null;let n=t.stdout.trim();return n.length?u.resolve(n):null}function ce(e=import.meta.url){let r=u.dirname(oe(e));for(let t=0;t<8;t+=1){let n=u.join(r,"package.json");if(S(n))try{if(JSON.parse(K(n,"utf8")).name==="@kynver-app/runtime")return r}catch{}let o=u.dirname(r);if(o===r)break;r=o}return null}function R(e,r,t,n,o){if(!t)return;let s=u.resolve(t);e.has(s)||(o?.requireMonorepo??!0)&&!ae(s)||(e.add(s),r.push({repo:s,source:n}))}function ue(e){let r=e?.cwd??process.cwd(),t=new Set,n=[];R(t,n,V(r),"cwd_git",{requireMonorepo:!1});let o=ce(e?.runtimeModuleUrl??import.meta.url);o&&R(t,n,V(o),"runtime_checkout");let s=ne();for(let a of se)R(t,n,_(u.join(s,a)),"well_known_path");return n}function G(e){return ue(e)[0]??null}var Y={"@kynver-app/runtime":"0.1.83","@kynver-app/openclaw-agent-os":"0.1.43","@kynver-app/mcp-agent-os":"0.3.34"},L=Object.keys(Y),f={"@kynver-app/runtime":"Kynver runtime","@kynver-app/openclaw-agent-os":"OpenClaw AgentOS plugin","@kynver-app/mcp-agent-os":"AgentOS MCP server"},pe={"@kynver-app/runtime":"packages/kynver-runtime/package.json","@kynver-app/openclaw-agent-os":"packages/kynver-openclaw-agent-os/package.json","@kynver-app/mcp-agent-os":"packages/kynver-mcp-agent-os/package.json"};function $(e){let r=e.trim().split("-")[0]?.split("+")[0];if(!r)return null;let t=r.split(".");if(t.length<1||t.length>3)return null;let n=t.map(o=>Number.parseInt(o,10));if(n.some(o=>!Number.isFinite(o)||o<0))return null;for(;n.length<3;)n.push(0);return[n[0],n[1],n[2]]}function E(e,r){let t=$(e),n=$(r);if(!t||!n)return 0;for(let o=0;o<3;o+=1){if(t[o]>n[o])return 1;if(t[o]<n[o])return-1}return 0}function U(e,r){return E(e,r)>=0}function me(e){let r=null;for(let t of e)(!r||E(t,r)>0)&&(r=t);return r}function de(e){try{let r=JSON.parse(le(e,"utf8"));return typeof r.version=="string"&&r.version.trim()?r.version.trim():null}catch{return null}}function ge(e,r){let t=[r,process.env.KYNVER_REPO,e].filter(o=>!!o?.trim());for(let o of t){let s=y.resolve(o);if(D(y.join(s,"packages/kynver-runtime/package.json"))&&D(y.join(s,"package.json")))return s}return G({cwd:e})?.repo??null}function j(e={}){let r=e.cwd??process.cwd(),t=ge(r,e.repoRoot);if(!t)return{};let n={};for(let o of L){let s=y.join(t,pe[o]),a=de(s);a&&(n[o]={version:a,source:"repo",path:s})}return n}function fe(e){return e==="@kynver-app/runtime"?["npm run kynver:build","npm run kynver"]:[`npm run build -w ${e}`]}function ye(e){let{packageName:r,minimumVersion:t,effectiveVersion:n,effectiveSource:o,repoVersion:s}=e,a=[];return s&&U(s,t)?(a.push(`Use the monorepo checkout (${s}) instead of a stale npm install: ${fe(r).join("; ")}.`),a.push("Do not publish npm packages or wait on an operator release."),a):(n?a.push(`Upgrade ${r} from ${n} to >= ${t} (npm install -g ${r}@latest or align OpenClaw npm prefix).`):a.push(`Install ${r} >= ${t} before running memory-heavy AgentOS paths.`),r==="@kynver-app/runtime"&&a.push("Repo-source alternative: npm run kynver:build && npm run kynver"),o==="installed"&&s&&a.push(`Repo checkout reports ${s}; rebuild/link repo source if you develop from the monorepo.`),a)}function Ee(e){if(e.length===0)return{version:null,source:"unknown"};let r=me(e.map(n=>n.version));if(!r)return{version:null,source:"unknown"};let t=e.find(n=>n.version===r)??e[0];return{version:t.version,source:t.source}}function C(e={}){let r=e.undetectedPolicy??"skip",t=(i,c)=>i?typeof i=="string"?{version:i,source:c}:i:null,n=L.map(i=>{let c=Y[i],d=[],O=t(e.installed?.[i],"installed"),k=t(e.repo?.[i],"repo"),N=t(e.self?.[i],"self");O&&d.push(O),k&&d.push(k),N&&d.push(N);let{version:l,source:g}=Ee(d),z=k?.version??null,w=!!l,v=!w&&r==="skip",P=w?U(l,c):v,q=P?[]:ye({packageName:i,minimumVersion:c,effectiveVersion:l,effectiveSource:g,repoVersion:z}),Q=v?`${f[i]} is not installed \u2014 memory-cost minimum ${c} applies when this package is present.`:P?`${f[i]} ${l} meets memory-cost minimum ${c} (${g}).`:`${f[i]} is below memory-cost minimum ${c}`+(l?` (effective ${l} via ${g})`:" (no version detected)")+".";return{packageName:i,displayName:f[i],minimumVersion:c,effectiveVersion:l,effectiveSource:g,ok:P,skipped:v,summary:Q,remediation:q}}),o=n.filter(i=>!i.ok),s=n.filter(i=>i.effectiveVersion).length,a=o.length===0,X=a?s===0?"No managed AgentOS packages detected \u2014 memory-cost version guard has nothing to enforce.":s===n.length?"All managed AgentOS packages meet memory-cost minimum versions.":`Detected AgentOS packages meet memory-cost minimum versions (${s}/${n.length} present).`:`Memory-cost package guard blocked ${o.length} stale package(s): ${o.map(i=>`${i.packageName} < ${i.minimumVersion}`).join("; ")}.`;return{ok:a,summary:X,packages:n}}var h=class extends Error{result;constructor(r){let t=[r.summary,...r.packages.filter(n=>!n.ok).flatMap(n=>[`- ${n.summary}`,...n.remediation.map(o=>` \u2192 ${o}`)])];super(t.join(`
|
|
2
|
+
`)),this.name="MemoryCostPackageVersionGuardError",this.result=r}};function W(e={}){let r=C(e);if(!r.ok)throw new h(r);return r}var Pe=["@kynver-app/runtime","@kynver-app/openclaw-agent-os","@kynver-app/mcp-agent-os"];function m(e){let r=e?.trim();return r||null}function _e(e){return[...new Set(e.filter(r=>!!r))]}function Re(){let e=ve(),r=m(process.env.KYNVER_OPENCLAW_NPM_ROOT)??m(process.env.OPENCLAW_NPM_ROOT)??p.join(e,".openclaw","npm"),t=m(process.env.KYNVER_NPM_GLOBAL_ROOT)??m(process.env.KYNVER_NPM_GLOBAL_MODULES_ROOT)??(m(process.env.NPM_CONFIG_PREFIX)?p.join(m(process.env.NPM_CONFIG_PREFIX),"lib","node_modules"):p.join(e,".npm-global","lib","node_modules"));return _e([p.join(r,"lib","node_modules"),p.join(r,"node_modules"),t.endsWith("node_modules")?t:p.join(t,"lib","node_modules")])}async function Se(e){try{let r=JSON.parse(await ke(e,"utf8"));return typeof r.version=="string"&&r.version.trim()?r.version.trim():null}catch{return null}}function he(e){let r=Re(),t=new Set,n=[];for(let o of r){let s=p.join(o,e,"package.json");t.has(s)||(t.add(s),n.push(s))}return n}async function F(e=new Date().toISOString()){let r={};for(let t of Pe){let n=null;for(let o of he(t)){let s=await Se(o);s&&(!n||E(s,n.version)>0)&&(n={version:s,path:o})}n&&(r[t]={version:n.version,observedAt:e,path:n.path})}return r}import{existsSync as Ce,readFileSync as Ae}from"node:fs";import{dirname as A,join as B}from"node:path";import{fileURLToPath as H}from"node:url";function Me(e){let r=A(H(e));for(let t=0;t<6;t+=1){if(Ce(B(r,"package.json")))return r;let n=A(r);if(n===r)break;r=n}throw new Error(`package.json not found above ${A(H(e))}`)}function Oe(e=import.meta.url){let r=B(Me(e),"package.json"),t=JSON.parse(Ae(r,"utf8"));if(typeof t.version!="string"||!t.version.trim())throw new Error(`Missing package.json version at ${r}`);return t.version}var J=Oe();function Ne(e){let r={};for(let[t,n]of Object.entries(e))n?.version&&(r[t]={version:n.version,source:"installed",path:n.path});return r}async function M(e={}){let[r,t]=await Promise.all([F(),Promise.resolve(j({cwd:e.cwd,repoRoot:e.repoRoot}))]),n={},o=e.selfPackageName==="@kynver-app/runtime"&&e.selfVersion?e.selfVersion:J;return n["@kynver-app/runtime"]={version:o,source:"self"},e.selfPackageName&&e.selfVersion&&e.selfPackageName!=="@kynver-app/runtime"&&(n[e.selfPackageName]={version:e.selfVersion,source:"self"}),{installed:Ne(r),repo:t,self:n,undetectedPolicy:"skip"}}async function we(e={}){let r=await M(e);return C(r)}async function xe(e={}){let r=await M(e);return W(r)}export{M as buildMemoryCostPackageGuardInput,xe as enforceMemoryCostPackageGuardAtStartup,we as evaluateMemoryCostPackageGuardAtStartup};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var x=["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"],Y=new Set(x);var b=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY"],L=new Set(b);var y={"@kynver-app/runtime":"0.1.83","@kynver-app/openclaw-agent-os":"0.1.43","@kynver-app/mcp-agent-os":"0.3.34"},w=Object.keys(y),d={"@kynver-app/runtime":"Kynver runtime","@kynver-app/openclaw-agent-os":"OpenClaw AgentOS plugin","@kynver-app/mcp-agent-os":"AgentOS MCP server"};function R(t){let e=t.trim().split("-")[0]?.split("+")[0];if(!e)return null;let n=e.split(".");if(n.length<1||n.length>3)return null;let r=n.map(s=>Number.parseInt(s,10));if(r.some(s=>!Number.isFinite(s)||s<0))return null;for(;r.length<3;)r.push(0);return[r[0],r[1],r[2]]}function S(t,e){let n=R(t),r=R(e);if(!n||!r)return 0;for(let s=0;s<3;s+=1){if(n[s]>r[s])return 1;if(n[s]<r[s])return-1}return 0}function h(t,e){return S(t,e)>=0}function T(t){let e=null;for(let n of t)(!e||S(n,e)>0)&&(e=n);return e}function
|
|
1
|
+
var x=["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"],Y=new Set(x);var b=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],L=new Set(b);var y={"@kynver-app/runtime":"0.1.83","@kynver-app/openclaw-agent-os":"0.1.43","@kynver-app/mcp-agent-os":"0.3.34"},w=Object.keys(y),d={"@kynver-app/runtime":"Kynver runtime","@kynver-app/openclaw-agent-os":"OpenClaw AgentOS plugin","@kynver-app/mcp-agent-os":"AgentOS MCP server"};function R(t){let e=t.trim().split("-")[0]?.split("+")[0];if(!e)return null;let n=e.split(".");if(n.length<1||n.length>3)return null;let r=n.map(s=>Number.parseInt(s,10));if(r.some(s=>!Number.isFinite(s)||s<0))return null;for(;r.length<3;)r.push(0);return[r[0],r[1],r[2]]}function S(t,e){let n=R(t),r=R(e);if(!n||!r)return 0;for(let s=0;s<3;s+=1){if(n[s]>r[s])return 1;if(n[s]<r[s])return-1}return 0}function h(t,e){return S(t,e)>=0}function T(t){let e=null;for(let n of t)(!e||S(n,e)>0)&&(e=n);return e}function I(t){return t==="@kynver-app/runtime"?["npm run kynver:build","npm run kynver"]:[`npm run build -w ${t}`]}function K(t){let{packageName:e,minimumVersion:n,effectiveVersion:r,effectiveSource:s,repoVersion:a}=t,i=[];return a&&h(a,n)?(i.push(`Use the monorepo checkout (${a}) instead of a stale npm install: ${I(e).join("; ")}.`),i.push("Do not publish npm packages or wait on an operator release."),i):(r?i.push(`Upgrade ${e} from ${r} to >= ${n} (npm install -g ${e}@latest or align OpenClaw npm prefix).`):i.push(`Install ${e} >= ${n} before running memory-heavy AgentOS paths.`),e==="@kynver-app/runtime"&&i.push("Repo-source alternative: npm run kynver:build && npm run kynver"),s==="installed"&&a&&i.push(`Repo checkout reports ${a}; rebuild/link repo source if you develop from the monorepo.`),i)}function V(t){if(t.length===0)return{version:null,source:"unknown"};let e=T(t.map(r=>r.version));if(!e)return{version:null,source:"unknown"};let n=t.find(r=>r.version===e)??t[0];return{version:n.version,source:n.source}}function A(t={}){let e=t.undetectedPolicy??"skip",n=(o,c)=>o?typeof o=="string"?{version:o,source:c}:o:null,r=w.map(o=>{let c=y[o],l=[],_=n(t.installed?.[o],"installed"),g=n(t.repo?.[o],"repo"),k=n(t.self?.[o],"self");_&&l.push(_),g&&l.push(g),k&&l.push(k);let{version:u,source:p}=V(l),P=g?.version??null,v=!!u,f=!v&&e==="skip",E=v?h(u,c):f,O=E?[]:K({packageName:o,minimumVersion:c,effectiveVersion:u,effectiveSource:p,repoVersion:P}),M=f?`${d[o]} is not installed \u2014 memory-cost minimum ${c} applies when this package is present.`:E?`${d[o]} ${u} meets memory-cost minimum ${c} (${p}).`:`${d[o]} is below memory-cost minimum ${c}`+(u?` (effective ${u} via ${p})`:" (no version detected)")+".";return{packageName:o,displayName:d[o],minimumVersion:c,effectiveVersion:u,effectiveSource:p,ok:E,skipped:f,summary:M,remediation:O}}),s=r.filter(o=>!o.ok),a=r.filter(o=>o.effectiveVersion).length,i=s.length===0,C=i?a===0?"No managed AgentOS packages detected \u2014 memory-cost version guard has nothing to enforce.":a===r.length?"All managed AgentOS packages meet memory-cost minimum versions.":`Detected AgentOS packages meet memory-cost minimum versions (${a}/${r.length} present).`:`Memory-cost package guard blocked ${s.length} stale package(s): ${s.map(o=>`${o.packageName} < ${o.minimumVersion}`).join("; ")}.`;return{ok:i,summary:C,packages:r}}var m=class extends Error{result;constructor(e){let n=[e.summary,...e.packages.filter(r=>!r.ok).flatMap(r=>[`- ${r.summary}`,...r.remediation.map(s=>` \u2192 ${s}`)])];super(n.join(`
|
|
2
2
|
`)),this.name="MemoryCostPackageVersionGuardError",this.result=e}};function D(t={}){let e=A(t);if(!e.ok)throw new m(e);return e}export{y as MEMORY_COST_PACKAGE_MIN_VERSIONS,m as MemoryCostPackageVersionGuardError,D as assertMemoryCostPackageVersionGuard,S as compareSemver,A as evaluateMemoryCostPackageVersionGuard};
|
|
@@ -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 he}from"node:os";import ye from"node:path";function xr(e){return e==="~"?he():e.startsWith("~/")||e.startsWith("~\\")?ye.join(he(),e.slice(2)):e}function v(e){return ye.resolve(xr(e))}var x=a(()=>{"use strict"});var d=a(()=>{"use strict"});var Sr,Zt,Er,en,G=a(()=>{"use strict";Sr=["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"],Zt=new Set(Sr),Er=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY"],en=new Set(Er)});var q=a(()=>{"use strict";x();d();G()});var z=a(()=>{"use strict";q();x()});var b=a(()=>{"use strict"});var N=a(()=>{"use strict"});var Re=a(()=>{"use strict"});var gn,hn,J=a(()=>{"use strict";gn=25*1024*1024*1024,hn=12*1024*1024*1024});var _n,vn,be=a(()=>{"use strict";J();_n=5*1024*1024*1024,vn=10*1024*1024*1024});var An,wn,X=a(()=>{"use strict";be();J();An=30*1024*1024*1024,wn=15*1024*1024*1024});var _e=a(()=>{"use strict";d()});import Ar from"node:path";var Dn,Q=a(()=>{"use strict";x();_e();Dn=Ar.join(".openclaw","harness")});var K=a(()=>{"use strict";k();b();N();W();Q()});var Se=a(()=>{"use strict";k();Q();K();d()});var ee=a(()=>{"use strict";Se();d()});var Ee=a(()=>{"use strict";ee();d()});var Oe=a(()=>{"use strict"});var Ce=a(()=>{"use strict";Oe();d()});var Ae=a(()=>{"use strict"});var we=a(()=>{"use strict";Ae()});var Pe=a(()=>{"use strict";we();d()});var Ie=a(()=>{"use strict"});var Ne=a(()=>{"use strict"});var Te=a(()=>{"use strict"});var re=a(()=>{"use strict"});var Ke=a(()=>{"use strict"});var We=a(()=>{"use strict";re();Ke()});var Be=a(()=>{"use strict";Ce();Pe();Ie();Ne();q();Te();We();re();d()});var Me=a(()=>{"use strict";Be()});var Br,Mr,De=a(()=>{"use strict";Re();k();b();N();W();X();ee();Ee();Me();d();Br=500*1024*1024,Mr=4*1024*1024*1024});var W=a(()=>{"use strict";De()});import{homedir as Dr}from"node:os";import Ur from"node:path";var Ue,te=a(()=>{"use strict";Ue=Ur.join(Dr(),".kynver",".env")});var Le=a(()=>{"use strict"});var Fe=a(()=>{"use strict";Le()});var $e=a(()=>{"use strict"});var ne=a(()=>{"use strict";Fe();$e()});var He=a(()=>{"use strict"});var je=a(()=>{"use strict";He()});var B=a(()=>{"use strict";te();x();k();ne();je()});var Ye=a(()=>{"use strict";b();b()});var Ve=a(()=>{"use strict";te();ne();B()});var Ge=a(()=>{"use strict";z();b();Ye();k();B();Ve();d();K()});import{existsSync as Gr,mkdirSync as Ks,readFileSync as qr,writeFileSync as Ws}from"node:fs";import{homedir as zr,totalmem as Ms}from"node:os";import oe from"node:path";function Jr(e){return{...e,...e.harnessRoot?.trim()?{harnessRoot:v(e.harnessRoot.trim())}:{},...e.defaultRepo?.trim()?{defaultRepo:v(e.defaultRepo.trim())}:{}}}function S(){if(!Gr(qe))return{};try{return Jr(JSON.parse(qr(qe,"utf8")))}catch{return{}}}var ze,qe,zs,Js,Xs,k=a(()=>{"use strict";z();x();d();b();N();W();X();B();Ge();K();ze=oe.join(zr(),".kynver"),qe=oe.join(ze,"config.json"),zs=oe.join(ze,"credentials");Js=500*1024*1024,Xs=4*1024*1024*1024});var Rr=/^claude[-_]/i,br=/^(?:opus|sonnet|haiku)\b/i;function fe(e){let r=e.trim();return Rr.test(r)||br.test(r)}function ge(e){let r=e.trim().toLowerCase();return r.startsWith("gpt-")||r.startsWith("gpt5")||r.includes("codex")}function Y(e){let r=e.trim().toLowerCase();return r.includes("composer")||r.includes("cursor")}function kr(e){return ge(e)?"codex":fe(e)?"claude":(Y(e),"cursor")}function _r(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==="cursor"||n==="composer"?{provider:"cursor",model:o,rule:"executor_ref:provider_cursor"}:null:null}function vr(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?fe(n)||ge(n)||Y(n)?{lane:t,model:n,provider:kr(n),rule:"executor_ref:harness_lane_model"}:{lane:t,rule:"executor_ref:harness_lane"}:{lane:t,rule:"executor_ref:harness_lane"}}function h(e){let r=typeof e=="string"?e.trim():"";return r?_r(r)??vr(r):null}function V(e){let r=h(e);return r?!!(r.provider&&r.provider!=="cursor"||r.model&&!Y(r.model)):!1}k();var Je={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 E(e){return Je[e]}function Xe(){return Object.values(Je)}import{existsSync as Qr}from"node:fs";import{homedir as Zr}from"node:os";import C from"node:path";import{createHash as Qe}from"node:crypto";import{statSync as Xr}from"node:fs";import{spawnSync as Ze}from"node:child_process";function y(e){try{let r=Xr(e),t=`${e}|${r.size}|${r.mtimeMs}`;return Qe("sha256").update(t).digest("hex").slice(0,16)}catch{return}}function O(e){return Qe("sha256").update(`env:${e}`).digest("hex").slice(0,16)}function p(e,r){for(let t of r){let n=process.env[t]?.trim();if(n)return n}return e}function m(e,r,t={}){let n=t.timeoutMs??8e3;try{let o=Ze(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 M(e,r,t={}){let n=t.timeoutMs??8e3;try{return Ze(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 rt(){let e=Zr();return[process.env.CODEX_HOME?.trim()?C.join(C.resolve(process.env.CODEX_HOME.trim()),"auth.json"):null,C.join(e,".codex","auth.json"),C.join(e,".config","codex","auth.json")].filter(t=>!!t)}function tt(e){return C.dirname(e)}function nt(e){let r,t;for(let n of rt()){if(!Qr(n))continue;r??=n;let o=m(e,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status",env:{CODEX_HOME:tt(n)}});if(t??=o,o.ok)return{authPath:n,login:o}}return{authPath:r,login:t??m(e,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status"})}}function er(e=new Date().toISOString()){let r=p(et,["KYNVER_CODEX_BIN","CODEX_BIN"]);if(process.env.CODEX_API_KEY?.trim())return{providerId:"codex",ready:!0,authSource:"api_key_env",sessionFingerprint:O("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}=nt(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 it}from"node:os";import ie from"node:path";function st(){let e=process.env.HERMES_HOME?.trim(),r=e?ie.resolve(e):ie.join(it(),".hermes");return ie.join(r,"auth.json")}function D(e=new Date().toISOString()){let r=p("hermes",["KYNVER_HERMES_BIN","HERMES_BIN"]),t=m(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=st(),o=ot(n),i=M(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?y(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 A(e=new Date().toISOString()){let r=er(e);if(r.ready)return{...r,path:"codex_cli"};let t=D(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 rr=["low","medium","high"],tr={oauth_local:0,subscription_hermes:0,runner_token:1,api_key_env:2,none:3};function nr(e,r){let t=E(e);return r==="privileged"?t.supportsPrivilegedPlatformActions:r==="low"?t.supportsLowRiskOrchestration:!0}function at(e,r){let t=E(e.providerId),n=E(r.providerId),o=rr.indexOf(t.costTier)-rr.indexOf(n.costTier);if(o!==0)return o;let i=tr[e.binding.authSource]-tr[r.binding.authSource];return i!==0?i:e.providerId.localeCompare(r.providerId)}function se(e){let r=Xe().map(l=>({providerId:l.id,binding:e.inventory.bindings[l.id]})).filter(l=>l.binding.ready&&nr(l.providerId,e.riskClass));if(r.length===0)return null;let n=[...r].sort(at)[0],o="codex";if(n.providerId===o)return{providerId:n.providerId,binding:n.binding};let i=e.inventory.bindings[o],s;return nr(o,e.riskClass)?i.ready||(s=i.note??`${o} not bound`):s=`${e.riskClass} orchestration requires privileged-capable provider`,{providerId:n.providerId,binding:n.binding,escalatedFrom:o,escalatedReason:s}}import{existsSync as lt}from"node:fs";import{homedir as ct}from"node:os";import ut from"node:path";var dt="claude";function pt(){let e=ct();return[ut.join(e,".claude",".credentials.json")]}function or(e=new Date().toISOString()){let r=p(dt,["KYNVER_CLAUDE_BIN","CLAUDE_BIN"]);if(process.env.ANTHROPIC_API_KEY?.trim())return{providerId:"claude",ready:!1,authSource:"api_key_env",sessionFingerprint:O("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=m(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=pt().find(s=>lt(s)),o=M(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?y(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 mt}from"node:fs";import{homedir as ft}from"node:os";import ae from"node:path";var gt="agent";function ht(){let e=ft(),r=[ae.join(e,".config","cursor","auth.json")];if(process.platform==="win32"){let t=process.env.LOCALAPPDATA?.trim(),n=process.env.APPDATA?.trim();t&&r.push(ae.join(t,"cursor-agent","auth.json")),n&&r.push(ae.join(n,"cursor","auth.json"))}return r}function ir(e=new Date().toISOString()){let r=p(gt,["KYNVER_CURSOR_AGENT_BIN","CURSOR_AGENT_BIN"]);if(process.env.CURSOR_API_KEY?.trim())return{providerId:"cursor",ready:!1,authSource:"api_key_env",sessionFingerprint:O("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=m(r,["-v"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=ht().find(i=>mt(i)),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 yt,readFileSync as Rt}from"node:fs";import{homedir as bt}from"node:os";import le from"node:path";var kt=["OPENAI_API_KEY","ANTHROPIC_API_KEY","KYNVER_API_KEY","KYNVER_BASE_URL"];function _t(){let e=process.env.HERMES_HOME?.trim(),r=e?le.resolve(e):le.join(bt(),".hermes");return le.join(r,".env")}function vt(e){try{let r=Rt(e,"utf8"),t=[];for(let n of kt)new RegExp(`^${n}=`,"m").test(r)&&t.push(n);return t}catch{return[]}}function sr(e=new Date().toISOString()){let r=p("hermes",["KYNVER_HERMES_BIN","HERMES_BIN"]),t=m(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=_t(),o=yt(n),i=o?vt(n):[],l=i.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 (${i.length?`keys: ${i.join(", ")}`:"no API keys detected"})`:[t.note,o?void 0:"no ~/.hermes/.env"].filter(Boolean).join("; ")}}function ar(e={}){let r=e.nowIso?.()??new Date().toISOString(),t=A(r),n={codex:t,cursor:ir(r),claude:or(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:sr(r),hermesOpenAiCodex:D(r),codexAdapterPath:t.path,readyCount:o}}var xt=[/\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],St=[/\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 ce(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function Et(e){let r=ce(e,"executorRef").toLowerCase(),t=ce(e,"title").toLowerCase(),n=ce(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 Ee}from"node:os";import Se from"node:path";function Mr(e){return e==="~"?Ee():e.startsWith("~/")||e.startsWith("~\\")?Se.join(Ee(),e.slice(2)):e}function S(e){return Se.resolve(Mr(e))}var O=a(()=>{"use strict"});var d=a(()=>{"use strict"});var Br,_n,Dr,kn,ee=a(()=>{"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"],_n=new Set(Br),Dr=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],kn=new Set(Dr)});var re=a(()=>{"use strict";O();d();ee()});var te=a(()=>{"use strict";re();O()});var _=a(()=>{"use strict"});var L=a(()=>{"use strict"});var Oe=a(()=>{"use strict"});var Wn,Kn,ne=a(()=>{"use strict";Wn=25*1024*1024*1024,Kn=12*1024*1024*1024});var Ln,Fn,Ce=a(()=>{"use strict";ne();Ln=5*1024*1024*1024,Fn=10*1024*1024*1024});var Gn,qn,oe=a(()=>{"use strict";Ce();ne();Gn=30*1024*1024*1024,qn=15*1024*1024*1024});var Pe=a(()=>{"use strict";d()});import Fr from"node:path";var no,ie=a(()=>{"use strict";O();Pe();no=Fr.join(".openclaw","harness")});var $=a(()=>{"use strict";k();_();L();H();ie()});var Ne=a(()=>{"use strict";k();ie();$();d()});var ae=a(()=>{"use strict";Ne();d()});var Te=a(()=>{"use strict";ae();d()});var We=a(()=>{"use strict"});var Ke=a(()=>{"use strict";We();d()});var Me=a(()=>{"use strict"});var Be=a(()=>{"use strict";Me()});var De=a(()=>{"use strict";Be();d()});var Ue=a(()=>{"use strict"});var Le=a(()=>{"use strict"});var Fe=a(()=>{"use strict"});var le=a(()=>{"use strict"});var $e=a(()=>{"use strict"});var He=a(()=>{"use strict";le();$e()});var je=a(()=>{"use strict";Ke();De();Ue();Le();re();Fe();He();le();d()});var Ye=a(()=>{"use strict";je()});var zr,Jr,Ve=a(()=>{"use strict";Oe();k();_();L();H();oe();ae();Te();Ye();d();zr=500*1024*1024,Jr=4*1024*1024*1024});var H=a(()=>{"use strict";Ve()});import{homedir as Xr}from"node:os";import Qr from"node:path";var Ge,ue=a(()=>{"use strict";Ge=Qr.join(Xr(),".kynver",".env")});var qe=a(()=>{"use strict"});var ze=a(()=>{"use strict";qe()});var Je=a(()=>{"use strict"});var ce=a(()=>{"use strict";ze();Je()});var Xe=a(()=>{"use strict"});var Qe=a(()=>{"use strict";Xe()});var j=a(()=>{"use strict";ue();O();k();ce();Qe()});var Ze=a(()=>{"use strict";_();_()});var er=a(()=>{"use strict";ue();ce();j()});var rr=a(()=>{"use strict";te();_();Ze();k();j();er();d();$()});function b(e){let r=e.trim().toLowerCase();return at[r]??r}var tr,st,at,Y=a(()=>{"use strict";tr=["claude","cursor","codex","gemini","gemini-api","openai-compatible"],st=tr.join("|"),at={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 ut,mkdirSync as ea,readFileSync as ct,writeFileSync as ra}from"node:fs";import{homedir as dt,totalmem as na}from"node:os";import de from"node:path";function pt(e){return{...e,...e.harnessRoot?.trim()?{harnessRoot:S(e.harnessRoot.trim())}:{},...e.defaultRepo?.trim()?{defaultRepo:S(e.defaultRepo.trim())}:{}}}function C(){if(!ut(nr))return{};try{return pt(JSON.parse(ct(nr,"utf8")))}catch{return{}}}var or,nr,ha,Ra,ya,k=a(()=>{"use strict";te();O();d();_();L();H();oe();j();rr();Y();$();or=de.join(dt(),".kynver"),nr=de.join(or,"config.json"),ha=de.join(or,"credentials");Ra=500*1024*1024,ya=4*1024*1024*1024});var Ir=/^claude[-_]/i,Nr=/^(?:opus|sonnet|haiku)\b/i;function be(e){let r=e.trim();return Ir.test(r)||Nr.test(r)}function ve(e){let r=e.trim().toLowerCase();return r.startsWith("gpt-")||r.startsWith("gpt5")||r.includes("codex")}function Q(e){let r=e.trim().toLowerCase();return r.includes("composer")||r.includes("cursor")}function xe(e){return e.trim().toLowerCase().startsWith("gemini-")}function Tr(e){return ve(e)?"codex":be(e)?"claude":xe(e)?"gemini":(Q(e),"cursor")}function Wr(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 Kr(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)||ve(n)||Q(n)||xe(n)?{lane:t,model:n,provider:Tr(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?Wr(r)??Kr(r):null}function Z(e){let r=m(e);return r?!!(r.provider&&r.provider!=="cursor"||r.model&&!Q(r.model)):!1}k();var ir={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 ir[e]}function sr(){return Object.values(ir)}import{existsSync as ft}from"node:fs";import{homedir as gt}from"node:os";import W from"node:path";import{createHash as ar}from"node:crypto";import{statSync as mt}from"node:fs";import{spawnSync as lr}from"node:child_process";function R(e){try{let r=mt(e),t=`${e}|${r.size}|${r.mtimeMs}`;return ar("sha256").update(t).digest("hex").slice(0,16)}catch{return}}function P(e){return ar("sha256").update(`env:${e}`).digest("hex").slice(0,16)}function g(e,r){for(let t of r){let n=process.env[t]?.trim();if(n)return n}return e}function h(e,r,t={}){let n=t.timeoutMs??8e3;try{let o=lr(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 V(e,r,t={}){let n=t.timeoutMs??8e3;try{return lr(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 ht="codex";function Rt(){let e=gt();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 yt(e){return W.dirname(e)}function _t(e){let r,t;for(let n of Rt()){if(!ft(n))continue;r??=n;let o=h(e,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status",env:{CODEX_HOME:yt(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 ur(e=new Date().toISOString()){let r=g(ht,["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}=_t(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 kt}from"node:fs";import{homedir as bt}from"node:os";import pe from"node:path";function vt(){let e=process.env.HERMES_HOME?.trim(),r=e?pe.resolve(e):pe.join(bt(),".hermes");return pe.join(r,"auth.json")}function G(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=vt(),o=kt(n),s=V(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 K(e=new Date().toISOString()){let r=ur(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"}}var cr=["low","medium","high"],dr={oauth_local:0,subscription_hermes:0,runner_token:1,api_key_env:2,none:3};function pr(e,r){let t=A(e);return r==="privileged"?t.supportsPrivilegedPlatformActions:r==="low"?t.supportsLowRiskOrchestration:!0}function xt(e,r){let t=A(e.providerId),n=A(r.providerId),o=cr.indexOf(t.costTier)-cr.indexOf(n.costTier);if(o!==0)return o;let s=dr[e.binding.authSource]-dr[r.binding.authSource];return s!==0?s:e.providerId.localeCompare(r.providerId)}function me(e){let r=sr().map(l=>({providerId:l.id,binding:e.inventory.bindings[l.id]})).filter(l=>l.binding.ready&&pr(l.providerId,e.riskClass));if(r.length===0)return null;let n=[...r].sort(xt)[0],o="codex";if(n.providerId===o)return{providerId:n.providerId,binding:n.binding};let s=e.inventory.bindings[o],i;return pr(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 Et}from"node:fs";import{homedir as St}from"node:os";import Ot from"node:path";var Ct="claude";function At(){let e=St();return[Ot.join(e,".claude",".credentials.json")]}function mr(e=new Date().toISOString()){let r=g(Ct,["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=At().find(i=>Et(i)),o=V(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 Pt}from"node:fs";import{homedir as wt}from"node:os";import fe from"node:path";var It="agent";function Nt(){let e=wt(),r=[fe.join(e,".config","cursor","auth.json")];if(process.platform==="win32"){let t=process.env.LOCALAPPDATA?.trim(),n=process.env.APPDATA?.trim();t&&r.push(fe.join(t,"cursor-agent","auth.json")),n&&r.push(fe.join(n,"cursor","auth.json"))}return r}function fr(e=new Date().toISOString()){let r=g(It,["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=Nt().find(s=>Pt(s)),o=!!n&&t.ok;return{providerId:"cursor",ready:o,authSource:"oauth_local",sessionFingerprint:n?R(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 Tt,readFileSync as Wt}from"node:fs";import{homedir as Kt}from"node:os";import ge from"node:path";var Mt=["OPENAI_API_KEY","ANTHROPIC_API_KEY","KYNVER_API_KEY","KYNVER_BASE_URL"];function Bt(){let e=process.env.HERMES_HOME?.trim(),r=e?ge.resolve(e):ge.join(Kt(),".hermes");return ge.join(r,".env")}function Dt(e){try{let r=Wt(e,"utf8"),t=[];for(let n of Mt)new RegExp(`^${n}=`,"m").test(r)&&t.push(n);return t}catch{return[]}}function gr(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=Bt(),o=Tt(n),s=o?Dt(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 hr(e={}){let r=e.nowIso?.()??new Date().toISOString(),t=K(r),n={codex:t,cursor:fr(r),claude:mr(r)},o=Object.values(n).filter(s=>s.ready).length;return{generatedAt:r,bindings:n,cloudApiCredits:{anthropicApiKey:!!process.env.ANTHROPIC_API_KEY?.trim(),openaiApiKey:!!process.env.OPENAI_API_KEY?.trim(),codexApiKey:!!process.env.CODEX_API_KEY?.trim()},workerEndpoint:{baseUrlConfigured:!!process.env.KYNVER_WORKER_BASE_URL?.trim(),apiKeyConfigured:!!process.env.KYNVER_WORKER_API_KEY?.trim()},hermes:gr(r),hermesOpenAiCodex:G(r),codexAdapterPath:t.path,readyCount:o}}var Ut=[/\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],Lt=[/\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 he(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function Ft(e){let r=he(e,"executorRef").toLowerCase(),t=he(e,"title").toLowerCase(),n=he(e,"description").toLowerCase(),o=`${r}
|
|
2
2
|
${t}
|
|
3
|
-
${n}`;return
|
|
4
|
-
${
|
|
5
|
-
${
|
|
3
|
+
${n}`;return Ut.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":Lt.some(s=>s.test(o))?"low":"elevated"}function $t(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 Ht(e){let r=e.inventory??hr();return e.codexBinding?{...r,bindings:{...r.bindings,codex:e.codexBinding}}:r}function v(e){let r=$t({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 Rr(e){let r=e.task??{},t=Ft(r),n=Ht({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 u=n.bindings.codex;if(!u.ready){let f=me({inventory:n,riskClass:t});return v(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 v({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 v({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 v({providerId:"claude",binding:u,riskClass:t,routingRule:"orchestration:explicit_claude",model:s})}let l=me({inventory:n,riskClass:t});if(l)return v({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 v({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"}})}ee();d();var yr="kynver",_r=["agent_os_context_envelope","agent_os_search_memory","agent_os_search_skills","agent_os_get_skill","agent_os_progress_note"],jt=_r.map(e=>`mcp__${yr}__${e}`);var M="claude-sonnet-4-6",B="claude-opus-4-8";d();d();var wl=process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.4";function Vt(){return process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.4"}var I=Vt();d();var Re="openai-compatible",tu=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 gu=600*1e3;var vr="claude-sonnet-4-6",D="composer-2.5";function p(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function zt(e){if(!e)return;let r=p(e,"workerModelOverride")||p(e,"modelOverride");return r||`${p(e,"title")}
|
|
4
|
+
${p(e,"description")}
|
|
5
|
+
${p(e,"executorRef")}`.match(/\[(?:worker-)?model:\s*([^\]\n]+)\]/i)?.[1]?.trim()||void 0}function kr(e){return e.toLowerCase()}function X(e=C()){let r=e.defaultModel?.trim();if(r)return r;let t=process.env.KYNVER_DEFAULT_MODEL?.trim();return t||vr}function z(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 Jt(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 br(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 Xt=new Set(["report_reviewer","deep_reviewer","plan_reviewer"]);function xr(e,r,t){return Xt.has(e)?B:r.includes("review")||/^review[\s:]/.test(t)||t.includes("critique")?B:M}function Er(e){let r=kr(p(e,"executorRef")),t=p(e,"title").toLowerCase(),n=p(e,"priority")||"normal",o=kr(p(e,"roleLane"));if(r.includes("provider:claude")||r.startsWith("claude:")){let i=xr(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:Re,...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 br(r,t)||o==="deep_reviewer"?{provider:"cursor",rule:"lane:deep_review"}:{provider:"cursor",rule:"lane:review"};if(br(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=X();return{model:s,provider:z(s),rule:"default:global"}}function Qt(e){return e?m(p(e,"executorRef")):null}function Zt(e){switch(b(e)){case x:case N:return E();case"claude":return M;case"codex":return I;case"cursor":return D;default:return}}var ye="explicit:cli_provider",Sr="config:worker_provider";function Or(e,r,t){let n=b(r);return n===e.provider&&e.rule===t?e:{...e,provider:n,model:Zt(n)??e.model,rule:t}}function en(e,r){let t=r?.trim();return!t||e.rule.startsWith("explicit:")&&e.rule!==ye?e:Or(e,t,ye)}function rn(e,r){if(r.explicitProvider?.trim()||_e(r.task))return e;let t=r.configuredProvider?.trim();if(!t)return e;let n=b(t);return n===w||n===e.provider?e:Or(e,n,Sr)}function tn(e){let r,t=Qt(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=Jt(c,e.explicitProvider);u?r=u:r={model:c,provider:e.explicitProvider?.trim()||z(c),rule:"explicit:cli",requestedModel:c}}else if(n)r={model:n,provider:o||z(n),rule:t?.rule??"executor_ref:model",requestedModel:n};else if(e.task&&J(e.task)){let c=zt(e.task),u,f;if(c)u=c,f="task:provider_override";else{let ke=typeof e.task.roleLane=="string"?e.task.roleLane.toLowerCase():"",Pr=typeof e.task.executorRef=="string"?e.task.executorRef.toLowerCase():"",wr=typeof e.task.title=="string"?e.task.title.toLowerCase():"";u=xr(ke,Pr,wr),f=u===B?"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=Er(e.task);r={...c,requestedModel:c.model}}else{let c=X();r={model:c,provider:e.explicitProvider?.trim()||z(c),rule:"default:global",requestedModel:c}}r=en(r,e.explicitProvider),r=rn(r,{explicitProvider:e.explicitProvider,task:e.task,configuredProvider:e.configuredProvider});let s=!!e.configuredProvider?.trim()&&b(e.configuredProvider)!==w&&r.rule==="config:worker_provider",i=Cr({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===ye||i.rule===Sr||y(i.provider)&&(e.explicitProviderIsOperatorOverride||J(e.task))||i.provider===Re||i.provider===x||i.provider===N||i.provider==="codex")return i;let l=Rr({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 nn(e,r,t){return e||r||t||X()||M}Y();Y();var w="cursor",on=new Set(["claude","opus","anthropic"]),sn=[/\[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 y(e){if(!e?.trim())return!1;let r=e.trim().toLowerCase();return on.has(r)?!0:r.includes("claude")||r.includes("opus")}function J(e){if(!e)return!1;let r=e.workerProviderOverride;if(typeof r=="string"&&y(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&&y(n.provider)||n?.model&&y(an(n.model)))return!0;let o=U(e,"description");if(sn.some(i=>i.test(o)))return!0;let s=U(e,"title");return!!/\[use-claude-worker\]/i.test(s)}function an(e){let r=e.trim().toLowerCase();return/^claude[-_]/.test(r)||/^(?:opus|sonnet|haiku)\b/.test(r)?"claude":r}function ln(e,r){return{provider:w,model:D,rule:`policy:cursor_default${r}`,requestedModel:e}}var un=["explicit:","executor_ref:","factory:","task:"];function cn(e){return un.some(r=>e.startsWith(r))}function _e(e){if(!e)return!1;let r=e.workerProviderOverride;return typeof r=="string"&&r.trim()||m(U(e,"executorRef"))?.provider?!0:J(e)}function Cr(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||cn(r.rule)||_e(t)||!y(r.provider))return r;let o=r.rule&&r.rule!=="default:global"?`:${r.rule.replace(/:/g,"_")}`:"";return ln(r.model,o)}function dn(e){let r=e?.executorRef;return typeof r=="string"?r.trim():""}function Ar(e){return e?.trim()||void 0}function pn(e){let r=dn(e.task),t=m(r),n=e.explicitProvider?.trim().toLowerCase(),o=Ar(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=Ar(e.routing.model),f={provider:c,model:u,rule:e.routing.rule};return s&&s!=="cursor"||r&&Z(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{D as CURSOR_DEFAULT_MODEL,vr as GLOBAL_DEFAULT_MODEL,pn as assessDispatchModelGuard,Z as executorRefRequestsNonCursorWorker,Er as inferModelRoutingFromTask,m as parseExecutorRefRoutingIntent,X as resolveGlobalDefaultModel,nn as resolveModelFallback,tn as resolveWorkerLaunch};
|