@kynver-app/runtime 0.2.59 → 0.2.65
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 +5 -5
- package/dist/cli.js +95 -91
- package/dist/index.js +119 -115
- package/dist/local-run-store/index.js +7 -7
- package/dist/server/cleanup.js +14 -14
- package/dist/server/default-repo.js +1 -1
- package/dist/server/dispatch-routing.js +3 -3
- package/dist/server/heavy-verification.js +1 -1
- package/dist/server/memory-cost-enforce.js +2 -2
- package/dist/server/memory-cost.js +2 -2
- package/dist/server/model-routing.js +3 -3
- package/dist/server/monitor.js +7 -7
- package/dist/server/worker-policy.js +2 -2
- 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 ke}from"node:os";import be from"node:path";function Ar(e){return e==="~"?ke():e.startsWith("~/")||e.startsWith("~\\")?be.join(ke(),e.slice(2)):e}function v(e){return be.resolve(Ar(e))}var x=a(()=>{"use strict"});var d=a(()=>{"use strict"});var wr,sn,Pr,an,X=a(()=>{"use strict";wr=["ANTHROPIC_API_KEY","ANALYST_API_KEY","RECRUITER_API_KEY","AUTH_SECRET","NEXTAUTH_SECRET","DATABASE_URL","PRODUCTION_DATABASE_URL","KYNVER_PRODUCTION_DATABASE_URL","REDIS_URL","GOOGLE_CLIENT_SECRET","GITHUB_CLIENT_SECRET","KYNVER_API_KEY","KYNVER_SERVICE_SECRET","KYNVER_RUNTIME_SECRET","KYNVER_CRON_SECRET","OPENCLAW_CRON_SECRET","QSTASH_TOKEN","QSTASH_CURRENT_SIGNING_KEY","QSTASH_NEXT_SIGNING_KEY","TOOL_SECRETS_KEK","TOOL_EXECUTOR_DISPATCH_SECRET","CLOUDFLARE_API_TOKEN","STRIPE_SECRET_KEY","STRIPE_WEBHOOK_SECRET","STRIPE_IDENTITY_WEBHOOK_SECRET","VOYAGE_API_KEY","PERPLEXITY_API_KEY","FRED_API_KEY","FMP_API_KEY","CURSOR_API_KEY","MEMORY_CONTENT_KEK","LLM_BYOK_KEK","KYNVER_COMMAND_AUTH_KEY","KYNVER_INSTRUCTION_BUNDLE_KEY","KYNVER_MEMORY_LEDGER_KEY","KYNVER_JWKS_PRIVATE_KEY_JWK"],sn=new Set(wr),Pr=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],an=new Set(Pr)});var Q=a(()=>{"use strict";x();d();X()});var Z=a(()=>{"use strict";Q();x()});var _=a(()=>{"use strict"});var K=a(()=>{"use strict"});var ve=a(()=>{"use strict"});var bn,vn,ee=a(()=>{"use strict";bn=25*1024*1024*1024,vn=12*1024*1024*1024});var Cn,An,xe=a(()=>{"use strict";ee();Cn=5*1024*1024*1024,An=10*1024*1024*1024});var Wn,Kn,re=a(()=>{"use strict";xe();ee();Wn=30*1024*1024*1024,Kn=15*1024*1024*1024});var Se=a(()=>{"use strict";d()});import Tr from"node:path";var jn,te=a(()=>{"use strict";x();Se();jn=Tr.join(".openclaw","harness")});var B=a(()=>{"use strict";k();_();K();D();te()});var Ae=a(()=>{"use strict";k();te();B();d()});var oe=a(()=>{"use strict";Ae();d()});var we=a(()=>{"use strict";oe();d()});var Pe=a(()=>{"use strict"});var Ie=a(()=>{"use strict";Pe();d()});var Ne=a(()=>{"use strict"});var Te=a(()=>{"use strict";Ne()});var We=a(()=>{"use strict";Te();d()});var Ke=a(()=>{"use strict"});var Me=a(()=>{"use strict"});var Be=a(()=>{"use strict"});var ie=a(()=>{"use strict"});var De=a(()=>{"use strict"});var Ue=a(()=>{"use strict";ie();De()});var Le=a(()=>{"use strict";Ie();We();Ke();Me();Q();Be();Ue();ie();d()});var Fe=a(()=>{"use strict";Le()});var Fr,$r,$e=a(()=>{"use strict";ve();k();_();K();D();re();oe();we();Fe();d();Fr=500*1024*1024,$r=4*1024*1024*1024});var D=a(()=>{"use strict";$e()});import{homedir as Hr}from"node:os";import jr from"node:path";var He,se=a(()=>{"use strict";He=jr.join(Hr(),".kynver",".env")});var je=a(()=>{"use strict"});var Ye=a(()=>{"use strict";je()});var Ve=a(()=>{"use strict"});var ae=a(()=>{"use strict";Ye();Ve()});var Ge=a(()=>{"use strict"});var qe=a(()=>{"use strict";Ge()});var U=a(()=>{"use strict";se();x();k();ae();qe()});var ze=a(()=>{"use strict";_();_()});var Je=a(()=>{"use strict";se();ae();U()});var Xe=a(()=>{"use strict";Z();_();ze();k();U();Je();d();B()});import{existsSync as Qr,mkdirSync as Ls,readFileSync as Zr,writeFileSync as Fs}from"node:fs";import{homedir as et,totalmem as Hs}from"node:os";import le from"node:path";function rt(e){return{...e,...e.harnessRoot?.trim()?{harnessRoot:v(e.harnessRoot.trim())}:{},...e.defaultRepo?.trim()?{defaultRepo:v(e.defaultRepo.trim())}:{}}}function E(){if(!Qr(Qe))return{};try{return rt(JSON.parse(Zr(Qe,"utf8")))}catch{return{}}}var Ze,Qe,ra,ta,na,k=a(()=>{"use strict";Z();x();d();_();K();D();re();U();Xe();B();Ze=le.join(et(),".kynver"),Qe=le.join(Ze,"config.json"),ra=le.join(Ze,"credentials");ta=500*1024*1024,na=4*1024*1024*1024});var xr=/^claude[-_]/i,Er=/^(?:opus|sonnet|haiku)\b/i;function ye(e){let r=e.trim();return xr.test(r)||Er.test(r)}function Re(e){let r=e.trim().toLowerCase();return r.startsWith("gpt-")||r.startsWith("gpt5")||r.includes("codex")}function z(e){let r=e.trim().toLowerCase();return r.includes("composer")||r.includes("cursor")}function _e(e){return e.trim().toLowerCase().startsWith("gemini-")}function Sr(e){return Re(e)?"codex":ye(e)?"claude":_e(e)?"gemini":(z(e),"cursor")}function Or(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"}: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 Cr(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?ye(n)||Re(n)||z(n)||_e(n)?{lane:t,model:n,provider:Sr(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?Or(r)??Cr(r):null}function J(e){let r=m(e);return r?!!(r.provider&&r.provider!=="cursor"||r.model&&!z(r.model)):!1}k();var er={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 S(e){return er[e]}function rr(){return Object.values(er)}import{existsSync as nt}from"node:fs";import{homedir as ot}from"node:os";import P from"node:path";import{createHash as tr}from"node:crypto";import{statSync as tt}from"node:fs";import{spawnSync as nr}from"node:child_process";function y(e){try{let r=tt(e),t=`${e}|${r.size}|${r.mtimeMs}`;return tr("sha256").update(t).digest("hex").slice(0,16)}catch{return}}function O(e){return tr("sha256").update(`env:${e}`).digest("hex").slice(0,16)}function f(e,r){for(let t of r){let n=process.env[t]?.trim();if(n)return n}return e}function g(e,r,t={}){let n=t.timeoutMs??8e3;try{let o=nr(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 L(e,r,t={}){let n=t.timeoutMs??8e3;try{return nr(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 it="codex";function st(){let e=ot();return[process.env.CODEX_HOME?.trim()?P.join(P.resolve(process.env.CODEX_HOME.trim()),"auth.json"):null,P.join(e,".codex","auth.json"),P.join(e,".config","codex","auth.json")].filter(t=>!!t)}function at(e){return P.dirname(e)}function lt(e){let r,t;for(let n of st()){if(!nt(n))continue;r??=n;let o=g(e,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status",env:{CODEX_HOME:at(n)}});if(t??=o,o.ok)return{authPath:n,login:o}}return{authPath:r,login:t??g(e,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status"})}}function or(e=new Date().toISOString()){let r=f(it,["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}=lt(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 ut}from"node:fs";import{homedir as ct}from"node:os";import ue from"node:path";function dt(){let e=process.env.HERMES_HOME?.trim(),r=e?ue.resolve(e):ue.join(ct(),".hermes");return ue.join(r,"auth.json")}function F(e=new Date().toISOString()){let r=f("hermes",["KYNVER_HERMES_BIN","HERMES_BIN"]),t=g(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=dt(),o=ut(n),i=L(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 I(e=new Date().toISOString()){let r=or(e);if(r.ready)return{...r,path:"codex_cli"};let t=F(e);return t.ready?{providerId:"codex",ready:!0,authSource:t.authSource,sessionFingerprint:t.sessionFingerprint,checkedAt:t.checkedAt,note:t.note,path:"hermes_openai_codex",hermesOpenAiCodex:t}:{providerId:"codex",ready:!1,authSource:"none",checkedAt:e,path:"none",hermesOpenAiCodex:t,note:[r.note,t.note].filter(Boolean).join("; ")||"Codex CLI and Hermes openai-codex unavailable"}}var ir=["low","medium","high"],sr={oauth_local:0,subscription_hermes:0,runner_token:1,api_key_env:2,none:3};function ar(e,r){let t=S(e);return r==="privileged"?t.supportsPrivilegedPlatformActions:r==="low"?t.supportsLowRiskOrchestration:!0}function pt(e,r){let t=S(e.providerId),n=S(r.providerId),o=ir.indexOf(t.costTier)-ir.indexOf(n.costTier);if(o!==0)return o;let i=sr[e.binding.authSource]-sr[r.binding.authSource];return i!==0?i:e.providerId.localeCompare(r.providerId)}function ce(e){let r=rr().map(l=>({providerId:l.id,binding:e.inventory.bindings[l.id]})).filter(l=>l.binding.ready&&ar(l.providerId,e.riskClass));if(r.length===0)return null;let n=[...r].sort(pt)[0],o="codex";if(n.providerId===o)return{providerId:n.providerId,binding:n.binding};let i=e.inventory.bindings[o],s;return ar(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 mt}from"node:fs";import{homedir as ft}from"node:os";import gt from"node:path";var ht="claude";function yt(){let e=ft();return[gt.join(e,".claude",".credentials.json")]}function lr(e=new Date().toISOString()){let r=f(ht,["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=g(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=yt().find(s=>mt(s)),o=L(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 Rt}from"node:fs";import{homedir as _t}from"node:os";import de from"node:path";var kt="agent";function bt(){let e=_t(),r=[de.join(e,".config","cursor","auth.json")];if(process.platform==="win32"){let t=process.env.LOCALAPPDATA?.trim(),n=process.env.APPDATA?.trim();t&&r.push(de.join(t,"cursor-agent","auth.json")),n&&r.push(de.join(n,"cursor","auth.json"))}return r}function ur(e=new Date().toISOString()){let r=f(kt,["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=g(r,["-v"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=bt().find(i=>Rt(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 vt,readFileSync as xt}from"node:fs";import{homedir as Et}from"node:os";import pe from"node:path";var St=["OPENAI_API_KEY","ANTHROPIC_API_KEY","KYNVER_API_KEY","KYNVER_BASE_URL"];function Ot(){let e=process.env.HERMES_HOME?.trim(),r=e?pe.resolve(e):pe.join(Et(),".hermes");return pe.join(r,".env")}function Ct(e){try{let r=xt(e,"utf8"),t=[];for(let n of St)new RegExp(`^${n}=`,"m").test(r)&&t.push(n);return t}catch{return[]}}function cr(e=new Date().toISOString()){let r=f("hermes",["KYNVER_HERMES_BIN","HERMES_BIN"]),t=g(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=Ot(),o=vt(n),i=o?Ct(n):[],l=i.some(u=>u.endsWith("_API_KEY"))?"api_key_env":o?"oauth_local":"none",c=t.ok&&o;return{adapterId:"hermes",cliAvailable:t.ok,profileBound:o,authSource:l,sessionFingerprint:o?y(n):void 0,checkedAt:e,note:c?`Hermes profile bound (${i.length?`keys: ${i.join(", ")}`:"no API keys detected"})`:[t.note,o?void 0:"no ~/.hermes/.env"].filter(Boolean).join("; ")}}function dr(e={}){let r=e.nowIso?.()??new Date().toISOString(),t=I(r),n={codex:t,cursor:ur(r),claude:lr(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:cr(r),hermesOpenAiCodex:F(r),codexAdapterPath:t.path,readyCount:o}}var At=[/\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],wt=[/\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 me(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function Pt(e){let r=me(e,"executorRef").toLowerCase(),t=me(e,"title").toLowerCase(),n=me(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 Se}from"node:os";import Oe from"node:path";function Dr(e){return e==="~"?Se():e.startsWith("~/")||e.startsWith("~\\")?Oe.join(Se(),e.slice(2)):e}function S(e){return Oe.resolve(Dr(e))}var O=a(()=>{"use strict"});var d=a(()=>{"use strict"});var Ur,bn,Lr,xn,re=a(()=>{"use strict";Ur=["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"],bn=new Set(Ur),Lr=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],xn=new Set(Lr)});var L=a(()=>{"use strict";O();d();re()});var Ce=a(()=>{"use strict";L()});var te=a(()=>{"use strict";L();O();Ce()});var ne=a(()=>{"use strict";d()});var _=a(()=>{"use strict"});var F=a(()=>{"use strict"});var Ae=a(()=>{"use strict"});var Hn,jn,oe=a(()=>{"use strict";Hn=25*1024*1024*1024,jn=12*1024*1024*1024});var zn,Jn,Pe=a(()=>{"use strict";oe();zn=5*1024*1024*1024,Jn=10*1024*1024*1024});var to,no,ie=a(()=>{"use strict";Pe();oe();to=30*1024*1024*1024,no=15*1024*1024*1024});var Ie=a(()=>{"use strict";d()});import jr from"node:path";var mo,se=a(()=>{"use strict";O();Ie();mo=jr.join(".openclaw","harness")});var H=a(()=>{"use strict";k();_();F();j();se()});var Te=a(()=>{"use strict";k();se();H();d()});var le=a(()=>{"use strict";Te();d()});var Ke=a(()=>{"use strict";le();d()});var Me=a(()=>{"use strict"});var Be=a(()=>{"use strict";Me();d()});var De=a(()=>{"use strict"});var Ue=a(()=>{"use strict";De()});var Le=a(()=>{"use strict";Ue();d()});var Fe=a(()=>{"use strict"});var $e=a(()=>{"use strict"});var He=a(()=>{"use strict"});var ce=a(()=>{"use strict"});var je=a(()=>{"use strict"});var Ye=a(()=>{"use strict";ce();je()});var Ve=a(()=>{"use strict";Be();Le();Fe();$e();L();He();Ye();ce();d()});var Ge=a(()=>{"use strict";Ve()});var Qr,Zr,qe=a(()=>{"use strict";Ae();k();_();F();j();ie();le();Ke();Ge();d();Qr=500*1024*1024,Zr=4*1024*1024*1024});var j=a(()=>{"use strict";qe()});import{homedir as et}from"node:os";import rt from"node:path";var ze,ue=a(()=>{"use strict";ze=rt.join(et(),".kynver",".env")});var Je=a(()=>{"use strict"});var Xe=a(()=>{"use strict";Je()});var Qe=a(()=>{"use strict"});var de=a(()=>{"use strict";Xe();Qe()});var Ze=a(()=>{"use strict"});var er=a(()=>{"use strict";Ze()});var Y=a(()=>{"use strict";ue();O();k();de();er()});var rr=a(()=>{"use strict";_();_()});var tr=a(()=>{"use strict";ue();de();Y()});var nr=a(()=>{"use strict";te();_();rr();k();Y();tr();ne();H()});function v(e){let r=e.trim().toLowerCase();return ut[r]??r}var or,ct,ut,V=a(()=>{"use strict";or=["claude","cursor","codex","gemini","gemini-api","openai-compatible"],ct=or.join("|"),ut={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 pt,mkdirSync as ua,readFileSync as mt,writeFileSync as da}from"node:fs";import{homedir as ft,totalmem as ma}from"node:os";import pe from"node:path";function gt(e){return{...e,...e.harnessRoot?.trim()?{harnessRoot:S(e.harnessRoot.trim())}:{},...e.defaultRepo?.trim()?{defaultRepo:S(e.defaultRepo.trim())}:{}}}function C(){if(!pt(ir))return{};try{return gt(JSON.parse(mt(ir,"utf8")))}catch{return{}}}var sr,ir,Oa,Ca,Aa,k=a(()=>{"use strict";te();O();ne();_();F();j();ie();Y();nr();V();H();sr=pe.join(ft(),".kynver"),ir=pe.join(sr,"config.json"),Oa=pe.join(sr,"credentials");Ca=500*1024*1024,Aa=4*1024*1024*1024});var Wr=/^claude[-_]/i,Tr=/^(?:opus|sonnet|haiku)\b/i;function be(e){let r=e.trim();return Wr.test(r)||Tr.test(r)}function xe(e){let r=e.trim().toLowerCase();return r.startsWith("gpt-")||r.startsWith("gpt5")||r.includes("codex")}function Z(e){let r=e.trim().toLowerCase();return r.includes("composer")||r.includes("cursor")}function Ee(e){return e.trim().toLowerCase().startsWith("gemini-")}function Kr(e){return xe(e)?"codex":be(e)?"claude":Ee(e)?"gemini":(Z(e),"cursor")}function Mr(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 Br(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)||xe(n)||Z(n)||Ee(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 m(e){let r=typeof e=="string"?e.trim():"";return r?Mr(r)??Br(r):null}function ee(e){let r=m(e);return r?!!(r.provider&&r.provider!=="cursor"||r.model&&!Z(r.model)):!1}k();var ar={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 ar[e]}function lr(){return Object.values(ar)}import{existsSync as Rt}from"node:fs";import{homedir as yt}from"node:os";import T from"node:path";import{createHash as cr}from"node:crypto";import{statSync as ht}from"node:fs";import{spawnSync as ur}from"node:child_process";function R(e){try{let r=ht(e),t=`${e}|${r.size}|${r.mtimeMs}`;return cr("sha256").update(t).digest("hex").slice(0,16)}catch{return}}function P(e){return cr("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=ur(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 G(e,r,t={}){let n=t.timeoutMs??8e3;try{return ur(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 _t="codex";function kt(){let e=yt();return[process.env.CODEX_HOME?.trim()?T.join(T.resolve(process.env.CODEX_HOME.trim()),"auth.json"):null,T.join(e,".codex","auth.json"),T.join(e,".config","codex","auth.json")].filter(t=>!!t)}function vt(e){return T.dirname(e)}function bt(e){let r,t;for(let n of kt()){if(!Rt(n))continue;r??=n;let o=h(e,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status",env:{CODEX_HOME:vt(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 dr(e=new Date().toISOString()){let r=g(_t,["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}=bt(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 xt}from"node:fs";import{homedir as Et}from"node:os";import me from"node:path";function St(){let e=process.env.HERMES_HOME?.trim(),r=e?me.resolve(e):me.join(Et(),".hermes");return me.join(r,"auth.json")}function q(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=St(),o=xt(n),s=G(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=dr(e);if(r.ready)return{...r,path:"codex_cli"};let t=q(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 pr=["low","medium","high"],mr={oauth_local:0,subscription_hermes:0,runner_token:1,api_key_env:2,none:3};function fr(e,r){let t=A(e);return r==="privileged"?t.supportsPrivilegedPlatformActions:r==="low"?t.supportsLowRiskOrchestration:!0}function Ot(e,r){let t=A(e.providerId),n=A(r.providerId),o=pr.indexOf(t.costTier)-pr.indexOf(n.costTier);if(o!==0)return o;let s=mr[e.binding.authSource]-mr[r.binding.authSource];return s!==0?s:e.providerId.localeCompare(r.providerId)}function fe(e){let r=lr().map(l=>({providerId:l.id,binding:e.inventory.bindings[l.id]})).filter(l=>l.binding.ready&&fr(l.providerId,e.riskClass));if(r.length===0)return null;let n=[...r].sort(Ot)[0],o="codex";if(n.providerId===o)return{providerId:n.providerId,binding:n.binding};let s=e.inventory.bindings[o],i;return fr(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 Ct}from"node:fs";import{homedir as At}from"node:os";import Pt from"node:path";var wt="claude";function It(){let e=At();return[Pt.join(e,".claude",".credentials.json")]}function gr(e=new Date().toISOString()){let r=g(wt,["KYNVER_CLAUDE_BIN","CLAUDE_BIN"]);if(process.env.ANTHROPIC_API_KEY?.trim())return{providerId:"claude",ready:!1,authSource:"api_key_env",sessionFingerprint:P("ANTHROPIC_API_KEY"),checkedAt:e,note:"ANTHROPIC_API_KEY present but scrubbed from worker env (deployment secret) \u2014 use `claude` CLI login (OAuth) for harness workers"};let t=h(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=It().find(i=>Ct(i)),o=G(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 Nt}from"node:fs";import{homedir as Wt}from"node:os";import ge from"node:path";var Tt="agent";function Kt(){let e=Wt(),r=[ge.join(e,".config","cursor","auth.json")];if(process.platform==="win32"){let t=process.env.LOCALAPPDATA?.trim(),n=process.env.APPDATA?.trim();t&&r.push(ge.join(t,"cursor-agent","auth.json")),n&&r.push(ge.join(n,"cursor","auth.json"))}return r}function hr(e=new Date().toISOString()){let r=g(Tt,["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=Kt().find(s=>Nt(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 Mt,readFileSync as Bt}from"node:fs";import{homedir as Dt}from"node:os";import he from"node:path";var Ut=["OPENAI_API_KEY","ANTHROPIC_API_KEY","KYNVER_API_KEY","KYNVER_BASE_URL"];function Lt(){let e=process.env.HERMES_HOME?.trim(),r=e?he.resolve(e):he.join(Dt(),".hermes");return he.join(r,".env")}function Ft(e){try{let r=Bt(e,"utf8"),t=[];for(let n of Ut)new RegExp(`^${n}=`,"m").test(r)&&t.push(n);return t}catch{return[]}}function Rr(e=new Date().toISOString()){let r=g("hermes",["KYNVER_HERMES_BIN","HERMES_BIN"]),t=h(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=Lt(),o=Mt(n),s=o?Ft(n):[],l=s.some(c=>c.endsWith("_API_KEY"))?"api_key_env":o?"oauth_local":"none",u=t.ok&&o;return{adapterId:"hermes",cliAvailable:t.ok,profileBound:o,authSource:l,sessionFingerprint:o?R(n):void 0,checkedAt:e,note:u?`Hermes profile bound (${s.length?`keys: ${s.join(", ")}`:"no API keys detected"})`:[t.note,o?void 0:"no ~/.hermes/.env"].filter(Boolean).join("; ")}}function yr(e={}){let r=e.nowIso?.()??new Date().toISOString(),t=K(r),n={codex:t,cursor:hr(r),claude:gr(r)},o=Object.values(n).filter(s=>s.ready).length;return{generatedAt:r,bindings:n,cloudApiCredits:{anthropicApiKey:!!process.env.ANTHROPIC_API_KEY?.trim(),openaiApiKey:!!process.env.OPENAI_API_KEY?.trim(),codexApiKey:!!process.env.CODEX_API_KEY?.trim()},workerEndpoint:{baseUrlConfigured:!!process.env.KYNVER_WORKER_BASE_URL?.trim(),apiKeyConfigured:!!process.env.KYNVER_WORKER_API_KEY?.trim()},hermes:Rr(r),hermesOpenAiCodex:q(r),codexAdapterPath:t.path,readyCount:o}}var $t=[/\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],Ht=[/\borchestration\b/i,/\bplan[- ]?progress\b/i,/\bstatus\s+sync\b/i,/\bheartbeat\b/i,/\bboard[- ]?drain\b/i,/\bmaintenance\b/i,/\[orchestration:\s*low-risk\]/i];function Re(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function jt(e){let r=Re(e,"executorRef").toLowerCase(),t=Re(e,"title").toLowerCase(),n=Re(e,"description").toLowerCase(),o=`${r}
|
|
2
2
|
${t}
|
|
3
|
-
${n}`;return
|
|
3
|
+
${n}`;return $t.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":Ht.some(s=>s.test(o))?"low":"elevated"}function Yt(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 Vt(e){let r=e.inventory??yr();return e.codexBinding?{...r,bindings:{...r.bindings,codex:e.codexBinding}}:r}function b(e){let r=Yt({provider:e.providerId,model:e.model,authSource:e.binding.authSource,riskClass:e.riskClass,routingRule:e.routingRule,escalatedFrom:e.escalatedFrom,escalatedReason:e.escalatedReason});return{provider:e.providerId,model:e.model,rule:r.routingRule,audit:r}}function _r(e){let r=e.task??{},t=jt(r),n=Vt({inventory:e.inventory,codexBinding:e.codexBinding??(e.inventory?null:K())}),o=e.preferLowCost===!1?null:e.explicitProvider?.trim().toLowerCase(),s=e.explicitModel?.trim()||void 0,i=w;if(o==="codex"||o==="provider:codex"){let c=n.bindings.codex;if(!c.ready){let f=fe({inventory:n,riskClass:t});return b(f?{providerId:f.providerId,binding:f.binding,riskClass:t,routingRule:"orchestration:explicit_codex_unavailable_cost_aware",model:s,escalatedFrom:"codex",escalatedReason:c.note??"codex oauth not bound"}:{providerId:i,binding:n.bindings[i],riskClass:t,routingRule:"orchestration:codex_unavailable_escalate_cursor",model:s,escalatedFrom:"codex",escalatedReason:c.note??"codex oauth not bound"})}return b({providerId:"codex",binding:c,riskClass:t,routingRule:"orchestration:explicit_codex",model:s})}if(o==="cursor"||o==="provider:cursor"){let c=n.bindings.cursor;if(c.ready)return b({providerId:"cursor",binding:c,riskClass:t,routingRule:"orchestration:explicit_cursor",model:s})}if(o==="claude"||o==="provider:claude"){let c=n.bindings.claude;if(c.ready)return b({providerId:"claude",binding:c,riskClass:t,routingRule:"orchestration:explicit_claude",model:s})}let l=fe({inventory:n,riskClass:t});if(l)return b({providerId:l.providerId,binding:l.binding,riskClass:t,routingRule:`orchestration:cost_aware_${l.providerId}`,model:s,escalatedFrom:l.escalatedFrom,escalatedReason:l.escalatedReason});let u=n.bindings.codex;return b({providerId:i,binding:n.bindings[i],riskClass:t,routingRule:u.ready?"orchestration:inventory_empty_default_cursor":"orchestration:codex_unavailable_default_cursor",model:s,...u.ready?{}:{escalatedFrom:"codex",escalatedReason:u.note??"codex oauth not bound"}})}re();d();var kr="kynver",vr=["agent_os_context_envelope","agent_os_search_memory","agent_os_search_skills","agent_os_get_skill","agent_os_progress_note"],Gt=vr.map(e=>`mcp__${kr}__${e}`);var M="claude-sonnet-4-6",B="claude-opus-4-8";d();d();var Ll=process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.4";function zt(){return process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.4"}var I=zt();d();var ye="openai-compatible",pc=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 Sc=600*1e3;var Er="claude-sonnet-4-6",D="composer-2.5";function p(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function Qt(e){if(!e)return;let r=p(e,"workerModelOverride")||p(e,"modelOverride");return r||`${p(e,"title")}
|
|
4
4
|
${p(e,"description")}
|
|
5
|
-
${p(e,"executorRef")}`.match(/\[(?:worker-)?model:\s*([^\]\n]+)\]/i)?.[1]?.trim()||void 0}function
|
|
5
|
+
${p(e,"executorRef")}`.match(/\[(?:worker-)?model:\s*([^\]\n]+)\]/i)?.[1]?.trim()||void 0}function br(e){return e.toLowerCase()}function Q(e=C()){let r=e.defaultModel?.trim();if(r)return r;let t=process.env.KYNVER_DEFAULT_MODEL?.trim();return t||Er}function J(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 Zt(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 xr(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 en=new Set(["report_reviewer","deep_reviewer","plan_reviewer"]);function Sr(e,r,t){return en.has(e)?B:r.includes("review")||/^review[\s:]/.test(t)||t.includes("critique")?B:M}function Or(e){let r=br(p(e,"executorRef")),t=p(e,"title").toLowerCase(),n=p(e,"priority")||"normal",o=br(p(e,"roleLane"));if(r.includes("provider:claude")||r.startsWith("claude:")){let i=Sr(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:ye,...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 xr(r,t)||o==="deep_reviewer"?{provider:"cursor",rule:"lane:deep_review"}:{provider:"cursor",rule:"lane:review"};if(xr(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=Q();return{model:s,provider:J(s),rule:"default:global"}}function rn(e){return e?m(p(e,"executorRef")):null}function tn(e){switch(v(e)){case x:case N:return E();case"claude":return M;case"codex":return I;case"cursor":return D;default:return}}var _e="explicit:cli_provider",Cr="config:worker_provider";function Ar(e,r,t){let n=v(r);return n===e.provider&&e.rule===t?e:{...e,provider:n,model:tn(n)??e.model,rule:t}}function nn(e,r){let t=r?.trim();return!t||e.rule.startsWith("explicit:")&&e.rule!==_e?e:Ar(e,t,_e)}function on(e,r){if(r.explicitProvider?.trim()||ke(r.task))return e;let t=r.configuredProvider?.trim();if(!t)return e;let n=v(t);return n===w||n===e.provider?e:Ar(e,n,Cr)}function sn(e){let r,t=rn(e.task),n=e.explicitModel?.trim()?void 0:t?.model?.trim(),o=!e.explicitProvider?.trim()&&t?.provider?.trim()?t.provider.trim():void 0;if(e.explicitModel?.trim()){let u=e.explicitModel.trim(),c=Zt(u,e.explicitProvider);c?r=c:r={model:u,provider:e.explicitProvider?.trim()||J(u),rule:"explicit:cli",requestedModel:u}}else if(n)r={model:n,provider:o||J(n),rule:t?.rule??"executor_ref:model",requestedModel:n};else if(e.task&&X(e.task)){let u=Qt(e.task),c,f;if(u)c=u,f="task:provider_override";else{let ve=typeof e.task.roleLane=="string"?e.task.roleLane.toLowerCase():"",Ir=typeof e.task.executorRef=="string"?e.task.executorRef.toLowerCase():"",Nr=typeof e.task.title=="string"?e.task.title.toLowerCase():"";c=Sr(ve,Ir,Nr),f=c===B?"factory:claude_review":"factory:claude_implementation"}r={model:c,provider:"claude",rule:f,requestedModel:c}}else if(e.task&&Object.keys(e.task).length>0){let u=Or(e.task);r={...u,requestedModel:u.model}}else{let u=Q();r={model:u,provider:e.explicitProvider?.trim()||J(u),rule:"default:global",requestedModel:u}}r=nn(r,e.explicitProvider),r=on(r,{explicitProvider:e.explicitProvider,task:e.task,configuredProvider:e.configuredProvider});let s=!!e.configuredProvider?.trim()&&v(e.configuredProvider)!==w&&r.rule==="config:worker_provider",i=Pr({routing:r,task:e.task,explicitProvider:e.explicitProvider??(s?r.provider:void 0),explicitProviderIsOperatorOverride:!!e.explicitProviderIsOperatorOverride||s});if(!e.task||Object.keys(e.task).length===0||i.rule==="explicit:model_provider_alias"||i.rule==="explicit:model_provider_alias_overrode_provider"||i.rule==="explicit:cli"||i.rule===_e||i.rule===Cr||y(i.provider)&&(e.explicitProviderIsOperatorOverride||X(e.task))||i.provider===ye||i.provider===x||i.provider===N||i.provider==="codex")return i;let l=_r({task:e.task,explicitProvider:e.explicitProvider??i.provider,explicitModel:i.model,inventory:e.orchestrationInventory??void 0});return{provider:l.provider,model:l.provider==="codex"?l.model??i.model??I:i.model,rule:l.rule,requestedModel:i.requestedModel,orchestrationAudit:l.audit}}function an(e,r,t){return e||r||t||Q()||M}V();V();var w="cursor",ln=new Set(["claude","opus","anthropic"]),cn=[/\[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 ln.has(r)?!0:r.includes("claude")||r.includes("opus")}function X(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(un(n.model)))return!0;let o=U(e,"description");if(cn.some(i=>i.test(o)))return!0;let s=U(e,"title");return!!/\[use-claude-worker\]/i.test(s)}function un(e){let r=e.trim().toLowerCase();return/^claude[-_]/.test(r)||/^(?:opus|sonnet|haiku)\b/.test(r)?"claude":r}function dn(e,r){return{provider:w,model:D,rule:`policy:cursor_default${r}`,requestedModel:e}}var pn=["explicit:","executor_ref:","factory:","task:"];function mn(e){return pn.some(r=>e.startsWith(r))}function ke(e){if(!e)return!1;let r=e.workerProviderOverride;return typeof r=="string"&&r.trim()||m(U(e,"executorRef"))?.provider?!0:X(e)}function Pr(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||mn(r.rule)||ke(t)||!y(r.provider))return r;let o=r.rule&&r.rule!=="default:global"?`:${r.rule.replace(/:/g,"_")}`:"";return dn(r.model,o)}function fn(e){let r=e?.executorRef;return typeof r=="string"?r.trim():""}function wr(e){return e?.trim()||void 0}function gn(e){let r=fn(e.task),t=m(r),n=e.explicitProvider?.trim().toLowerCase(),o=wr(e.explicitModel??void 0),s=n||t?.provider,i=o||t?.model,l=n||o?"cli":t?.rule??"none";if(!s&&!i)return{ok:!0};!s&&i&&(/^claude[-_]/i.test(i)||/^(?:opus|sonnet|haiku)\b/i.test(i))&&(s="claude");let u=e.routing.provider,c=wr(e.routing.model),f={provider:u,model:c,rule:e.routing.rule};return s&&s!=="cursor"||r&&ee(r)||n&&n!=="cursor"?u==="cursor"?{ok:!1,error:`model_routing_mismatch: requested ${s??"non-cursor"}${i?` model=${i}`:""} (${l}) but routing resolved to cursor (${e.routing.rule})`,requested:{provider:s,model:i,source:l},resolved:f}:i&&c&&i!==c&&!y(u)?{ok:!1,error:`model_routing_mismatch: requested model=${i} (${l}) but routing resolved model=${c} (${e.routing.rule})`,requested:{provider:s,model:i,source:l},resolved:f}:{ok:!0,requested:{provider:s,model:i,source:l},resolved:f}:{ok:!0,resolved:f}}export{D as CURSOR_DEFAULT_MODEL,Er as GLOBAL_DEFAULT_MODEL,gn as assessDispatchModelGuard,ee as executorRefRequestsNonCursorWorker,Or as inferModelRoutingFromTask,m as parseExecutorRefRoutingIntent,Q as resolveGlobalDefaultModel,an as resolveModelFallback,sn 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
|
|
1
|
+
import{closeSync as G,existsSync as l,mkdirSync as Y,openSync as L,readdirSync as C,readFileSync as U,statSync as W,unlinkSync as b,writeFileSync as F}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 O(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 M(e,r){let t=E(e);if(t)return O(t,r);if(!l(e))return!0;try{return Date.now()-W(e).mtimeMs>r}catch{return!0}}function q(e,r){if(M(e,r))try{b(e)}catch{}}function X(e){return Y(e,{recursive:!0}),e}function h(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;h({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&&!O(s,t)&&o.push(s)}return o}function d(e={}){return z(e).length}function _(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();h({slotsDir:t,staleMs:o});for(let i=0;i<n;i+=1){let g=B(i),a=J(g,t),V=E(a);if(M(a,o))try{b(a)}catch{}else if(V||l(a))continue;let w={slotId:g,pid:process.pid,acquiredAt:new Date().toISOString(),command:e};try{let c=L(a,"wx");F(c,JSON.stringify(w,null,2),"utf8"),G(c);let I=d({slotsDir:t,staleMs:o});return{admitted:!0,slotId:g,activeSlots:I,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();h({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=_(e,o);for(;!s.admitted&&Date.now()<n;)Z(Math.min(t,n-Date.now())),s=_(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"],xe=new Set(re);var te=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],Ce=new Set(te);var se={"@kynver-app/runtime":"0.1.83","@kynver-app/openclaw-agent-os":"0.1.43","@kynver-app/mcp-agent-os":"0.3.34"},Fe=Object.keys(se);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 ie(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,ie 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
|
|
1
|
+
import{readFile as ve}from"node:fs/promises";import{homedir as Ee}from"node:os";import m from"node:path";import{existsSync as Y,readFileSync as le}from"node:fs";import k from"node:path";import{existsSync as C,readFileSync as G}from"node:fs";import{homedir as oe}from"node:os";import c from"node:path";import{fileURLToPath as se}from"node:url";import{spawnSync as ne}from"node:child_process";import{homedir as I}from"node:os";import T from"node:path";function ee(e){return e==="~"?I():e.startsWith("~/")||e.startsWith("~\\")?T.join(I(),e.slice(2)):e}function R(e){return T.resolve(ee(e))}function V(e){return process.platform!=="win32"?e:{windowsHide:!0,...e}}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"],Ge=new Set(te);function h(e,r){try{let t=ne("git",r,V({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 ie=["Kynver","repos/Kynver","repos/kynver-source-main","code/Kynver","projects/Kynver"];function ae(e){let r=c.join(e,"package.json");if(!C(r))return null;try{let t=JSON.parse(G(r,"utf8"));return typeof t.name=="string"?t.name.trim():null}catch{return null}}function D(e){return ae(e)==="kynver"}function K(e){let r=c.resolve(e);if(!C(r))return null;let t=h(r,["rev-parse","--show-toplevel"]);if(t.status!==0)return null;let n=t.stdout.trim();return n.length?c.resolve(n):null}function ce(e=import.meta.url){let r=c.dirname(se(e));for(let t=0;t<8;t+=1){let n=c.join(r,"package.json");if(C(n))try{if(JSON.parse(G(n,"utf8")).name==="@kynver-app/runtime")return r}catch{}let o=c.dirname(r);if(o===r)break;r=o}return null}function S(e,r,t,n,o){if(!t)return;let s=c.resolve(t);e.has(s)||(o?.requireMonorepo??!0)&&!D(s)||(e.add(s),r.push({repo:s,source:n}))}function ue(e){let r=e?.cwd??process.cwd(),t=new Set,n=[];S(t,n,K(r),"cwd_git",{requireMonorepo:!1});let o=ce(e?.runtimeModuleUrl??import.meta.url);o&&S(t,n,K(o),"runtime_checkout");let s=oe();for(let l of ie)S(t,n,R(c.join(s,l)),"well_known_path");let a=c.resolve(e?.cwd??process.cwd());return n.filter(l=>{if(l.source!=="runtime_checkout"||!D(l.repo))return!0;let i=c.resolve(l.repo);return a===i||a.startsWith(`${i}${c.sep}`)})}function $(e){return ue(e)[0]??null}var U={"@kynver-app/runtime":"0.1.83","@kynver-app/openclaw-agent-os":"0.1.43","@kynver-app/mcp-agent-os":"0.3.34"},j=Object.keys(U),y={"@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 L(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 v(e,r){let t=L(e),n=L(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 W(e,r){return v(e,r)>=0}function me(e){let r=null;for(let t of e)(!r||v(t,r)>0)&&(r=t);return r}function ge(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 de(e,r){let t=[r,process.env.KYNVER_REPO,e].filter(o=>!!o?.trim());for(let o of t){let s=k.resolve(o);if(Y(k.join(s,"packages/kynver-runtime/package.json"))&&Y(k.join(s,"package.json")))return s}return $({cwd:e})?.repo??null}function B(e={}){let r=e.cwd??process.cwd(),t=de(r,e.repoRoot);if(!t)return{};let n={};for(let o of j){let s=k.join(t,pe[o]),a=ge(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&&W(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 ke(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 M(e={}){let r=e.undetectedPolicy??"skip",t=(i,u)=>i?typeof i=="string"?{version:i,source:u}:i:null,n=j.map(i=>{let u=U[i],d=[],N=t(e.installed?.[i],"installed"),E=t(e.repo?.[i],"repo"),x=t(e.self?.[i],"self");N&&d.push(N),E&&d.push(E),x&&d.push(x);let{version:p,source:f}=ke(d),q=E?.version??null,b=!!p,P=!b&&r==="skip",_=b?W(p,u):P,Q=_?[]:ye({packageName:i,minimumVersion:u,effectiveVersion:p,effectiveSource:f,repoVersion:q}),Z=P?`${y[i]} is not installed \u2014 memory-cost minimum ${u} applies when this package is present.`:_?`${y[i]} ${p} meets memory-cost minimum ${u} (${f}).`:`${y[i]} is below memory-cost minimum ${u}`+(p?` (effective ${p} via ${f})`:" (no version detected)")+".";return{packageName:i,displayName:y[i],minimumVersion:u,effectiveVersion:p,effectiveSource:f,ok:_,skipped:P,summary:Z,remediation:Q}}),o=n.filter(i=>!i.ok),s=n.filter(i=>i.effectiveVersion).length,a=o.length===0,l=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:l,packages:n}}var A=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 H(e={}){let r=M(e);if(!r.ok)throw new A(r);return r}var Pe=["@kynver-app/runtime","@kynver-app/openclaw-agent-os","@kynver-app/mcp-agent-os"];function g(e){let r=e?.trim();return r||null}function _e(e){return[...new Set(e.filter(r=>!!r))]}function Re(){let e=Ee(),r=g(process.env.KYNVER_OPENCLAW_NPM_ROOT)??g(process.env.OPENCLAW_NPM_ROOT)??m.join(e,".openclaw","npm"),t=g(process.env.KYNVER_NPM_GLOBAL_ROOT)??g(process.env.KYNVER_NPM_GLOBAL_MODULES_ROOT)??(g(process.env.NPM_CONFIG_PREFIX)?m.join(g(process.env.NPM_CONFIG_PREFIX),"lib","node_modules"):m.join(e,".npm-global","lib","node_modules"));return _e([m.join(r,"lib","node_modules"),m.join(r,"node_modules"),t.endsWith("node_modules")?t:m.join(t,"lib","node_modules")])}async function he(e){try{let r=JSON.parse(await ve(e,"utf8"));return typeof r.version=="string"&&r.version.trim()?r.version.trim():null}catch{return null}}function Se(e){let r=Re(),t=new Set,n=[];for(let o of r){let s=m.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 Se(t)){let s=await he(o);s&&(!n||v(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 O,join as X}from"node:path";import{fileURLToPath as J}from"node:url";function Me(e){let r=O(J(e));for(let t=0;t<6;t+=1){if(Ce(X(r,"package.json")))return r;let n=O(r);if(n===r)break;r=n}throw new Error(`package.json not found above ${O(J(e))}`)}function Oe(e=import.meta.url){let r=X(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 z=Oe();function we(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 w(e={}){let[r,t]=await Promise.all([F(),Promise.resolve(B({cwd:e.cwd,repoRoot:e.repoRoot}))]),n={},o=e.selfPackageName==="@kynver-app/runtime"&&e.selfVersion?e.selfVersion:z;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:we(r),repo:t,self:n,undetectedPolicy:"skip"}}async function Ne(e={}){let r=await w(e);return M(r)}async function xe(e={}){let r=await w(e);return H(r)}export{w as buildMemoryCostPackageGuardInput,xe as enforceMemoryCostPackageGuardAtStartup,Ne 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"],
|
|
2
|
-
`)),this.name="MemoryCostPackageVersionGuardError",this.result=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"],L=new Set(x);var b=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],U=new Set(b);var E={"@kynver-app/runtime":"0.1.83","@kynver-app/openclaw-agent-os":"0.1.43","@kynver-app/mcp-agent-os":"0.3.34"},I=Object.keys(E),m={"@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 v(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 v(t,e)>=0}function T(t){let e=null;for(let n of t)(!e||v(n,e)>0)&&(e=n);return e}function K(t){return t==="@kynver-app/runtime"?["npm run kynver:build","npm run kynver"]:[`npm run build -w ${t}`]}function D(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: ${K(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=I.map(o=>{let c=E[o],l=[],k=n(t.installed?.[o],"installed"),g=n(t.repo?.[o],"repo"),S=n(t.self?.[o],"self");k&&l.push(k),g&&l.push(g),S&&l.push(S);let{version:u,source:p}=V(l),P=g?.version??null,_=!!u,f=!_&&e==="skip",y=_?h(u,c):f,O=y?[]:D({packageName:o,minimumVersion:c,effectiveVersion:u,effectiveSource:p,repoVersion:P}),M=f?`${m[o]} is not installed \u2014 memory-cost minimum ${c} applies when this package is present.`:y?`${m[o]} ${u} meets memory-cost minimum ${c} (${p}).`:`${m[o]} is below memory-cost minimum ${c}`+(u?` (effective ${u} via ${p})`:" (no version detected)")+".";return{packageName:o,displayName:m[o],minimumVersion:c,effectiveVersion:u,effectiveSource:p,ok:y,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 d=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
|
+
`)),this.name="MemoryCostPackageVersionGuardError",this.result=e}};function $(t={}){let e=A(t);if(!e.ok)throw new d(e);return e}export{E as MEMORY_COST_PACKAGE_MIN_VERSIONS,d as MemoryCostPackageVersionGuardError,$ as assertMemoryCostPackageVersionGuard,v 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 ke}from"node:os";import be from"node:path";function Ar(e){return e==="~"?ke():e.startsWith("~/")||e.startsWith("~\\")?be.join(ke(),e.slice(2)):e}function v(e){return be.resolve(Ar(e))}var x=a(()=>{"use strict"});var d=a(()=>{"use strict"});var wr,sn,Pr,an,X=a(()=>{"use strict";wr=["ANTHROPIC_API_KEY","ANALYST_API_KEY","RECRUITER_API_KEY","AUTH_SECRET","NEXTAUTH_SECRET","DATABASE_URL","PRODUCTION_DATABASE_URL","KYNVER_PRODUCTION_DATABASE_URL","REDIS_URL","GOOGLE_CLIENT_SECRET","GITHUB_CLIENT_SECRET","KYNVER_API_KEY","KYNVER_SERVICE_SECRET","KYNVER_RUNTIME_SECRET","KYNVER_CRON_SECRET","OPENCLAW_CRON_SECRET","QSTASH_TOKEN","QSTASH_CURRENT_SIGNING_KEY","QSTASH_NEXT_SIGNING_KEY","TOOL_SECRETS_KEK","TOOL_EXECUTOR_DISPATCH_SECRET","CLOUDFLARE_API_TOKEN","STRIPE_SECRET_KEY","STRIPE_WEBHOOK_SECRET","STRIPE_IDENTITY_WEBHOOK_SECRET","VOYAGE_API_KEY","PERPLEXITY_API_KEY","FRED_API_KEY","FMP_API_KEY","CURSOR_API_KEY","MEMORY_CONTENT_KEK","LLM_BYOK_KEK","KYNVER_COMMAND_AUTH_KEY","KYNVER_INSTRUCTION_BUNDLE_KEY","KYNVER_MEMORY_LEDGER_KEY","KYNVER_JWKS_PRIVATE_KEY_JWK"],sn=new Set(wr),Pr=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],an=new Set(Pr)});var Q=a(()=>{"use strict";x();d();X()});var Z=a(()=>{"use strict";Q();x()});var _=a(()=>{"use strict"});var K=a(()=>{"use strict"});var ve=a(()=>{"use strict"});var bn,vn,ee=a(()=>{"use strict";bn=25*1024*1024*1024,vn=12*1024*1024*1024});var Cn,An,xe=a(()=>{"use strict";ee();Cn=5*1024*1024*1024,An=10*1024*1024*1024});var Wn,Kn,re=a(()=>{"use strict";xe();ee();Wn=30*1024*1024*1024,Kn=15*1024*1024*1024});var Se=a(()=>{"use strict";d()});import Tr from"node:path";var jn,te=a(()=>{"use strict";x();Se();jn=Tr.join(".openclaw","harness")});var B=a(()=>{"use strict";k();_();K();D();te()});var Ae=a(()=>{"use strict";k();te();B();d()});var oe=a(()=>{"use strict";Ae();d()});var we=a(()=>{"use strict";oe();d()});var Pe=a(()=>{"use strict"});var Ie=a(()=>{"use strict";Pe();d()});var Ne=a(()=>{"use strict"});var Te=a(()=>{"use strict";Ne()});var We=a(()=>{"use strict";Te();d()});var Ke=a(()=>{"use strict"});var Me=a(()=>{"use strict"});var Be=a(()=>{"use strict"});var ie=a(()=>{"use strict"});var De=a(()=>{"use strict"});var Ue=a(()=>{"use strict";ie();De()});var Le=a(()=>{"use strict";Ie();We();Ke();Me();Q();Be();Ue();ie();d()});var Fe=a(()=>{"use strict";Le()});var Fr,$r,$e=a(()=>{"use strict";ve();k();_();K();D();re();oe();we();Fe();d();Fr=500*1024*1024,$r=4*1024*1024*1024});var D=a(()=>{"use strict";$e()});import{homedir as Hr}from"node:os";import jr from"node:path";var He,se=a(()=>{"use strict";He=jr.join(Hr(),".kynver",".env")});var je=a(()=>{"use strict"});var Ye=a(()=>{"use strict";je()});var Ve=a(()=>{"use strict"});var ae=a(()=>{"use strict";Ye();Ve()});var Ge=a(()=>{"use strict"});var qe=a(()=>{"use strict";Ge()});var U=a(()=>{"use strict";se();x();k();ae();qe()});var ze=a(()=>{"use strict";_();_()});var Je=a(()=>{"use strict";se();ae();U()});var Xe=a(()=>{"use strict";Z();_();ze();k();U();Je();d();B()});import{existsSync as Qr,mkdirSync as Ls,readFileSync as Zr,writeFileSync as Fs}from"node:fs";import{homedir as et,totalmem as Hs}from"node:os";import le from"node:path";function rt(e){return{...e,...e.harnessRoot?.trim()?{harnessRoot:v(e.harnessRoot.trim())}:{},...e.defaultRepo?.trim()?{defaultRepo:v(e.defaultRepo.trim())}:{}}}function E(){if(!Qr(Qe))return{};try{return rt(JSON.parse(Zr(Qe,"utf8")))}catch{return{}}}var Ze,Qe,ra,ta,na,k=a(()=>{"use strict";Z();x();d();_();K();D();re();U();Xe();B();Ze=le.join(et(),".kynver"),Qe=le.join(Ze,"config.json"),ra=le.join(Ze,"credentials");ta=500*1024*1024,na=4*1024*1024*1024});var xr=/^claude[-_]/i,Er=/^(?:opus|sonnet|haiku)\b/i;function ye(e){let r=e.trim();return xr.test(r)||Er.test(r)}function Re(e){let r=e.trim().toLowerCase();return r.startsWith("gpt-")||r.startsWith("gpt5")||r.includes("codex")}function z(e){let r=e.trim().toLowerCase();return r.includes("composer")||r.includes("cursor")}function _e(e){return e.trim().toLowerCase().startsWith("gemini-")}function Sr(e){return Re(e)?"codex":ye(e)?"claude":_e(e)?"gemini":(z(e),"cursor")}function Or(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"}: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 Cr(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?ye(n)||Re(n)||z(n)||_e(n)?{lane:t,model:n,provider:Sr(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?Or(r)??Cr(r):null}function J(e){let r=m(e);return r?!!(r.provider&&r.provider!=="cursor"||r.model&&!z(r.model)):!1}k();var er={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 S(e){return er[e]}function rr(){return Object.values(er)}import{existsSync as nt}from"node:fs";import{homedir as ot}from"node:os";import P from"node:path";import{createHash as tr}from"node:crypto";import{statSync as tt}from"node:fs";import{spawnSync as nr}from"node:child_process";function y(e){try{let r=tt(e),t=`${e}|${r.size}|${r.mtimeMs}`;return tr("sha256").update(t).digest("hex").slice(0,16)}catch{return}}function O(e){return tr("sha256").update(`env:${e}`).digest("hex").slice(0,16)}function f(e,r){for(let t of r){let n=process.env[t]?.trim();if(n)return n}return e}function g(e,r,t={}){let n=t.timeoutMs??8e3;try{let o=nr(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 L(e,r,t={}){let n=t.timeoutMs??8e3;try{return nr(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 it="codex";function st(){let e=ot();return[process.env.CODEX_HOME?.trim()?P.join(P.resolve(process.env.CODEX_HOME.trim()),"auth.json"):null,P.join(e,".codex","auth.json"),P.join(e,".config","codex","auth.json")].filter(t=>!!t)}function at(e){return P.dirname(e)}function lt(e){let r,t;for(let n of st()){if(!nt(n))continue;r??=n;let o=g(e,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status",env:{CODEX_HOME:at(n)}});if(t??=o,o.ok)return{authPath:n,login:o}}return{authPath:r,login:t??g(e,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status"})}}function or(e=new Date().toISOString()){let r=f(it,["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}=lt(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 ut}from"node:fs";import{homedir as ct}from"node:os";import ue from"node:path";function dt(){let e=process.env.HERMES_HOME?.trim(),r=e?ue.resolve(e):ue.join(ct(),".hermes");return ue.join(r,"auth.json")}function F(e=new Date().toISOString()){let r=f("hermes",["KYNVER_HERMES_BIN","HERMES_BIN"]),t=g(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=dt(),o=ut(n),i=L(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 I(e=new Date().toISOString()){let r=or(e);if(r.ready)return{...r,path:"codex_cli"};let t=F(e);return t.ready?{providerId:"codex",ready:!0,authSource:t.authSource,sessionFingerprint:t.sessionFingerprint,checkedAt:t.checkedAt,note:t.note,path:"hermes_openai_codex",hermesOpenAiCodex:t}:{providerId:"codex",ready:!1,authSource:"none",checkedAt:e,path:"none",hermesOpenAiCodex:t,note:[r.note,t.note].filter(Boolean).join("; ")||"Codex CLI and Hermes openai-codex unavailable"}}var ir=["low","medium","high"],sr={oauth_local:0,subscription_hermes:0,runner_token:1,api_key_env:2,none:3};function ar(e,r){let t=S(e);return r==="privileged"?t.supportsPrivilegedPlatformActions:r==="low"?t.supportsLowRiskOrchestration:!0}function pt(e,r){let t=S(e.providerId),n=S(r.providerId),o=ir.indexOf(t.costTier)-ir.indexOf(n.costTier);if(o!==0)return o;let i=sr[e.binding.authSource]-sr[r.binding.authSource];return i!==0?i:e.providerId.localeCompare(r.providerId)}function ce(e){let r=rr().map(l=>({providerId:l.id,binding:e.inventory.bindings[l.id]})).filter(l=>l.binding.ready&&ar(l.providerId,e.riskClass));if(r.length===0)return null;let n=[...r].sort(pt)[0],o="codex";if(n.providerId===o)return{providerId:n.providerId,binding:n.binding};let i=e.inventory.bindings[o],s;return ar(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 mt}from"node:fs";import{homedir as ft}from"node:os";import gt from"node:path";var ht="claude";function yt(){let e=ft();return[gt.join(e,".claude",".credentials.json")]}function lr(e=new Date().toISOString()){let r=f(ht,["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=g(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=yt().find(s=>mt(s)),o=L(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 Rt}from"node:fs";import{homedir as _t}from"node:os";import de from"node:path";var kt="agent";function bt(){let e=_t(),r=[de.join(e,".config","cursor","auth.json")];if(process.platform==="win32"){let t=process.env.LOCALAPPDATA?.trim(),n=process.env.APPDATA?.trim();t&&r.push(de.join(t,"cursor-agent","auth.json")),n&&r.push(de.join(n,"cursor","auth.json"))}return r}function ur(e=new Date().toISOString()){let r=f(kt,["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=g(r,["-v"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=bt().find(i=>Rt(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 vt,readFileSync as xt}from"node:fs";import{homedir as Et}from"node:os";import pe from"node:path";var St=["OPENAI_API_KEY","ANTHROPIC_API_KEY","KYNVER_API_KEY","KYNVER_BASE_URL"];function Ot(){let e=process.env.HERMES_HOME?.trim(),r=e?pe.resolve(e):pe.join(Et(),".hermes");return pe.join(r,".env")}function Ct(e){try{let r=xt(e,"utf8"),t=[];for(let n of St)new RegExp(`^${n}=`,"m").test(r)&&t.push(n);return t}catch{return[]}}function cr(e=new Date().toISOString()){let r=f("hermes",["KYNVER_HERMES_BIN","HERMES_BIN"]),t=g(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=Ot(),o=vt(n),i=o?Ct(n):[],l=i.some(u=>u.endsWith("_API_KEY"))?"api_key_env":o?"oauth_local":"none",c=t.ok&&o;return{adapterId:"hermes",cliAvailable:t.ok,profileBound:o,authSource:l,sessionFingerprint:o?y(n):void 0,checkedAt:e,note:c?`Hermes profile bound (${i.length?`keys: ${i.join(", ")}`:"no API keys detected"})`:[t.note,o?void 0:"no ~/.hermes/.env"].filter(Boolean).join("; ")}}function dr(e={}){let r=e.nowIso?.()??new Date().toISOString(),t=I(r),n={codex:t,cursor:ur(r),claude:lr(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:cr(r),hermesOpenAiCodex:F(r),codexAdapterPath:t.path,readyCount:o}}var At=[/\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],wt=[/\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 me(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function Pt(e){let r=me(e,"executorRef").toLowerCase(),t=me(e,"title").toLowerCase(),n=me(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 Se}from"node:os";import Oe from"node:path";function Dr(e){return e==="~"?Se():e.startsWith("~/")||e.startsWith("~\\")?Oe.join(Se(),e.slice(2)):e}function S(e){return Oe.resolve(Dr(e))}var O=a(()=>{"use strict"});var d=a(()=>{"use strict"});var Ur,bn,Lr,xn,re=a(()=>{"use strict";Ur=["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"],bn=new Set(Ur),Lr=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],xn=new Set(Lr)});var L=a(()=>{"use strict";O();d();re()});var Ce=a(()=>{"use strict";L()});var te=a(()=>{"use strict";L();O();Ce()});var ne=a(()=>{"use strict";d()});var _=a(()=>{"use strict"});var F=a(()=>{"use strict"});var Ae=a(()=>{"use strict"});var Hn,jn,oe=a(()=>{"use strict";Hn=25*1024*1024*1024,jn=12*1024*1024*1024});var zn,Jn,Pe=a(()=>{"use strict";oe();zn=5*1024*1024*1024,Jn=10*1024*1024*1024});var to,no,ie=a(()=>{"use strict";Pe();oe();to=30*1024*1024*1024,no=15*1024*1024*1024});var Ie=a(()=>{"use strict";d()});import jr from"node:path";var mo,se=a(()=>{"use strict";O();Ie();mo=jr.join(".openclaw","harness")});var H=a(()=>{"use strict";k();_();F();j();se()});var Te=a(()=>{"use strict";k();se();H();d()});var le=a(()=>{"use strict";Te();d()});var Ke=a(()=>{"use strict";le();d()});var Me=a(()=>{"use strict"});var Be=a(()=>{"use strict";Me();d()});var De=a(()=>{"use strict"});var Ue=a(()=>{"use strict";De()});var Le=a(()=>{"use strict";Ue();d()});var Fe=a(()=>{"use strict"});var $e=a(()=>{"use strict"});var He=a(()=>{"use strict"});var ce=a(()=>{"use strict"});var je=a(()=>{"use strict"});var Ye=a(()=>{"use strict";ce();je()});var Ve=a(()=>{"use strict";Be();Le();Fe();$e();L();He();Ye();ce();d()});var Ge=a(()=>{"use strict";Ve()});var Qr,Zr,qe=a(()=>{"use strict";Ae();k();_();F();j();ie();le();Ke();Ge();d();Qr=500*1024*1024,Zr=4*1024*1024*1024});var j=a(()=>{"use strict";qe()});import{homedir as et}from"node:os";import rt from"node:path";var ze,ue=a(()=>{"use strict";ze=rt.join(et(),".kynver",".env")});var Je=a(()=>{"use strict"});var Xe=a(()=>{"use strict";Je()});var Qe=a(()=>{"use strict"});var de=a(()=>{"use strict";Xe();Qe()});var Ze=a(()=>{"use strict"});var er=a(()=>{"use strict";Ze()});var Y=a(()=>{"use strict";ue();O();k();de();er()});var rr=a(()=>{"use strict";_();_()});var tr=a(()=>{"use strict";ue();de();Y()});var nr=a(()=>{"use strict";te();_();rr();k();Y();tr();ne();H()});function v(e){let r=e.trim().toLowerCase();return ut[r]??r}var or,ct,ut,V=a(()=>{"use strict";or=["claude","cursor","codex","gemini","gemini-api","openai-compatible"],ct=or.join("|"),ut={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 pt,mkdirSync as ua,readFileSync as mt,writeFileSync as da}from"node:fs";import{homedir as ft,totalmem as ma}from"node:os";import pe from"node:path";function gt(e){return{...e,...e.harnessRoot?.trim()?{harnessRoot:S(e.harnessRoot.trim())}:{},...e.defaultRepo?.trim()?{defaultRepo:S(e.defaultRepo.trim())}:{}}}function C(){if(!pt(ir))return{};try{return gt(JSON.parse(mt(ir,"utf8")))}catch{return{}}}var sr,ir,Oa,Ca,Aa,k=a(()=>{"use strict";te();O();ne();_();F();j();ie();Y();nr();V();H();sr=pe.join(ft(),".kynver"),ir=pe.join(sr,"config.json"),Oa=pe.join(sr,"credentials");Ca=500*1024*1024,Aa=4*1024*1024*1024});var Wr=/^claude[-_]/i,Tr=/^(?:opus|sonnet|haiku)\b/i;function be(e){let r=e.trim();return Wr.test(r)||Tr.test(r)}function xe(e){let r=e.trim().toLowerCase();return r.startsWith("gpt-")||r.startsWith("gpt5")||r.includes("codex")}function Z(e){let r=e.trim().toLowerCase();return r.includes("composer")||r.includes("cursor")}function Ee(e){return e.trim().toLowerCase().startsWith("gemini-")}function Kr(e){return xe(e)?"codex":be(e)?"claude":Ee(e)?"gemini":(Z(e),"cursor")}function Mr(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 Br(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)||xe(n)||Z(n)||Ee(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 m(e){let r=typeof e=="string"?e.trim():"";return r?Mr(r)??Br(r):null}function ee(e){let r=m(e);return r?!!(r.provider&&r.provider!=="cursor"||r.model&&!Z(r.model)):!1}k();var ar={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 ar[e]}function lr(){return Object.values(ar)}import{existsSync as Rt}from"node:fs";import{homedir as yt}from"node:os";import T from"node:path";import{createHash as cr}from"node:crypto";import{statSync as ht}from"node:fs";import{spawnSync as ur}from"node:child_process";function R(e){try{let r=ht(e),t=`${e}|${r.size}|${r.mtimeMs}`;return cr("sha256").update(t).digest("hex").slice(0,16)}catch{return}}function P(e){return cr("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=ur(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 G(e,r,t={}){let n=t.timeoutMs??8e3;try{return ur(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 _t="codex";function kt(){let e=yt();return[process.env.CODEX_HOME?.trim()?T.join(T.resolve(process.env.CODEX_HOME.trim()),"auth.json"):null,T.join(e,".codex","auth.json"),T.join(e,".config","codex","auth.json")].filter(t=>!!t)}function vt(e){return T.dirname(e)}function bt(e){let r,t;for(let n of kt()){if(!Rt(n))continue;r??=n;let o=h(e,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status",env:{CODEX_HOME:vt(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 dr(e=new Date().toISOString()){let r=g(_t,["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}=bt(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 xt}from"node:fs";import{homedir as Et}from"node:os";import me from"node:path";function St(){let e=process.env.HERMES_HOME?.trim(),r=e?me.resolve(e):me.join(Et(),".hermes");return me.join(r,"auth.json")}function q(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=St(),o=xt(n),s=G(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=dr(e);if(r.ready)return{...r,path:"codex_cli"};let t=q(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 pr=["low","medium","high"],mr={oauth_local:0,subscription_hermes:0,runner_token:1,api_key_env:2,none:3};function fr(e,r){let t=A(e);return r==="privileged"?t.supportsPrivilegedPlatformActions:r==="low"?t.supportsLowRiskOrchestration:!0}function Ot(e,r){let t=A(e.providerId),n=A(r.providerId),o=pr.indexOf(t.costTier)-pr.indexOf(n.costTier);if(o!==0)return o;let s=mr[e.binding.authSource]-mr[r.binding.authSource];return s!==0?s:e.providerId.localeCompare(r.providerId)}function fe(e){let r=lr().map(l=>({providerId:l.id,binding:e.inventory.bindings[l.id]})).filter(l=>l.binding.ready&&fr(l.providerId,e.riskClass));if(r.length===0)return null;let n=[...r].sort(Ot)[0],o="codex";if(n.providerId===o)return{providerId:n.providerId,binding:n.binding};let s=e.inventory.bindings[o],i;return fr(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 Ct}from"node:fs";import{homedir as At}from"node:os";import Pt from"node:path";var wt="claude";function It(){let e=At();return[Pt.join(e,".claude",".credentials.json")]}function gr(e=new Date().toISOString()){let r=g(wt,["KYNVER_CLAUDE_BIN","CLAUDE_BIN"]);if(process.env.ANTHROPIC_API_KEY?.trim())return{providerId:"claude",ready:!1,authSource:"api_key_env",sessionFingerprint:P("ANTHROPIC_API_KEY"),checkedAt:e,note:"ANTHROPIC_API_KEY present but scrubbed from worker env (deployment secret) \u2014 use `claude` CLI login (OAuth) for harness workers"};let t=h(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=It().find(i=>Ct(i)),o=G(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 Nt}from"node:fs";import{homedir as Wt}from"node:os";import ge from"node:path";var Tt="agent";function Kt(){let e=Wt(),r=[ge.join(e,".config","cursor","auth.json")];if(process.platform==="win32"){let t=process.env.LOCALAPPDATA?.trim(),n=process.env.APPDATA?.trim();t&&r.push(ge.join(t,"cursor-agent","auth.json")),n&&r.push(ge.join(n,"cursor","auth.json"))}return r}function hr(e=new Date().toISOString()){let r=g(Tt,["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=Kt().find(s=>Nt(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 Mt,readFileSync as Bt}from"node:fs";import{homedir as Dt}from"node:os";import he from"node:path";var Ut=["OPENAI_API_KEY","ANTHROPIC_API_KEY","KYNVER_API_KEY","KYNVER_BASE_URL"];function Lt(){let e=process.env.HERMES_HOME?.trim(),r=e?he.resolve(e):he.join(Dt(),".hermes");return he.join(r,".env")}function Ft(e){try{let r=Bt(e,"utf8"),t=[];for(let n of Ut)new RegExp(`^${n}=`,"m").test(r)&&t.push(n);return t}catch{return[]}}function Rr(e=new Date().toISOString()){let r=g("hermes",["KYNVER_HERMES_BIN","HERMES_BIN"]),t=h(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=Lt(),o=Mt(n),s=o?Ft(n):[],l=s.some(c=>c.endsWith("_API_KEY"))?"api_key_env":o?"oauth_local":"none",u=t.ok&&o;return{adapterId:"hermes",cliAvailable:t.ok,profileBound:o,authSource:l,sessionFingerprint:o?R(n):void 0,checkedAt:e,note:u?`Hermes profile bound (${s.length?`keys: ${s.join(", ")}`:"no API keys detected"})`:[t.note,o?void 0:"no ~/.hermes/.env"].filter(Boolean).join("; ")}}function yr(e={}){let r=e.nowIso?.()??new Date().toISOString(),t=K(r),n={codex:t,cursor:hr(r),claude:gr(r)},o=Object.values(n).filter(s=>s.ready).length;return{generatedAt:r,bindings:n,cloudApiCredits:{anthropicApiKey:!!process.env.ANTHROPIC_API_KEY?.trim(),openaiApiKey:!!process.env.OPENAI_API_KEY?.trim(),codexApiKey:!!process.env.CODEX_API_KEY?.trim()},workerEndpoint:{baseUrlConfigured:!!process.env.KYNVER_WORKER_BASE_URL?.trim(),apiKeyConfigured:!!process.env.KYNVER_WORKER_API_KEY?.trim()},hermes:Rr(r),hermesOpenAiCodex:q(r),codexAdapterPath:t.path,readyCount:o}}var $t=[/\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],Ht=[/\borchestration\b/i,/\bplan[- ]?progress\b/i,/\bstatus\s+sync\b/i,/\bheartbeat\b/i,/\bboard[- ]?drain\b/i,/\bmaintenance\b/i,/\[orchestration:\s*low-risk\]/i];function Re(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function jt(e){let r=Re(e,"executorRef").toLowerCase(),t=Re(e,"title").toLowerCase(),n=Re(e,"description").toLowerCase(),o=`${r}
|
|
2
2
|
${t}
|
|
3
|
-
${n}`;return
|
|
3
|
+
${n}`;return $t.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":Ht.some(s=>s.test(o))?"low":"elevated"}function Yt(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 Vt(e){let r=e.inventory??yr();return e.codexBinding?{...r,bindings:{...r.bindings,codex:e.codexBinding}}:r}function b(e){let r=Yt({provider:e.providerId,model:e.model,authSource:e.binding.authSource,riskClass:e.riskClass,routingRule:e.routingRule,escalatedFrom:e.escalatedFrom,escalatedReason:e.escalatedReason});return{provider:e.providerId,model:e.model,rule:r.routingRule,audit:r}}function _r(e){let r=e.task??{},t=jt(r),n=Vt({inventory:e.inventory,codexBinding:e.codexBinding??(e.inventory?null:K())}),o=e.preferLowCost===!1?null:e.explicitProvider?.trim().toLowerCase(),s=e.explicitModel?.trim()||void 0,i=w;if(o==="codex"||o==="provider:codex"){let c=n.bindings.codex;if(!c.ready){let f=fe({inventory:n,riskClass:t});return b(f?{providerId:f.providerId,binding:f.binding,riskClass:t,routingRule:"orchestration:explicit_codex_unavailable_cost_aware",model:s,escalatedFrom:"codex",escalatedReason:c.note??"codex oauth not bound"}:{providerId:i,binding:n.bindings[i],riskClass:t,routingRule:"orchestration:codex_unavailable_escalate_cursor",model:s,escalatedFrom:"codex",escalatedReason:c.note??"codex oauth not bound"})}return b({providerId:"codex",binding:c,riskClass:t,routingRule:"orchestration:explicit_codex",model:s})}if(o==="cursor"||o==="provider:cursor"){let c=n.bindings.cursor;if(c.ready)return b({providerId:"cursor",binding:c,riskClass:t,routingRule:"orchestration:explicit_cursor",model:s})}if(o==="claude"||o==="provider:claude"){let c=n.bindings.claude;if(c.ready)return b({providerId:"claude",binding:c,riskClass:t,routingRule:"orchestration:explicit_claude",model:s})}let l=fe({inventory:n,riskClass:t});if(l)return b({providerId:l.providerId,binding:l.binding,riskClass:t,routingRule:`orchestration:cost_aware_${l.providerId}`,model:s,escalatedFrom:l.escalatedFrom,escalatedReason:l.escalatedReason});let u=n.bindings.codex;return b({providerId:i,binding:n.bindings[i],riskClass:t,routingRule:u.ready?"orchestration:inventory_empty_default_cursor":"orchestration:codex_unavailable_default_cursor",model:s,...u.ready?{}:{escalatedFrom:"codex",escalatedReason:u.note??"codex oauth not bound"}})}re();d();var kr="kynver",vr=["agent_os_context_envelope","agent_os_search_memory","agent_os_search_skills","agent_os_get_skill","agent_os_progress_note"],Gt=vr.map(e=>`mcp__${kr}__${e}`);var M="claude-sonnet-4-6",B="claude-opus-4-8";d();d();var Ll=process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.4";function zt(){return process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.4"}var I=zt();d();var ye="openai-compatible",pc=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 Sc=600*1e3;var Er="claude-sonnet-4-6",D="composer-2.5";function p(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function Qt(e){if(!e)return;let r=p(e,"workerModelOverride")||p(e,"modelOverride");return r||`${p(e,"title")}
|
|
4
4
|
${p(e,"description")}
|
|
5
|
-
${p(e,"executorRef")}`.match(/\[(?:worker-)?model:\s*([^\]\n]+)\]/i)?.[1]?.trim()||void 0}function
|
|
5
|
+
${p(e,"executorRef")}`.match(/\[(?:worker-)?model:\s*([^\]\n]+)\]/i)?.[1]?.trim()||void 0}function br(e){return e.toLowerCase()}function Q(e=C()){let r=e.defaultModel?.trim();if(r)return r;let t=process.env.KYNVER_DEFAULT_MODEL?.trim();return t||Er}function J(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 Zt(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 xr(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 en=new Set(["report_reviewer","deep_reviewer","plan_reviewer"]);function Sr(e,r,t){return en.has(e)?B:r.includes("review")||/^review[\s:]/.test(t)||t.includes("critique")?B:M}function Or(e){let r=br(p(e,"executorRef")),t=p(e,"title").toLowerCase(),n=p(e,"priority")||"normal",o=br(p(e,"roleLane"));if(r.includes("provider:claude")||r.startsWith("claude:")){let i=Sr(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:ye,...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 xr(r,t)||o==="deep_reviewer"?{provider:"cursor",rule:"lane:deep_review"}:{provider:"cursor",rule:"lane:review"};if(xr(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=Q();return{model:s,provider:J(s),rule:"default:global"}}function rn(e){return e?m(p(e,"executorRef")):null}function tn(e){switch(v(e)){case x:case N:return E();case"claude":return M;case"codex":return I;case"cursor":return D;default:return}}var _e="explicit:cli_provider",Cr="config:worker_provider";function Ar(e,r,t){let n=v(r);return n===e.provider&&e.rule===t?e:{...e,provider:n,model:tn(n)??e.model,rule:t}}function nn(e,r){let t=r?.trim();return!t||e.rule.startsWith("explicit:")&&e.rule!==_e?e:Ar(e,t,_e)}function on(e,r){if(r.explicitProvider?.trim()||ke(r.task))return e;let t=r.configuredProvider?.trim();if(!t)return e;let n=v(t);return n===w||n===e.provider?e:Ar(e,n,Cr)}function sn(e){let r,t=rn(e.task),n=e.explicitModel?.trim()?void 0:t?.model?.trim(),o=!e.explicitProvider?.trim()&&t?.provider?.trim()?t.provider.trim():void 0;if(e.explicitModel?.trim()){let u=e.explicitModel.trim(),c=Zt(u,e.explicitProvider);c?r=c:r={model:u,provider:e.explicitProvider?.trim()||J(u),rule:"explicit:cli",requestedModel:u}}else if(n)r={model:n,provider:o||J(n),rule:t?.rule??"executor_ref:model",requestedModel:n};else if(e.task&&X(e.task)){let u=Qt(e.task),c,f;if(u)c=u,f="task:provider_override";else{let ve=typeof e.task.roleLane=="string"?e.task.roleLane.toLowerCase():"",Ir=typeof e.task.executorRef=="string"?e.task.executorRef.toLowerCase():"",Nr=typeof e.task.title=="string"?e.task.title.toLowerCase():"";c=Sr(ve,Ir,Nr),f=c===B?"factory:claude_review":"factory:claude_implementation"}r={model:c,provider:"claude",rule:f,requestedModel:c}}else if(e.task&&Object.keys(e.task).length>0){let u=Or(e.task);r={...u,requestedModel:u.model}}else{let u=Q();r={model:u,provider:e.explicitProvider?.trim()||J(u),rule:"default:global",requestedModel:u}}r=nn(r,e.explicitProvider),r=on(r,{explicitProvider:e.explicitProvider,task:e.task,configuredProvider:e.configuredProvider});let s=!!e.configuredProvider?.trim()&&v(e.configuredProvider)!==w&&r.rule==="config:worker_provider",i=Pr({routing:r,task:e.task,explicitProvider:e.explicitProvider??(s?r.provider:void 0),explicitProviderIsOperatorOverride:!!e.explicitProviderIsOperatorOverride||s});if(!e.task||Object.keys(e.task).length===0||i.rule==="explicit:model_provider_alias"||i.rule==="explicit:model_provider_alias_overrode_provider"||i.rule==="explicit:cli"||i.rule===_e||i.rule===Cr||y(i.provider)&&(e.explicitProviderIsOperatorOverride||X(e.task))||i.provider===ye||i.provider===x||i.provider===N||i.provider==="codex")return i;let l=_r({task:e.task,explicitProvider:e.explicitProvider??i.provider,explicitModel:i.model,inventory:e.orchestrationInventory??void 0});return{provider:l.provider,model:l.provider==="codex"?l.model??i.model??I:i.model,rule:l.rule,requestedModel:i.requestedModel,orchestrationAudit:l.audit}}function an(e,r,t){return e||r||t||Q()||M}V();V();var w="cursor",ln=new Set(["claude","opus","anthropic"]),cn=[/\[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 ln.has(r)?!0:r.includes("claude")||r.includes("opus")}function X(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(un(n.model)))return!0;let o=U(e,"description");if(cn.some(i=>i.test(o)))return!0;let s=U(e,"title");return!!/\[use-claude-worker\]/i.test(s)}function un(e){let r=e.trim().toLowerCase();return/^claude[-_]/.test(r)||/^(?:opus|sonnet|haiku)\b/.test(r)?"claude":r}function dn(e,r){return{provider:w,model:D,rule:`policy:cursor_default${r}`,requestedModel:e}}var pn=["explicit:","executor_ref:","factory:","task:"];function mn(e){return pn.some(r=>e.startsWith(r))}function ke(e){if(!e)return!1;let r=e.workerProviderOverride;return typeof r=="string"&&r.trim()||m(U(e,"executorRef"))?.provider?!0:X(e)}function Pr(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||mn(r.rule)||ke(t)||!y(r.provider))return r;let o=r.rule&&r.rule!=="default:global"?`:${r.rule.replace(/:/g,"_")}`:"";return dn(r.model,o)}function fn(e){let r=e?.executorRef;return typeof r=="string"?r.trim():""}function wr(e){return e?.trim()||void 0}function gn(e){let r=fn(e.task),t=m(r),n=e.explicitProvider?.trim().toLowerCase(),o=wr(e.explicitModel??void 0),s=n||t?.provider,i=o||t?.model,l=n||o?"cli":t?.rule??"none";if(!s&&!i)return{ok:!0};!s&&i&&(/^claude[-_]/i.test(i)||/^(?:opus|sonnet|haiku)\b/i.test(i))&&(s="claude");let u=e.routing.provider,c=wr(e.routing.model),f={provider:u,model:c,rule:e.routing.rule};return s&&s!=="cursor"||r&&ee(r)||n&&n!=="cursor"?u==="cursor"?{ok:!1,error:`model_routing_mismatch: requested ${s??"non-cursor"}${i?` model=${i}`:""} (${l}) but routing resolved to cursor (${e.routing.rule})`,requested:{provider:s,model:i,source:l},resolved:f}:i&&c&&i!==c&&!y(u)?{ok:!1,error:`model_routing_mismatch: requested model=${i} (${l}) but routing resolved model=${c} (${e.routing.rule})`,requested:{provider:s,model:i,source:l},resolved:f}:{ok:!0,requested:{provider:s,model:i,source:l},resolved:f}:{ok:!0,resolved:f}}export{D as CURSOR_DEFAULT_MODEL,Er as GLOBAL_DEFAULT_MODEL,gn as assessDispatchModelGuard,ee as executorRefRequestsNonCursorWorker,Or as inferModelRoutingFromTask,m as parseExecutorRefRoutingIntent,Q as resolveGlobalDefaultModel,an as resolveModelFallback,sn as resolveWorkerLaunch};
|