@kynver-app/runtime 0.2.122 → 0.2.129

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1,65 @@
1
- var e=(r,n,t)=>()=>{if(t)throw t[0];try{return r&&(n=r(r=0)),n}catch(o){throw t=[o],o}};import{homedir as L}from"node:os";import H from"node:path";function Fe(r){return r==="~"?L():r.startsWith("~/")||r.startsWith("~\\")?H.join(L(),r.slice(2)):r}function u(r){return H.resolve(Fe(r))}var c=e(()=>{"use strict"});var j=e(()=>{"use strict"});function Y(r){return process.platform!=="win32"?r:{windowsHide:!0,...r}}var s=e(()=>{"use strict";j()});var $e,Ur,Le,Br,V=e(()=>{"use strict";$e=["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"],Ur=new Set($e),Le=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],Br=new Set(Le)});import{spawnSync as je}from"node:child_process";function _(r,n){try{let t=je("git",n,Y({cwd:r,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 g=e(()=>{"use strict";c();s();V()});var v=e(()=>{"use strict";g()});import{existsSync as C,readFileSync as z}from"node:fs";import{homedir as Ye}from"node:os";import i from"node:path";import{fileURLToPath as Ve}from"node:url";function ze(r){let n=i.join(r,"package.json");if(!C(n))return null;try{let t=JSON.parse(z(n,"utf8"));return typeof t.name=="string"?t.name.trim():null}catch{return null}}function J(r){return ze(r)==="kynver"}function G(r){let n=i.resolve(r);if(!C(n))return null;let t=_(n,["rev-parse","--show-toplevel"]);if(t.status!==0)return null;let o=t.stdout.trim();return o.length?i.resolve(o):null}function Je(r=import.meta.url){let n=i.dirname(Ve(r));for(let t=0;t<8;t+=1){let o=i.join(n,"package.json");if(C(o))try{if(JSON.parse(z(o,"utf8")).name==="@kynver-app/runtime")return n}catch{}let a=i.dirname(n);if(a===n)break;n=a}return null}function E(r,n,t,o,a){if(!t)return;let l=i.resolve(t);r.has(l)||(a?.requireMonorepo??!0)&&!J(l)||(r.add(l),n.push({repo:l,source:o}))}function qe(r){let n=r?.cwd??process.cwd(),t=new Set,o=[];E(t,o,G(n),"cwd_git",{requireMonorepo:!1});let a=Je(r?.runtimeModuleUrl??import.meta.url);a&&E(t,o,G(a),"runtime_checkout");let l=Ye();for(let p of Ge)E(t,o,u(i.join(l,p)),"well_known_path");let F=i.resolve(r?.cwd??process.cwd());return o.filter(p=>{if(p.source!=="runtime_checkout"||!J(p.repo))return!0;let $=i.resolve(p.repo);return F===$||F.startsWith(`${$}${i.sep}`)})}function A(r){return qe(r)[0]??null}var Ge,h=e(()=>{"use strict";g();c();v();Ge=["Kynver","repos/Kynver","repos/kynver-source-main","code/Kynver","projects/Kynver"]});var w=e(()=>{"use strict";s()});var d=e(()=>{"use strict"});var y=e(()=>{"use strict"});var q=e(()=>{"use strict"});var ct,dt,O=e(()=>{"use strict";ct=25*1024*1024*1024,dt=12*1024*1024*1024});var ht,yt,X=e(()=>{"use strict";O();ht=5*1024*1024*1024,yt=10*1024*1024*1024});var _t,vt,P=e(()=>{"use strict";X();O();_t=30*1024*1024*1024,vt=15*1024*1024*1024});var Q=e(()=>{"use strict";s()});import Xe from"node:path";var Kt,I=e(()=>{"use strict";c();Q();Kt=Xe.join(".openclaw","harness")});var k=e(()=>{"use strict";f();d();y();R();I()});var te=e(()=>{"use strict";f();I();k();s()});var K=e(()=>{"use strict";te();s()});var ne=e(()=>{"use strict";K();s()});var oe=e(()=>{"use strict"});var se=e(()=>{"use strict";oe();s()});var ie=e(()=>{"use strict"});var ae=e(()=>{"use strict";ie()});var x=e(()=>{"use strict"});var le=e(()=>{"use strict"});var ue=e(()=>{"use strict"});var ce=e(()=>{"use strict";ae();s();x();le();ue()});var de=e(()=>{"use strict";x()});var fe=e(()=>{"use strict"});var Bn,Mn,me=e(()=>{"use strict";g();Bn=10*6e4,Mn=60*6e4});var pe=e(()=>{"use strict"});var N=e(()=>{"use strict"});var ge=e(()=>{"use strict"});var he=e(()=>{"use strict";N();ge()});var ye=e(()=>{"use strict";se();ce();x();de();fe();me();pe();he();N();s()});var be=e(()=>{"use strict";ye();s()});var ur,cr,ke=e(()=>{"use strict";q();f();d();y();R();P();K();ne();be();s();ur=500*1024*1024,cr=4*1024*1024*1024});var R=e(()=>{"use strict";ke()});import{homedir as dr}from"node:os";import fr from"node:path";var Re,D=e(()=>{"use strict";Re=fr.join(dr(),".kynver",".env")});var xe=e(()=>{"use strict"});var Se=e(()=>{"use strict";xe()});var _e=e(()=>{"use strict"});var ve=e(()=>{"use strict";s()});var W=e(()=>{"use strict";Se();_e();ve()});var Ee=e(()=>{"use strict"});var Ce=e(()=>{"use strict";Ee()});var S=e(()=>{"use strict";D();c();f();W();Ce()});var Oe=e(()=>{"use strict";d();d()});var Pe=e(()=>{"use strict";D();W();S()});var U=e(()=>{"use strict"});var Te=e(()=>{"use strict";h();d();Oe();f();S();Pe();w();U();k()});var br,Js,Ke=e(()=>{"use strict";br=["claude","cursor","codex","gemini","gemini-api","openai-compatible"],Js=br.join("|")});var Ne=e(()=>{"use strict";c()});var De=e(()=>{"use strict";Ne()});var We=e(()=>{"use strict"});var Ue=e(()=>{"use strict";We()});import{existsSync as kr,mkdirSync as Si,readFileSync as Rr,writeFileSync as _i}from"node:fs";import{homedir as xr,totalmem as Ei}from"node:os";import B from"node:path";function Sr(r){return{...r,...r.harnessRoot?.trim()?{harnessRoot:u(r.harnessRoot.trim())}:{},...r.defaultRepo?.trim()?{defaultRepo:u(r.defaultRepo.trim())}:{}}}function m(){if(!kr(Be))return{};try{return Sr(JSON.parse(Rr(Be,"utf8")))}catch{return{}}}var Me,Be,$i,Li,Hi,f=e(()=>{"use strict";h();c();w();d();y();R();P();S();Te();Ke();k();De();U();Ue();Me=B.join(xr(),".kynver"),Be=B.join(Me,"config.json"),$i=B.join(Me,"credentials");Li=500*1024*1024,Hi=4*1024*1024*1024});f();h();c();v();import _r from"node:path";function vr(r){return _r.resolve(u(r.trim()))}function M(r,n,t){let o=r?.trim();return o?{repo:vr(o),source:n,persistedInConfig:t}:null}function Er(r){return r?{repo:r.repo,source:r.source,persistedInConfig:!1}:null}function Cr(r={}){let n=r.env??process.env,t=r.config??m(),o=M(t.defaultRepo,"config",!0);if(o)return o;let a=M(n.KYNVER_DEFAULT_REPO,"env_default_repo",!1);if(a)return a;let l=M(n.KYNVER_HARNESS_REPO,"env_harness_repo",!1);return l||Er(A({cwd:r.cwd,runtimeModuleUrl:r.runtimeModuleUrl}))}export{Cr as resolveDefaultRepo};
1
+ var e=(r,n,t)=>()=>{if(t)throw t[0];try{return r&&(n=r(r=0)),n}catch(o){throw t=[o],o}};import{homedir as j}from"node:os";import Y from"node:path";function He(r){return r==="~"?j():r.startsWith("~/")||r.startsWith("~\\")?Y.join(j(),r.slice(2)):r}function u(r){return Y.resolve(He(r))}var c=e(()=>{"use strict"});var V=e(()=>{"use strict"});function G(r){return process.platform!=="win32"?r:{windowsHide:!0,...r}}var s=e(()=>{"use strict";V()});var je,Lr,Ye,Hr,z=e(()=>{"use strict";je=["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"],Lr=new Set(je),Ye=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],Hr=new Set(Ye)});import{spawnSync as Ge}from"node:child_process";function v(r,n){try{let t=Ge("git",n,G({cwd:r,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 g=e(()=>{"use strict";c();s();z()});var C=e(()=>{"use strict";g()});import{existsSync as w,readFileSync as q}from"node:fs";import{homedir as ze}from"node:os";import i from"node:path";import{fileURLToPath as Je}from"node:url";function Xe(r){let n=i.join(r,"package.json");if(!w(n))return null;try{let t=JSON.parse(q(n,"utf8"));return typeof t.name=="string"?t.name.trim():null}catch{return null}}function X(r){return Xe(r)==="kynver"}function J(r){let n=i.resolve(r);if(!w(n))return null;let t=v(n,["rev-parse","--show-toplevel"]);if(t.status!==0)return null;let o=t.stdout.trim();return o.length?i.resolve(o):null}function Ze(r=import.meta.url){let n=i.dirname(Je(r));for(let t=0;t<8;t+=1){let o=i.join(n,"package.json");if(w(o))try{if(JSON.parse(q(o,"utf8")).name==="@kynver-app/runtime")return n}catch{}let a=i.dirname(n);if(a===n)break;n=a}return null}function A(r,n,t,o,a){if(!t)return;let l=i.resolve(t);r.has(l)||(a?.requireMonorepo??!0)&&!X(l)||(r.add(l),n.push({repo:l,source:o}))}function Qe(r){let n=r?.cwd??process.cwd(),t=new Set,o=[];A(t,o,J(n),"cwd_git",{requireMonorepo:!1});let a=Ze(r?.runtimeModuleUrl??import.meta.url);a&&A(t,o,J(a),"runtime_checkout");let l=ze();for(let m of qe)A(t,o,u(i.join(l,m)),"well_known_path");let L=i.resolve(r?.cwd??process.cwd());return o.filter(m=>{if(m.source!=="runtime_checkout"||!X(m.repo))return!0;let H=i.resolve(m.repo);return L===H||L.startsWith(`${H}${i.sep}`)})}function O(r){return Qe(r)[0]??null}var qe,h=e(()=>{"use strict";g();c();C();qe=["Kynver","repos/Kynver","repos/kynver-source-main","code/Kynver","projects/Kynver"]});var P=e(()=>{"use strict";s()});var d=e(()=>{"use strict"});var y=e(()=>{"use strict"});var Z=e(()=>{"use strict"});var gt,ht,I=e(()=>{"use strict";gt=25*1024*1024*1024,ht=12*1024*1024*1024});var xt,St,Q=e(()=>{"use strict";I();xt=5*1024*1024*1024,St=10*1024*1024*1024});var wt,Ot,T=e(()=>{"use strict";Q();I();wt=30*1024*1024*1024,Ot=15*1024*1024*1024});var ee=e(()=>{"use strict";s()});import er from"node:path";var Bt,K=e(()=>{"use strict";c();ee();Bt=er.join(".openclaw","harness")});var k=e(()=>{"use strict";f();d();y();R();K()});var ne=e(()=>{"use strict";f();K();k();s()});var S=e(()=>{"use strict";ne();s()});var se=e(()=>{"use strict";S();s()});var ie=e(()=>{"use strict"});var ae=e(()=>{"use strict";ie();s()});var le=e(()=>{"use strict"});var ue=e(()=>{"use strict";le()});var _=e(()=>{"use strict"});var ce=e(()=>{"use strict"});var de=e(()=>{"use strict"});var fe=e(()=>{"use strict";ue();s();_();ce();de()});var Dn,W=e(()=>{"use strict";Dn=String.raw`"use strict";
2
+ const cp = require("child_process"), fs = require("fs");
3
+ const argv = process.argv.slice(1);
4
+ const exitFile = argv[0], cmd = argv[1], args = argv.slice(2);
5
+ const startedMs = Date.now();
6
+ function cgroupOomKills() {
7
+ try {
8
+ const line = fs.readFileSync("/proc/self/cgroup", "utf8").split("\n").find((l) => l.startsWith("0::"));
9
+ if (!line) return null;
10
+ const file = "/sys/fs/cgroup" + line.slice(3).trim().replace(/\/$/, "") + "/memory.events";
11
+ const m = /(?:^|\n)oom_kill (\d+)/.exec(fs.readFileSync(file, "utf8"));
12
+ return m ? Number(m[1]) : null;
13
+ } catch { return null; }
14
+ }
15
+ function kernelLog() {
16
+ const override = process.env.KYNVER_EXIT_CAPTURE_KERNEL_LOG_FILE;
17
+ if (override) { try { return fs.readFileSync(override, "utf8"); } catch { return ""; } }
18
+ const run = (bin, a) => {
19
+ try {
20
+ const r = cp.spawnSync(bin, a, { encoding: "utf8", timeout: 3000, maxBuffer: 8 * 1024 * 1024, stdio: ["ignore", "pipe", "ignore"] });
21
+ return r.status === 0 ? String(r.stdout || "") : "";
22
+ } catch { return ""; }
23
+ };
24
+ return run("journalctl", ["-k", "-q", "--no-pager", "--since", "@" + Math.floor(startedMs / 1000)]) || run("dmesg", []);
25
+ }
26
+ const oomBefore = cgroupOomKills();
27
+ let child, finished = false;
28
+ function write(rec) {
29
+ try { fs.writeFileSync(exitFile, JSON.stringify(rec, null, 2) + "\n"); } catch {}
30
+ }
31
+ function finish(code, signal, spawnError) {
32
+ if (finished) return;
33
+ finished = true;
34
+ const rec = { exitCode: code, signal: signal || null, startedAt: new Date(startedMs).toISOString(), endedAt: new Date().toISOString(), childPid: child && child.pid };
35
+ if (spawnError) rec.spawnError = spawnError;
36
+ if (signal === "SIGKILL" || code === 137 || (code !== 0 && code !== null)) {
37
+ const oomAfter = cgroupOomKills();
38
+ if (oomBefore !== null && oomAfter !== null && oomAfter > oomBefore) {
39
+ rec.oomEvidence = { source: "cgroup", detail: "memory.events oom_kill " + oomBefore + " -> " + oomAfter };
40
+ } else if (signal === "SIGKILL" || code === 137) {
41
+ const pid = child && child.pid;
42
+ const hit = kernelLog().split("\n").find((l) => pid && new RegExp("(?:Killed process|oom-kill:.*pid=|Memory cgroup out of memory: Killed process) ?" + pid + "\\b").test(l));
43
+ if (hit) rec.oomEvidence = { source: "kernel_log", detail: hit.trim().slice(0, 300) };
44
+ }
45
+ }
46
+ write(rec);
47
+ if (signal) {
48
+ const n = (require("os").constants.signals || {})[signal];
49
+ process.exit(128 + (n || 9));
50
+ }
51
+ process.exit(code === null ? 1 : code);
52
+ }
53
+ try {
54
+ child = cp.spawn(cmd, args, { stdio: "inherit" });
55
+ } catch (e) {
56
+ process.stderr.write("failed to spawn worker process: " + (e && e.message) + "\n");
57
+ finish(127, null, String(e && e.message));
58
+ }
59
+ for (const s of ["SIGTERM", "SIGINT", "SIGHUP"]) process.on(s, () => { try { child.kill(s); } catch {} });
60
+ child.on("error", (e) => {
61
+ process.stderr.write("failed to spawn worker process: " + (e && e.message) + "\n");
62
+ if (!child.pid) finish(127, null, String(e && e.message));
63
+ });
64
+ child.on("exit", (code, signal) => finish(code, signal));
65
+ `});var pe=e(()=>{"use strict";S();s();W()});var me=e(()=>{"use strict";_()});var ge=e(()=>{"use strict"});var qn,Xn,he=e(()=>{"use strict";g();qn=10*6e4,Xn=60*6e4});var ye=e(()=>{"use strict"});var D=e(()=>{"use strict"});var be=e(()=>{"use strict"});var ke=e(()=>{"use strict";D();be()});var Re=e(()=>{"use strict";ae();fe();pe();W();_();me();ge();he();ye();ke();D();s()});var xe=e(()=>{"use strict";Re();s()});var mr,gr,Se=e(()=>{"use strict";Z();f();d();y();R();T();S();se();xe();s();mr=500*1024*1024,gr=4*1024*1024*1024});var R=e(()=>{"use strict";Se()});import{homedir as hr}from"node:os";import yr from"node:path";var _e,U=e(()=>{"use strict";_e=yr.join(hr(),".kynver",".env")});var Ee=e(()=>{"use strict"});var ve=e(()=>{"use strict";Ee()});var Ce=e(()=>{"use strict"});var Ae=e(()=>{"use strict";s()});var B=e(()=>{"use strict";ve();Ce();Ae()});var we=e(()=>{"use strict"});var Oe=e(()=>{"use strict";we()});var E=e(()=>{"use strict";U();c();f();B();Oe()});var Te=e(()=>{"use strict";d();d()});var Ne=e(()=>{"use strict";U();B();E()});var M=e(()=>{"use strict"});var We=e(()=>{"use strict";h();d();Te();f();E();Ne();P();M();k()});var _r,di,De=e(()=>{"use strict";_r=["claude","cursor","codex","gemini","gemini-api","openai-compatible"],di=_r.join("|")});var Ue=e(()=>{"use strict";c()});var Be=e(()=>{"use strict";Ue()});var Me=e(()=>{"use strict"});var Fe=e(()=>{"use strict";Me()});import{existsSync as Er,mkdirSync as Bi,readFileSync as vr,writeFileSync as Mi}from"node:fs";import{homedir as Cr,totalmem as $i}from"node:os";import F from"node:path";function Ar(r){return{...r,...r.harnessRoot?.trim()?{harnessRoot:u(r.harnessRoot.trim())}:{},...r.defaultRepo?.trim()?{defaultRepo:u(r.defaultRepo.trim())}:{}}}function p(){if(!Er($e))return{};try{return Ar(JSON.parse(vr($e,"utf8")))}catch{return{}}}var Le,$e,na,oa,sa,f=e(()=>{"use strict";h();c();P();d();y();R();T();E();We();De();k();Be();M();Fe();Le=F.join(Cr(),".kynver"),$e=F.join(Le,"config.json"),na=F.join(Le,"credentials");oa=500*1024*1024,sa=4*1024*1024*1024});f();h();c();C();import wr from"node:path";function Or(r){return wr.resolve(u(r.trim()))}function $(r,n,t){let o=r?.trim();return o?{repo:Or(o),source:n,persistedInConfig:t}:null}function Pr(r){return r?{repo:r.repo,source:r.source,persistedInConfig:!1}:null}function Ir(r={}){let n=r.env??process.env,t=r.config??p(),o=$(t.defaultRepo,"config",!0);if(o)return o;let a=$(n.KYNVER_DEFAULT_REPO,"env_default_repo",!1);if(a)return a;let l=$(n.KYNVER_HARNESS_REPO,"env_harness_repo",!1);return l||Pr(O({cwd:r.cwd,runtimeModuleUrl:r.runtimeModuleUrl}))}export{Ir as resolveDefaultRepo};
@@ -1,5 +1,69 @@
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 Ue}from"node:os";import Le from"node:path";function ut(e){return e==="~"?Ue():e.startsWith("~/")||e.startsWith("~\\")?Le.join(Ue(),e.slice(2)):e}function _(e){return Le.resolve(ut(e))}var x=a(()=>{"use strict"});function k(e=process.platform){return e!=="win32"}var Fe=a(()=>{"use strict"});var d=a(()=>{"use strict";Fe()});var ct,ko,dt,Ro,pe=a(()=>{"use strict";ct=["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"],ko=new Set(ct),dt=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],Ro=new Set(dt)});var z=a(()=>{"use strict";x();d();pe()});var $e=a(()=>{"use strict";z()});var me=a(()=>{"use strict";z();x();$e()});var fe=a(()=>{"use strict";d()});var b=a(()=>{"use strict"});var X=a(()=>{"use strict"});var He=a(()=>{"use strict"});var Uo,Lo,ge=a(()=>{"use strict";Uo=25*1024*1024*1024,Lo=12*1024*1024*1024});var Yo,Vo,je=a(()=>{"use strict";ge();Yo=5*1024*1024*1024,Vo=10*1024*1024*1024});var Qo,Zo,he=a(()=>{"use strict";je();ge();Qo=30*1024*1024*1024,Zo=15*1024*1024*1024});var Ve=a(()=>{"use strict";d()});import gt from"node:path";var li,ye=a(()=>{"use strict";x();Ve();li=gt.join(".openclaw","harness")});var Z=a(()=>{"use strict";v();b();X();ee();ye()});var Je=a(()=>{"use strict";v();ye();Z();d()});var Re=a(()=>{"use strict";Je();d()});var ze=a(()=>{"use strict";Re();d()});var Xe=a(()=>{"use strict"});var Qe=a(()=>{"use strict";Xe();d()});var Ze=a(()=>{"use strict"});var er=a(()=>{"use strict";Ze()});var re=a(()=>{"use strict"});var rr=a(()=>{"use strict"});var tr=a(()=>{"use strict"});var nr=a(()=>{"use strict";er();d();re();rr();tr()});var or=a(()=>{"use strict";re()});var ir=a(()=>{"use strict"});var ps,ms,sr=a(()=>{"use strict";z();ps=10*6e4,ms=60*6e4});var ar=a(()=>{"use strict"});var _e=a(()=>{"use strict"});var lr=a(()=>{"use strict"});var ur=a(()=>{"use strict";_e();lr()});var cr=a(()=>{"use strict";Qe();nr();re();or();ir();sr();ar();ur();_e();d()});var dr=a(()=>{"use strict";cr();d()});var Ot,At,pr=a(()=>{"use strict";He();v();b();X();ee();he();Re();ze();dr();d();Ot=500*1024*1024,At=4*1024*1024*1024});var ee=a(()=>{"use strict";pr()});import{homedir as wt}from"node:os";import Pt from"node:path";var mr,xe=a(()=>{"use strict";mr=Pt.join(wt(),".kynver",".env")});var fr=a(()=>{"use strict"});var gr=a(()=>{"use strict";fr()});var hr=a(()=>{"use strict"});var yr=a(()=>{"use strict";d()});var be=a(()=>{"use strict";gr();hr();yr()});var kr=a(()=>{"use strict"});var Rr=a(()=>{"use strict";kr()});var te=a(()=>{"use strict";xe();x();v();be();Rr()});var _r=a(()=>{"use strict";b();b()});var xr=a(()=>{"use strict";xe();be();te()});var ve=a(()=>{"use strict"});var br=a(()=>{"use strict";me();b();_r();v();te();xr();fe();ve();Z()});function S(e){let r=e.trim().toLowerCase();return Lt[r]??r}var vr,Ut,Lt,ne=a(()=>{"use strict";vr=["claude","cursor","codex","gemini","gemini-api","openai-compatible"],Ut=vr.join("|"),Lt={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"}});var Sr=a(()=>{"use strict";x()});var Er=a(()=>{"use strict";Sr()});var Cr=a(()=>{"use strict"});var Or=a(()=>{"use strict";Cr()});import{existsSync as $t,mkdirSync as ql,readFileSync as Ht,writeFileSync as Jl}from"node:fs";import{homedir as jt,totalmem as Xl}from"node:os";import Se from"node:path";function Yt(e){return{...e,...e.harnessRoot?.trim()?{harnessRoot:_(e.harnessRoot.trim())}:{},...e.defaultRepo?.trim()?{defaultRepo:_(e.defaultRepo.trim())}:{}}}function T(){if(!$t(Ar))return{};try{return Yt(JSON.parse(Ht(Ar,"utf8")))}catch{return{}}}var wr,Ar,mu,fu,gu,v=a(()=>{"use strict";me();x();fe();b();X();ee();he();te();br();ne();Z();Er();ve();Or();wr=Se.join(jt(),".kynver"),Ar=Se.join(wr,"config.json"),mu=Se.join(wr,"credentials");fu=500*1024*1024,gu=4*1024*1024*1024});var ot=/^claude[-_]/i,it=/^(?:opus|sonnet|haiku)\b/i;function Me(e){let r=e.trim();return ot.test(r)||it.test(r)}function De(e){let r=e.trim().toLowerCase();return r.startsWith("gpt-")||r.startsWith("gpt5")||r.includes("codex")}function ce(e){let r=e.trim().toLowerCase();return r.includes("composer")||r.includes("cursor")}function Be(e){return e.trim().toLowerCase().startsWith("gemini-")}function st(e){return De(e)?"codex":Me(e)?"claude":Be(e)?"gemini":(ce(e),"cursor")}function at(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 lt(e){if(!e.startsWith("harness-lane:"))return null;let r=e.split(":").map(o=>o.trim()).filter(Boolean);if(r.length<2)return null;let t=r[1],n=r.slice(2).join(":");return n?Me(n)||De(n)||ce(n)||Be(n)?{lane:t,model:n,provider:st(n),rule:"executor_ref:harness_lane_model"}:{lane:t,rule:"executor_ref:harness_lane"}:{lane:t,rule:"executor_ref:harness_lane"}}function f(e){let r=typeof e=="string"?e.trim():"";return r?at(r)??lt(r):null}function de(e){let r=f(e);return r?!!(r.provider&&r.provider!=="cursor"||r.model&&!ce(r.model)):!1}v();var Pr={codex:{id:"codex",displayName:"Codex (BYO OAuth / Hermes openai-codex)",costTier:"low",authSources:["oauth_local","api_key_env","subscription_hermes"],supportsLowRiskOrchestration:!0,supportsPrivilegedPlatformActions:!1,workerMcpTools:"supported"},cursor:{id:"cursor",displayName:"Cursor / Composer",costTier:"medium",authSources:["oauth_local","api_key_env"],supportsLowRiskOrchestration:!0,supportsPrivilegedPlatformActions:!0,workerMcpTools:"supported"},claude:{id:"claude",displayName:"Claude Code",costTier:"high",authSources:["oauth_local"],supportsLowRiskOrchestration:!0,supportsPrivilegedPlatformActions:!0,workerMcpTools:"supported"}};function N(e){return Pr[e]}function Ir(){return Object.values(Pr)}import{existsSync as tn}from"node:fs";import{homedir as nn}from"node:os";import $ from"node:path";import{createHash as Wr}from"node:crypto";import{statSync as rn}from"node:fs";import{spawnSync as Mr}from"node:child_process";import{existsSync as Kr,readFileSync as Vt}from"node:fs";import E from"node:path";var F=class extends Error{constructor(t){super(`${t} is a batch file that is not a Node CLI shim; it cannot be spawned without a shell. Point the matching KYNVER_*_BIN setting at the real .exe or the CLI's JS entry, or run the daemon inside WSL.`);this.shimPath=t;this.name="UnresolvableWindowsShimError"}shimPath},Gt=".COM;.EXE;.BAT;.CMD";function qt(e){return e.includes("/")||e.includes("\\")}function Jt(e){return(e.PATHEXT||Gt).split(";").map(r=>r.trim().toLowerCase()).filter(r=>r.startsWith("."))}function zt(e){let r=Object.keys(e).find(t=>t.toUpperCase()==="PATH");return r?e[r]??"":""}function Xt(e,r={}){let t=r.env??process.env,n=r.exists??Kr,o=Jt(t),s=E.win32.extname(e)!=="",i=l=>s?[l]:o.map(u=>`${l}${u}`);if(qt(e)||E.win32.isAbsolute(e))return i(e).find(l=>n(l))??null;for(let l of zt(t).split(";").map(u=>u.trim()).filter(Boolean)){let u=i(E.win32.join(l,e)).find(c=>n(c));if(u)return u}return null}var Tr=/%~?dp0%?\\?([^"%\r\n]+?\.(?:c|m)?js)\b/i,Qt=/^\s*SET\s+"?([A-Za-z_]\w*)=([^"\r\n]*)"?\s*$/i;function Nr(e){return e.replace(/^[\\/]+/,"")}function Zt(e){let r=e.split(/\r?\n/),t=new Map;for(let s of r){let i=Qt.exec(s);i&&t.set(i[1].toUpperCase(),i[2])}let n=r.filter(s=>s.includes("%*")).pop();if(!n)return null;let o=Tr.exec(n);if(o)return Nr(o[1]);for(let s of n.matchAll(/%([A-Za-z_]\w*)%/g)){let i=t.get(s[1].toUpperCase()),l=i?Tr.exec(i):null;if(l)return Nr(l[1])}return null}function en(e,r={}){if((r.platform??process.platform)!=="win32")return{executable:e,prefixArgs:[],kind:"passthrough"};let n=Xt(e,r);if(!n)return{executable:e,prefixArgs:[],kind:"passthrough"};let o=E.win32.extname(n).toLowerCase();if(o!==".cmd"&&o!==".bat")return{executable:n,prefixArgs:[],kind:"exe"};let s=r.readText??(ue=>Vt(ue,"utf8")),i=r.exists??Kr,l;try{l=s(n)}catch{throw new F(n)}let u=Zt(l);if(!u)throw new F(n);let c=E.win32.dirname(n),p=E.win32.join(c,u);if(!i(p))throw new F(n);let L=E.win32.join(c,"node.exe");return{executable:i(L)?L:r.nodeExecutable??process.execPath,prefixArgs:[p],kind:"node-shim"}}function C(e,r,t={}){let n=en(e,t);return[n.executable,[...n.prefixArgs,...r]]}function y(e){try{let r=rn(e),t=`${e}|${r.size}|${r.mtimeMs}`;return Wr("sha256").update(t).digest("hex").slice(0,16)}catch{return}}function K(e){return Wr("sha256").update(`env:${e}`).digest("hex").slice(0,16)}function g(e,r){for(let t of r){let n=process.env[t]?.trim();if(n)return n}return e}function h(e,r,t={}){let n=t.timeoutMs??8e3;try{let[o,s]=C(e,r),i=Mr(o,s,{windowsHide:!0,encoding:"utf8",timeout:n,env:{...process.env,...t.env,CI:"1",NO_COLOR:"1"}});if(i.status===0)return{ok:!0,note:t.okNote??`${e} ${r.join(" ")}: ok`};let l=(i.stderr||i.stdout||"").trim(),u=t.failPrefix??`${e} ${r.join(" ")} failed`;return{ok:!1,note:l?`${u}: ${l.slice(0,200)}`:u}}catch(o){return{ok:!1,note:o instanceof Error?o.message:`${e} probe failed`}}}function oe(e,r,t={}){let n=t.timeoutMs??8e3;try{let[o,s]=C(e,r);return Mr(o,s,{windowsHide:!0,stdio:"ignore",timeout:n,env:{...process.env,CI:"1",NO_COLOR:"1"}}).status===0?{ok:!0,note:t.okNote??`${e} authenticated`}:{ok:!1,note:t.failNote??`${e} not authenticated`}}catch(o){return{ok:!1,note:o instanceof Error?o.message:`${e} auth probe failed`}}}var on="codex";function sn(){let e=nn();return[process.env.CODEX_HOME?.trim()?$.join($.resolve(process.env.CODEX_HOME.trim()),"auth.json"):null,$.join(e,".codex","auth.json"),$.join(e,".config","codex","auth.json")].filter(t=>!!t)}function an(e){return $.dirname(e)}function ln(e){let r,t;for(let n of sn()){if(!tn(n))continue;r??=n;let o=h(e,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status",env:{CODEX_HOME:an(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(on,["KYNVER_CODEX_BIN","CODEX_BIN"]);if(process.env.CODEX_API_KEY?.trim())return{providerId:"codex",ready:!0,authSource:"api_key_env",sessionFingerprint:K("CODEX_API_KEY"),checkedAt:e,note:"CODEX_API_KEY present (env binding \u2014 cloud credits path, no token stored in Kynver)"};let{authPath:t,login:n}=ln(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 un}from"node:fs";import{homedir as cn}from"node:os";import Ee from"node:path";function dn(){let e=process.env.HERMES_HOME?.trim(),r=e?Ee.resolve(e):Ee.join(cn(),".hermes");return Ee.join(r,"auth.json")}function ie(e=new Date().toISOString()){let r=g("hermes",["KYNVER_HERMES_BIN","HERMES_BIN"]),t=h(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=dn(),o=un(n),s=oe(r,["auth","status","openai-codex"],{okNote:"hermes openai-codex: logged in",failNote:"hermes openai-codex: not logged in"}),i=t.ok&&s.ok;return{path:"hermes_openai_codex",ready:i,authSource:i?"subscription_hermes":"none",sessionFingerprint:o?y(n):void 0,checkedAt:e,note:i?"Hermes openai-codex subscription session bound (ChatGPT Codex OAuth)":[t.note,s.note,o?void 0:"no ~/.hermes/auth.json"].filter(Boolean).join("; ")}}function H(e=new Date().toISOString()){let r=Dr(e);if(r.ready)return{...r,path:"codex_cli"};let t=ie(e);return t.ready?{providerId:"codex",ready:!0,authSource:t.authSource,sessionFingerprint:t.sessionFingerprint,checkedAt:t.checkedAt,note:t.note,path:"hermes_openai_codex",hermesOpenAiCodex:t}:{providerId:"codex",ready:!1,authSource:"none",checkedAt:e,path:"none",hermesOpenAiCodex:t,note:[r.note,t.note].filter(Boolean).join("; ")||"Codex CLI and Hermes openai-codex unavailable"}}var Br=["low","medium","high"],Ur={oauth_local:0,subscription_hermes:0,runner_token:1,api_key_env:2,none:3};function Lr(e,r){let t=N(e);return r==="privileged"?t.supportsPrivilegedPlatformActions:r==="low"?t.supportsLowRiskOrchestration:!0}function pn(e,r){let t=N(e.providerId),n=N(r.providerId),o=Br.indexOf(t.costTier)-Br.indexOf(n.costTier);if(o!==0)return o;let s=Ur[e.binding.authSource]-Ur[r.binding.authSource];return s!==0?s:e.providerId.localeCompare(r.providerId)}function Ce(e){let r=Ir().map(l=>({providerId:l.id,binding:e.inventory.bindings[l.id]})).filter(l=>l.binding.ready&&Lr(l.providerId,e.riskClass));if(r.length===0)return null;let n=[...r].sort(pn)[0],o="codex";if(n.providerId===o)return{providerId:n.providerId,binding:n.binding};let s=e.inventory.bindings[o],i;return Lr(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 mn}from"node:fs";import{homedir as fn}from"node:os";import gn from"node:path";var hn="claude";function yn(){let e=fn();return[gn.join(e,".claude",".credentials.json")]}function Fr(e=new Date().toISOString()){let r=g(hn,["KYNVER_CLAUDE_BIN","CLAUDE_BIN"]);if(process.env.ANTHROPIC_API_KEY?.trim())return{providerId:"claude",ready:!1,authSource:"api_key_env",sessionFingerprint:K("ANTHROPIC_API_KEY"),checkedAt:e,note:"ANTHROPIC_API_KEY present but scrubbed from worker env (deployment secret) \u2014 use `claude` CLI login (OAuth) for harness workers"};let t=h(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=yn().find(i=>mn(i)),o=oe(r,["auth","status"],{okNote:"claude auth status: authenticated",failNote:"claude auth status: not authenticated"}),s=t.ok&&(o.ok||!!n);return{providerId:"claude",ready:s,authSource:"oauth_local",sessionFingerprint:n?y(n):void 0,checkedAt:e,note:s?"Local Claude Code OAuth session bound on runner":[t.note,o.note,n?void 0:"no ~/.claude/.credentials.json"].filter(Boolean).join("; ")}}import{existsSync as Cn}from"node:fs";import{homedir as En}from"node:os";import M from"node:path";import{closeSync as ec,existsSync as bn,mkdirSync as rc,openSync as tc,statSync as nc,unlinkSync as oc}from"node:fs";d();import W from"node:path";pe();import{existsSync as j,readdirSync as kn}from"node:fs";import O from"node:path";var Rn=/^\d{4}\.\d{1,2}\.\d{1,2}-[a-f0-9]+$/i;function _n(e){let t=e.split("-")[0].split(".");if(t.length!==3)return null;let[n,o,s]=t;return!n||!o||!s?null:+`${n}${o.padStart(2,"0")}${s.padStart(2,"0")}`}function xn(e){let r=O.join(e,"versions");if(!j(r))return null;let t=null,n=-1;for(let o of kn(r,{withFileTypes:!0})){if(!o.isDirectory()||!Rn.test(o.name))continue;let s=_n(o.name);s==null||s<=n||(n=s,t=O.join(r,o.name))}return t}function Oe(e){let r=e?.trim()||O.join(process.env.LOCALAPPDATA||"","cursor-agent"),t=O.join(r,"node.exe"),n=O.join(r,"index.js");if(j(t)&&j(n))return{nodeExe:t,indexJs:n,versionDir:r};let o=xn(r);if(!o)return null;let s=O.join(o,"node.exe"),i=O.join(o,"index.js");return!j(s)||!j(i)?null:{nodeExe:s,indexJs:i,versionDir:o}}function vn(e,r,t){return{executable:e,prefixArgs:[r],shell:!1,detached:k(),bundledVersionDir:t}}function $r(e){if(process.platform==="win32"){let r=/\.(cmd|bat)$/i.test(e),t=/node\.exe$/i.test(e)&&bn(W.join(W.dirname(e),"index.js"));if(r||t||e==="agent"){let o=r?Oe(W.dirname(e)):t?{nodeExe:e,indexJs:W.join(W.dirname(e),"index.js"),versionDir:W.dirname(e)}:Oe();if(o)return vn(o.nodeExe,o.indexJs,o.versionDir);throw new Error("Cursor Agent on Windows has no headless bundled node.exe under %LOCALAPPDATA%\\cursor-agent\\versions\\\u2026. Run `agent login` / update Cursor Agent CLI, use `--provider claude`, or set KYNVER_CURSOR_AGENT_ROOT to the cursor-agent folder.")}}return{executable:e,prefixArgs:[],shell:!1,detached:k()}}import{spawnSync as Sn}from"node:child_process";function Ae(e,r=process.env){try{let t;try{t=$r(e)}catch{t={executable:e,prefixArgs:[]}}let n=Sn(t.executable,[...t.prefixArgs,"status","--format","json"],{encoding:"utf8",windowsHide:!0,timeout:8e3,env:{...r,CI:"1",NO_COLOR:"1"}});if(n.status!==0)return{ok:!1,note:"agent status: not authenticated"};let o=(n.stdout||"").trim();if(!o)return{ok:!1,note:"agent status: empty response"};let s;try{s=JSON.parse(o)}catch{return{ok:!1,note:"agent status: unparseable response"}}return typeof s=="object"&&s!==null&&s.isAuthenticated===!0?{ok:!0,note:"agent status: authenticated"}:{ok:!1,note:"agent status: not authenticated"}}catch(t){return{ok:!1,note:t instanceof Error?t.message:"agent status probe failed"}}}function we(e=process.env){let r=[],t=e.KYNVER_CURSOR_AUTH_HOME?.trim();t&&(r.push(M.join(t,".config","cursor","auth.json")),r.push(M.join(t,".cursor-agent","auth.json")));let n=En();if(r.push(M.join(n,".config","cursor","auth.json")),r.push(M.join(n,".cursor-agent","auth.json")),process.platform==="win32"){let o=e.LOCALAPPDATA?.trim(),s=e.APPDATA?.trim();o&&r.push(M.join(o,"cursor-agent","auth.json")),s&&r.push(M.join(s,"cursor","auth.json"))}return r}var On="agent";function Hr(e=new Date().toISOString()){let r=g(On,["KYNVER_CURSOR_AGENT_BIN","CURSOR_AGENT_BIN"]);if(process.env.CURSOR_API_KEY?.trim())return{providerId:"cursor",ready:!1,authSource:"api_key_env",sessionFingerprint:K("CURSOR_API_KEY"),checkedAt:e,note:"CURSOR_API_KEY present but scrubbed from worker env (deployment secret) \u2014 use `agent login` (OAuth) for harness workers"};let t=h(r,["-v"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=we().find(l=>Cn(l)),o=Ae(r),s=!!n||o.ok,i=t.ok&&s;return{providerId:"cursor",ready:i,authSource:"oauth_local",sessionFingerprint:n?y(n):void 0,checkedAt:e,note:i?"Local Cursor/Composer OAuth session bound on runner":[t.note,s?void 0:o.note??"no ~/.config/cursor/auth.json or `agent login` session"].filter(Boolean).join("; ")}}import{existsSync as An,readFileSync as wn}from"node:fs";import{homedir as Pn}from"node:os";import Pe from"node:path";var In=["OPENAI_API_KEY","ANTHROPIC_API_KEY","KYNVER_API_KEY","KYNVER_BASE_URL"];function Tn(){let e=process.env.HERMES_HOME?.trim(),r=e?Pe.resolve(e):Pe.join(Pn(),".hermes");return Pe.join(r,".env")}function Nn(e){try{let r=wn(e,"utf8"),t=[];for(let n of In)new RegExp(`^${n}=`,"m").test(r)&&t.push(n);return t}catch{return[]}}function jr(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=Tn(),o=An(n),s=o?Nn(n):[],l=s.some(c=>c.endsWith("_API_KEY"))?"api_key_env":o?"oauth_local":"none",u=t.ok&&o;return{adapterId:"hermes",cliAvailable:t.ok,profileBound:o,authSource:l,sessionFingerprint:o?y(n):void 0,checkedAt:e,note:u?`Hermes profile bound (${s.length?`keys: ${s.join(", ")}`:"no API keys detected"})`:[t.note,o?void 0:"no ~/.hermes/.env"].filter(Boolean).join("; ")}}function Yr(e={}){let r=e.nowIso?.()??new Date().toISOString(),t=H(r),n={codex:t,cursor:Hr(r),claude:Fr(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:jr(r),hermesOpenAiCodex:ie(r),codexAdapterPath:t.path,readyCount:o}}var Kn=[/\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],Wn=[/\borchestration\b/i,/\bplan[- ]?progress\b/i,/\bstatus\s+sync\b/i,/\bheartbeat\b/i,/\bboard[- ]?drain\b/i,/\bmaintenance\b/i,/\[orchestration:\s*low-risk\]/i];function Ie(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function Mn(e){let r=Ie(e,"executorRef").toLowerCase(),t=Ie(e,"title").toLowerCase(),n=Ie(e,"description").toLowerCase(),o=`${r}
1
+ var a=(e,r,t)=>()=>{if(t)throw t[0];try{return e&&(r=e(e=0)),r}catch(n){throw t=[n],n}};import{homedir as $e}from"node:os";import He from"node:path";function mt(e){return e==="~"?$e():e.startsWith("~/")||e.startsWith("~\\")?He.join($e(),e.slice(2)):e}function x(e){return He.resolve(mt(e))}var b=a(()=>{"use strict"});function k(e=process.platform){return e!=="win32"}var je=a(()=>{"use strict"});var d=a(()=>{"use strict";je()});var ft,Eo,gt,So,he=a(()=>{"use strict";ft=["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"],Eo=new Set(ft),gt=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],So=new Set(gt)});var Z=a(()=>{"use strict";b();d();he()});var Ye=a(()=>{"use strict";Z()});var ye=a(()=>{"use strict";Z();b();Ye()});var ke=a(()=>{"use strict";d()});var v=a(()=>{"use strict"});var Q=a(()=>{"use strict"});var Ve=a(()=>{"use strict"});var Yo,Vo,Re=a(()=>{"use strict";Yo=25*1024*1024*1024,Vo=12*1024*1024*1024});var Xo,Zo,Ge=a(()=>{"use strict";Re();Xo=5*1024*1024*1024,Zo=10*1024*1024*1024});var oi,ii,_e=a(()=>{"use strict";Ge();Re();oi=30*1024*1024*1024,ii=15*1024*1024*1024});var qe=a(()=>{"use strict";d()});import Rt from"node:path";var fi,be=a(()=>{"use strict";b();qe();fi=Rt.join(".openclaw","harness")});var re=a(()=>{"use strict";E();v();Q();te();be()});var Xe=a(()=>{"use strict";E();be();re();d()});var oe=a(()=>{"use strict";Xe();d()});var Qe=a(()=>{"use strict";oe();d()});var er=a(()=>{"use strict"});var rr=a(()=>{"use strict";er();d()});var tr=a(()=>{"use strict"});var nr=a(()=>{"use strict";tr()});var ie=a(()=>{"use strict"});var or=a(()=>{"use strict"});var ir=a(()=>{"use strict"});var sr=a(()=>{"use strict";nr();d();ie();or();ir()});var ds,R=a(()=>{"use strict";ds=String.raw`"use strict";
2
+ const cp = require("child_process"), fs = require("fs");
3
+ const argv = process.argv.slice(1);
4
+ const exitFile = argv[0], cmd = argv[1], args = argv.slice(2);
5
+ const startedMs = Date.now();
6
+ function cgroupOomKills() {
7
+ try {
8
+ const line = fs.readFileSync("/proc/self/cgroup", "utf8").split("\n").find((l) => l.startsWith("0::"));
9
+ if (!line) return null;
10
+ const file = "/sys/fs/cgroup" + line.slice(3).trim().replace(/\/$/, "") + "/memory.events";
11
+ const m = /(?:^|\n)oom_kill (\d+)/.exec(fs.readFileSync(file, "utf8"));
12
+ return m ? Number(m[1]) : null;
13
+ } catch { return null; }
14
+ }
15
+ function kernelLog() {
16
+ const override = process.env.KYNVER_EXIT_CAPTURE_KERNEL_LOG_FILE;
17
+ if (override) { try { return fs.readFileSync(override, "utf8"); } catch { return ""; } }
18
+ const run = (bin, a) => {
19
+ try {
20
+ const r = cp.spawnSync(bin, a, { encoding: "utf8", timeout: 3000, maxBuffer: 8 * 1024 * 1024, stdio: ["ignore", "pipe", "ignore"] });
21
+ return r.status === 0 ? String(r.stdout || "") : "";
22
+ } catch { return ""; }
23
+ };
24
+ return run("journalctl", ["-k", "-q", "--no-pager", "--since", "@" + Math.floor(startedMs / 1000)]) || run("dmesg", []);
25
+ }
26
+ const oomBefore = cgroupOomKills();
27
+ let child, finished = false;
28
+ function write(rec) {
29
+ try { fs.writeFileSync(exitFile, JSON.stringify(rec, null, 2) + "\n"); } catch {}
30
+ }
31
+ function finish(code, signal, spawnError) {
32
+ if (finished) return;
33
+ finished = true;
34
+ const rec = { exitCode: code, signal: signal || null, startedAt: new Date(startedMs).toISOString(), endedAt: new Date().toISOString(), childPid: child && child.pid };
35
+ if (spawnError) rec.spawnError = spawnError;
36
+ if (signal === "SIGKILL" || code === 137 || (code !== 0 && code !== null)) {
37
+ const oomAfter = cgroupOomKills();
38
+ if (oomBefore !== null && oomAfter !== null && oomAfter > oomBefore) {
39
+ rec.oomEvidence = { source: "cgroup", detail: "memory.events oom_kill " + oomBefore + " -> " + oomAfter };
40
+ } else if (signal === "SIGKILL" || code === 137) {
41
+ const pid = child && child.pid;
42
+ const hit = kernelLog().split("\n").find((l) => pid && new RegExp("(?:Killed process|oom-kill:.*pid=|Memory cgroup out of memory: Killed process) ?" + pid + "\\b").test(l));
43
+ if (hit) rec.oomEvidence = { source: "kernel_log", detail: hit.trim().slice(0, 300) };
44
+ }
45
+ }
46
+ write(rec);
47
+ if (signal) {
48
+ const n = (require("os").constants.signals || {})[signal];
49
+ process.exit(128 + (n || 9));
50
+ }
51
+ process.exit(code === null ? 1 : code);
52
+ }
53
+ try {
54
+ child = cp.spawn(cmd, args, { stdio: "inherit" });
55
+ } catch (e) {
56
+ process.stderr.write("failed to spawn worker process: " + (e && e.message) + "\n");
57
+ finish(127, null, String(e && e.message));
58
+ }
59
+ for (const s of ["SIGTERM", "SIGINT", "SIGHUP"]) process.on(s, () => { try { child.kill(s); } catch {} });
60
+ child.on("error", (e) => {
61
+ process.stderr.write("failed to spawn worker process: " + (e && e.message) + "\n");
62
+ if (!child.pid) finish(127, null, String(e && e.message));
63
+ });
64
+ child.on("exit", (code, signal) => finish(code, signal));
65
+ `});var ar=a(()=>{"use strict";oe();d();R()});var lr=a(()=>{"use strict";ie()});var cr=a(()=>{"use strict"});var Ss,Cs,ur=a(()=>{"use strict";Z();Ss=10*6e4,Cs=60*6e4});var dr=a(()=>{"use strict"});var ve=a(()=>{"use strict"});var pr=a(()=>{"use strict"});var mr=a(()=>{"use strict";ve();pr()});var fr=a(()=>{"use strict";rr();sr();ar();R();ie();lr();cr();ur();dr();mr();ve();d()});var gr=a(()=>{"use strict";fr();d()});var Nt,Kt,hr=a(()=>{"use strict";Ve();E();v();Q();te();_e();oe();Qe();gr();d();Nt=500*1024*1024,Kt=4*1024*1024*1024});var te=a(()=>{"use strict";hr()});import{homedir as Wt}from"node:os";import Mt from"node:path";var yr,Ee=a(()=>{"use strict";yr=Mt.join(Wt(),".kynver",".env")});var kr=a(()=>{"use strict"});var Rr=a(()=>{"use strict";kr()});var _r=a(()=>{"use strict"});var xr=a(()=>{"use strict";d()});var Se=a(()=>{"use strict";Rr();_r();xr()});var br=a(()=>{"use strict"});var vr=a(()=>{"use strict";br()});var se=a(()=>{"use strict";Ee();b();E();Se();vr()});var Er=a(()=>{"use strict";v();v()});var Sr=a(()=>{"use strict";Ee();Se();se()});var Ce=a(()=>{"use strict"});var Cr=a(()=>{"use strict";ye();v();Er();E();se();Sr();ke();Ce();re()});function S(e){let r=e.trim().toLowerCase();return Vt[r]??r}var Or,Yt,Vt,ae=a(()=>{"use strict";Or=["claude","cursor","codex","gemini","gemini-api","openai-compatible"],Yt=Or.join("|"),Vt={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"}});var Ar=a(()=>{"use strict";b()});var wr=a(()=>{"use strict";Ar()});var Pr=a(()=>{"use strict"});var Ir=a(()=>{"use strict";Pr()});import{existsSync as qt,mkdirSync as dc,readFileSync as Jt,writeFileSync as pc}from"node:fs";import{homedir as zt,totalmem as fc}from"node:os";import Oe from"node:path";function Xt(e){return{...e,...e.harnessRoot?.trim()?{harnessRoot:x(e.harnessRoot.trim())}:{},...e.defaultRepo?.trim()?{defaultRepo:x(e.defaultRepo.trim())}:{}}}function N(){if(!qt(Tr))return{};try{return Xt(JSON.parse(Jt(Tr,"utf8")))}catch{return{}}}var Nr,Tr,Pc,Ic,Tc,E=a(()=>{"use strict";ye();b();ke();v();Q();te();_e();se();Cr();ae();re();wr();Ce();Ir();Nr=Oe.join(zt(),".kynver"),Tr=Oe.join(Nr,"config.json"),Pc=Oe.join(Nr,"credentials");Ic=500*1024*1024,Tc=4*1024*1024*1024});var lt=/^claude[-_]/i,ct=/^(?:opus|sonnet|haiku)\b/i;function Ue(e){let r=e.trim();return lt.test(r)||ct.test(r)}function Le(e){let r=e.trim().toLowerCase();return r.startsWith("gpt-")||r.startsWith("gpt5")||r.includes("codex")}function fe(e){let r=e.trim().toLowerCase();return r.includes("composer")||r.includes("cursor")}function Fe(e){return e.trim().toLowerCase().startsWith("gemini-")}function ut(e){return Le(e)?"codex":Ue(e)?"claude":Fe(e)?"gemini":(fe(e),"cursor")}function dt(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 pt(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?Ue(n)||Le(n)||fe(n)||Fe(n)?{lane:t,model:n,provider:ut(n),rule:"executor_ref:harness_lane_model"}:{lane:t,rule:"executor_ref:harness_lane"}:{lane:t,rule:"executor_ref:harness_lane"}}function f(e){let r=typeof e=="string"?e.trim():"";return r?dt(r)??pt(r):null}function ge(e){let r=f(e);return r?!!(r.provider&&r.provider!=="cursor"||r.model&&!fe(r.model)):!1}E();var Kr={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 K(e){return Kr[e]}function Wr(){return Object.values(Kr)}import{existsSync as cn}from"node:fs";import{homedir as un}from"node:os";import H from"node:path";import{createHash as Ur}from"node:crypto";import{statSync as ln}from"node:fs";import{spawnSync as Lr}from"node:child_process";import{existsSync as Br,readFileSync as Zt}from"node:fs";import C from"node:path";var $=class extends Error{constructor(t){super(`${t} is a batch file that is not a Node CLI shim; it cannot be spawned without a shell. Point the matching KYNVER_*_BIN setting at the real .exe or the CLI's JS entry, or run the daemon inside WSL.`);this.shimPath=t;this.name="UnresolvableWindowsShimError"}shimPath},Qt=".COM;.EXE;.BAT;.CMD";function en(e){return e.includes("/")||e.includes("\\")}function rn(e){return(e.PATHEXT||Qt).split(";").map(r=>r.trim().toLowerCase()).filter(r=>r.startsWith("."))}function tn(e){let r=Object.keys(e).find(t=>t.toUpperCase()==="PATH");return r?e[r]??"":""}function nn(e,r={}){let t=r.env??process.env,n=r.exists??Br,o=rn(t),s=C.win32.extname(e)!=="",i=l=>s?[l]:o.map(c=>`${l}${c}`);if(en(e)||C.win32.isAbsolute(e))return i(e).find(l=>n(l))??null;for(let l of tn(t).split(";").map(c=>c.trim()).filter(Boolean)){let c=i(C.win32.join(l,e)).find(u=>n(u));if(c)return c}return null}var Mr=/%~?dp0%?\\?([^"%\r\n]+?\.(?:c|m)?js)\b/i,on=/^\s*SET\s+"?([A-Za-z_]\w*)=([^"\r\n]*)"?\s*$/i;function Dr(e){return e.replace(/^[\\/]+/,"")}function sn(e){let r=e.split(/\r?\n/),t=new Map;for(let s of r){let i=on.exec(s);i&&t.set(i[1].toUpperCase(),i[2])}let n=r.filter(s=>s.includes("%*")).pop();if(!n)return null;let o=Mr.exec(n);if(o)return Dr(o[1]);for(let s of n.matchAll(/%([A-Za-z_]\w*)%/g)){let i=t.get(s[1].toUpperCase()),l=i?Mr.exec(i):null;if(l)return Dr(l[1])}return null}function an(e,r={}){if((r.platform??process.platform)!=="win32")return{executable:e,prefixArgs:[],kind:"passthrough"};let n=nn(e,r);if(!n)return{executable:e,prefixArgs:[],kind:"passthrough"};let o=C.win32.extname(n).toLowerCase();if(o!==".cmd"&&o!==".bat")return{executable:n,prefixArgs:[],kind:"exe"};let s=r.readText??(me=>Zt(me,"utf8")),i=r.exists??Br,l;try{l=s(n)}catch{throw new $(n)}let c=sn(l);if(!c)throw new $(n);let u=C.win32.dirname(n),p=C.win32.join(u,c);if(!i(p))throw new $(n);let F=C.win32.join(u,"node.exe");return{executable:i(F)?F:r.nodeExecutable??process.execPath,prefixArgs:[p],kind:"node-shim"}}function O(e,r,t={}){let n=an(e,t);return[n.executable,[...n.prefixArgs,...r]]}function y(e){try{let r=ln(e),t=`${e}|${r.size}|${r.mtimeMs}`;return Ur("sha256").update(t).digest("hex").slice(0,16)}catch{return}}function W(e){return Ur("sha256").update(`env:${e}`).digest("hex").slice(0,16)}function g(e,r){for(let t of r){let n=process.env[t]?.trim();if(n)return n}return e}function h(e,r,t={}){let n=t.timeoutMs??8e3;try{let[o,s]=O(e,r),i=Lr(o,s,{windowsHide:!0,encoding:"utf8",timeout:n,env:{...process.env,...t.env,CI:"1",NO_COLOR:"1"}});if(i.status===0)return{ok:!0,note:t.okNote??`${e} ${r.join(" ")}: ok`};let l=(i.stderr||i.stdout||"").trim(),c=t.failPrefix??`${e} ${r.join(" ")} failed`;return{ok:!1,note:l?`${c}: ${l.slice(0,200)}`:c}}catch(o){return{ok:!1,note:o instanceof Error?o.message:`${e} probe failed`}}}function le(e,r,t={}){let n=t.timeoutMs??8e3;try{let[o,s]=O(e,r);return Lr(o,s,{windowsHide:!0,stdio:"ignore",timeout:n,env:{...process.env,CI:"1",NO_COLOR:"1"}}).status===0?{ok:!0,note:t.okNote??`${e} authenticated`}:{ok:!1,note:t.failNote??`${e} not authenticated`}}catch(o){return{ok:!1,note:o instanceof Error?o.message:`${e} auth probe failed`}}}var dn="codex";function pn(){let e=un();return[process.env.CODEX_HOME?.trim()?H.join(H.resolve(process.env.CODEX_HOME.trim()),"auth.json"):null,H.join(e,".codex","auth.json"),H.join(e,".config","codex","auth.json")].filter(t=>!!t)}function mn(e){return H.dirname(e)}function fn(e){let r,t;for(let n of pn()){if(!cn(n))continue;r??=n;let o=h(e,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status",env:{CODEX_HOME:mn(n)}});if(t??=o,o.ok)return{authPath:n,login:o}}return{authPath:r,login:t??h(e,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status"})}}function Fr(e=new Date().toISOString()){let r=g(dn,["KYNVER_CODEX_BIN","CODEX_BIN"]);if(process.env.CODEX_API_KEY?.trim())return{providerId:"codex",ready:!0,authSource:"api_key_env",sessionFingerprint:W("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}=fn(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 gn}from"node:fs";import{homedir as hn}from"node:os";import Ae from"node:path";function yn(){let e=process.env.HERMES_HOME?.trim(),r=e?Ae.resolve(e):Ae.join(hn(),".hermes");return Ae.join(r,"auth.json")}function ce(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=yn(),o=gn(n),s=le(r,["auth","status","openai-codex"],{okNote:"hermes openai-codex: logged in",failNote:"hermes openai-codex: not logged in"}),i=t.ok&&s.ok;return{path:"hermes_openai_codex",ready:i,authSource:i?"subscription_hermes":"none",sessionFingerprint:o?y(n):void 0,checkedAt:e,note:i?"Hermes openai-codex subscription session bound (ChatGPT Codex OAuth)":[t.note,s.note,o?void 0:"no ~/.hermes/auth.json"].filter(Boolean).join("; ")}}function j(e=new Date().toISOString()){let r=Fr(e);if(r.ready)return{...r,path:"codex_cli"};let t=ce(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 $r=["low","medium","high"],Hr={oauth_local:0,subscription_hermes:0,runner_token:1,api_key_env:2,none:3};function jr(e,r){let t=K(e);return r==="privileged"?t.supportsPrivilegedPlatformActions:r==="low"?t.supportsLowRiskOrchestration:!0}function kn(e,r){let t=K(e.providerId),n=K(r.providerId),o=$r.indexOf(t.costTier)-$r.indexOf(n.costTier);if(o!==0)return o;let s=Hr[e.binding.authSource]-Hr[r.binding.authSource];return s!==0?s:e.providerId.localeCompare(r.providerId)}function we(e){let r=Wr().map(l=>({providerId:l.id,binding:e.inventory.bindings[l.id]})).filter(l=>l.binding.ready&&jr(l.providerId,e.riskClass));if(r.length===0)return null;let n=[...r].sort(kn)[0],o="codex";if(n.providerId===o)return{providerId:n.providerId,binding:n.binding};let s=e.inventory.bindings[o],i;return jr(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 Rn}from"node:fs";import{homedir as _n}from"node:os";import xn from"node:path";var bn="claude";function vn(){let e=_n();return[xn.join(e,".claude",".credentials.json")]}function Yr(e=new Date().toISOString()){let r=g(bn,["KYNVER_CLAUDE_BIN","CLAUDE_BIN"]);if(process.env.ANTHROPIC_API_KEY?.trim())return{providerId:"claude",ready:!1,authSource:"api_key_env",sessionFingerprint:W("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=vn().find(i=>Rn(i)),o=le(r,["auth","status"],{okNote:"claude auth status: authenticated",failNote:"claude auth status: not authenticated"}),s=t.ok&&(o.ok||!!n);return{providerId:"claude",ready:s,authSource:"oauth_local",sessionFingerprint:n?y(n):void 0,checkedAt:e,note:s?"Local Claude Code OAuth session bound on runner":[t.note,o.note,n?void 0:"no ~/.claude/.credentials.json"].filter(Boolean).join("; ")}}import{existsSync as Tn}from"node:fs";import{homedir as In}from"node:os";import D from"node:path";R();import{closeSync as yu,existsSync as An,mkdirSync as ku,openSync as Ru,statSync as _u,unlinkSync as xu}from"node:fs";d();import M from"node:path";he();import{existsSync as Y,readdirSync as En}from"node:fs";import A from"node:path";var Sn=/^\d{4}\.\d{1,2}\.\d{1,2}-[a-f0-9]+$/i;function Cn(e){let t=e.split("-")[0].split(".");if(t.length!==3)return null;let[n,o,s]=t;return!n||!o||!s?null:+`${n}${o.padStart(2,"0")}${s.padStart(2,"0")}`}function On(e){let r=A.join(e,"versions");if(!Y(r))return null;let t=null,n=-1;for(let o of En(r,{withFileTypes:!0})){if(!o.isDirectory()||!Sn.test(o.name))continue;let s=Cn(o.name);s==null||s<=n||(n=s,t=A.join(r,o.name))}return t}function Pe(e){let r=e?.trim()||A.join(process.env.LOCALAPPDATA||"","cursor-agent"),t=A.join(r,"node.exe"),n=A.join(r,"index.js");if(Y(t)&&Y(n))return{nodeExe:t,indexJs:n,versionDir:r};let o=On(r);if(!o)return null;let s=A.join(o,"node.exe"),i=A.join(o,"index.js");return!Y(s)||!Y(i)?null:{nodeExe:s,indexJs:i,versionDir:o}}function wn(e,r,t){return{executable:e,prefixArgs:[r],shell:!1,detached:k(),bundledVersionDir:t}}function Vr(e){if(process.platform==="win32"){let r=/\.(cmd|bat)$/i.test(e),t=/node\.exe$/i.test(e)&&An(M.join(M.dirname(e),"index.js"));if(r||t||e==="agent"){let o=r?Pe(M.dirname(e)):t?{nodeExe:e,indexJs:M.join(M.dirname(e),"index.js"),versionDir:M.dirname(e)}:Pe();if(o)return wn(o.nodeExe,o.indexJs,o.versionDir);throw new Error("Cursor Agent on Windows has no headless bundled node.exe under %LOCALAPPDATA%\\cursor-agent\\versions\\\u2026. Run `agent login` / update Cursor Agent CLI, use `--provider claude`, or set KYNVER_CURSOR_AGENT_ROOT to the cursor-agent folder.")}}return{executable:e,prefixArgs:[],shell:!1,detached:k()}}import{spawnSync as Pn}from"node:child_process";function Ie(e,r=process.env){try{let t;try{t=Vr(e)}catch{t={executable:e,prefixArgs:[]}}let n=Pn(t.executable,[...t.prefixArgs,"status","--format","json"],{encoding:"utf8",windowsHide:!0,timeout:8e3,env:{...r,CI:"1",NO_COLOR:"1"}});if(n.status!==0)return{ok:!1,note:"agent status: not authenticated"};let o=(n.stdout||"").trim();if(!o)return{ok:!1,note:"agent status: empty response"};let s;try{s=JSON.parse(o)}catch{return{ok:!1,note:"agent status: unparseable response"}}return typeof s=="object"&&s!==null&&s.isAuthenticated===!0?{ok:!0,note:"agent status: authenticated"}:{ok:!1,note:"agent status: not authenticated"}}catch(t){return{ok:!1,note:t instanceof Error?t.message:"agent status probe failed"}}}function Te(e=process.env){let r=[],t=e.KYNVER_CURSOR_AUTH_HOME?.trim();t&&(r.push(D.join(t,".config","cursor","auth.json")),r.push(D.join(t,".cursor-agent","auth.json")));let n=In();if(r.push(D.join(n,".config","cursor","auth.json")),r.push(D.join(n,".cursor-agent","auth.json")),process.platform==="win32"){let o=e.LOCALAPPDATA?.trim(),s=e.APPDATA?.trim();o&&r.push(D.join(o,"cursor-agent","auth.json")),s&&r.push(D.join(s,"cursor","auth.json"))}return r}var Nn="agent";function Gr(e=new Date().toISOString()){let r=g(Nn,["KYNVER_CURSOR_AGENT_BIN","CURSOR_AGENT_BIN"]);if(process.env.CURSOR_API_KEY?.trim())return{providerId:"cursor",ready:!1,authSource:"api_key_env",sessionFingerprint:W("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=Te().find(l=>Tn(l)),o=Ie(r),s=!!n||o.ok,i=t.ok&&s;return{providerId:"cursor",ready:i,authSource:"oauth_local",sessionFingerprint:n?y(n):void 0,checkedAt:e,note:i?"Local Cursor/Composer OAuth session bound on runner":[t.note,s?void 0:o.note??"no ~/.config/cursor/auth.json or `agent login` session"].filter(Boolean).join("; ")}}import{existsSync as Kn,readFileSync as Wn}from"node:fs";import{homedir as Mn}from"node:os";import Ne from"node:path";var Dn=["OPENAI_API_KEY","ANTHROPIC_API_KEY","KYNVER_API_KEY","KYNVER_BASE_URL"];function Bn(){let e=process.env.HERMES_HOME?.trim(),r=e?Ne.resolve(e):Ne.join(Mn(),".hermes");return Ne.join(r,".env")}function Un(e){try{let r=Wn(e,"utf8"),t=[];for(let n of Dn)new RegExp(`^${n}=`,"m").test(r)&&t.push(n);return t}catch{return[]}}function qr(e=new Date().toISOString()){let r=g("hermes",["KYNVER_HERMES_BIN","HERMES_BIN"]),t=h(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=Bn(),o=Kn(n),s=o?Un(n):[],l=s.some(u=>u.endsWith("_API_KEY"))?"api_key_env":o?"oauth_local":"none",c=t.ok&&o;return{adapterId:"hermes",cliAvailable:t.ok,profileBound:o,authSource:l,sessionFingerprint:o?y(n):void 0,checkedAt:e,note:c?`Hermes profile bound (${s.length?`keys: ${s.join(", ")}`:"no API keys detected"})`:[t.note,o?void 0:"no ~/.hermes/.env"].filter(Boolean).join("; ")}}function Jr(e={}){let r=e.nowIso?.()??new Date().toISOString(),t=j(r),n={codex:t,cursor:Gr(r),claude:Yr(r)},o=Object.values(n).filter(s=>s.ready).length;return{generatedAt:r,bindings:n,cloudApiCredits:{anthropicApiKey:!!process.env.ANTHROPIC_API_KEY?.trim(),openaiApiKey:!!process.env.OPENAI_API_KEY?.trim(),codexApiKey:!!process.env.CODEX_API_KEY?.trim()},workerEndpoint:{baseUrlConfigured:!!process.env.KYNVER_WORKER_BASE_URL?.trim(),apiKeyConfigured:!!process.env.KYNVER_WORKER_API_KEY?.trim()},hermes:qr(r),hermesOpenAiCodex:ce(r),codexAdapterPath:t.path,readyCount:o}}var Ln=[/\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],Fn=[/\borchestration\b/i,/\bplan[- ]?progress\b/i,/\bstatus\s+sync\b/i,/\bheartbeat\b/i,/\bboard[- ]?drain\b/i,/\bmaintenance\b/i,/\[orchestration:\s*low-risk\]/i];function Ke(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function $n(e){let r=Ke(e,"executorRef").toLowerCase(),t=Ke(e,"title").toLowerCase(),n=Ke(e,"description").toLowerCase(),o=`${r}
2
66
  ${t}
3
- ${n}`;return Kn.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":Wn.some(s=>s.test(o))?"low":"elevated"}function Dn(e){let r=N(e.provider),t=e.escalatedFrom&&e.escalatedReason?`Escalated from ${e.escalatedFrom} (${e.escalatedReason}); using ${r.displayName} (${r.costTier} tier)`:`${r.displayName} selected for ${e.riskClass} orchestration (${r.costTier} tier, auth=${e.authSource})`;return{provider:e.provider,model:e.model,authSource:e.authSource,costTier:r.costTier,riskClass:e.riskClass,costRationale:t,routingRule:e.routingRule,escalatedFrom:e.escalatedFrom,escalatedReason:e.escalatedReason}}function Bn(e){let r=e.inventory??Yr();return e.codexBinding?{...r,bindings:{...r.bindings,codex:e.codexBinding}}:r}function A(e){let r=Dn({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 Vr(e){let r=e.task??{},t=Mn(r),n=Bn({inventory:e.inventory,codexBinding:e.codexBinding??(e.inventory?null:H())}),o=e.preferLowCost===!1?null:e.explicitProvider?.trim().toLowerCase(),s=e.explicitModel?.trim()||void 0,i=D;if(o==="codex"||o==="provider:codex"){let c=n.bindings.codex;if(!c.ready){let p=Ce({inventory:n,riskClass:t});return A(p?{providerId:p.providerId,binding:p.binding,riskClass:t,routingRule:"orchestration:explicit_codex_unavailable_cost_aware",model:s,escalatedFrom:"codex",escalatedReason:c.note??"codex oauth not bound"}:{providerId:i,binding:n.bindings[i],riskClass:t,routingRule:"orchestration:codex_unavailable_escalate_cursor",model:s,escalatedFrom:"codex",escalatedReason:c.note??"codex oauth not bound"})}return A({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 A({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 A({providerId:"claude",binding:c,riskClass:t,routingRule:"orchestration:explicit_claude",model:s})}let l=Ce({inventory:n,riskClass:t});if(l)return A({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 A({providerId:i,binding:n.bindings[i],riskClass:t,routingRule:u.ready?"orchestration:inventory_empty_default_cursor":"orchestration:codex_unavailable_default_cursor",model:s,...u.ready?{}:{escalatedFrom:"codex",escalatedReason:u.note??"codex oauth not bound"}})}d();var Gr="kynver",qr=["agent_os_context_envelope","agent_os_search_memory","agent_os_search_skills","agent_os_get_skill","agent_os_progress_note"],Un=qr.map(e=>`mcp__${Gr}__${e}`);var V="claude-sonnet-4-6",G="claude-opus-4-8";d();d();var id=process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.5";function Fn(){return process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.5"}var B=Fn();d();var Te="openai-compatible",Wd=600*1e3;d();var w="gemini";function P(e=process.env){return e.KYNVER_GEMINI_DEFAULT_MODEL?.trim()||"gemini-2.5-pro"}var U="gemini-api";var np=600*1e3;var Xr="claude-sonnet-4-6",q="composer-2.5";function m(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function jn(e){if(!e)return;let r=m(e,"workerModelOverride")||m(e,"modelOverride");return r||`${m(e,"title")}
67
+ ${n}`;return Ln.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":Fn.some(s=>s.test(o))?"low":"elevated"}function Hn(e){let r=K(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 jn(e){let r=e.inventory??Jr();return e.codexBinding?{...r,bindings:{...r.bindings,codex:e.codexBinding}}:r}function w(e){let r=Hn({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 zr(e){let r=e.task??{},t=$n(r),n=jn({inventory:e.inventory,codexBinding:e.codexBinding??(e.inventory?null:j())}),o=e.preferLowCost===!1?null:e.explicitProvider?.trim().toLowerCase(),s=e.explicitModel?.trim()||void 0,i=B;if(o==="codex"||o==="provider:codex"){let u=n.bindings.codex;if(!u.ready){let p=we({inventory:n,riskClass:t});return w(p?{providerId:p.providerId,binding:p.binding,riskClass:t,routingRule:"orchestration:explicit_codex_unavailable_cost_aware",model:s,escalatedFrom:"codex",escalatedReason:u.note??"codex oauth not bound"}:{providerId:i,binding:n.bindings[i],riskClass:t,routingRule:"orchestration:codex_unavailable_escalate_cursor",model:s,escalatedFrom:"codex",escalatedReason:u.note??"codex oauth not bound"})}return w({providerId:"codex",binding:u,riskClass:t,routingRule:"orchestration:explicit_codex",model:s})}if(o==="cursor"||o==="provider:cursor"){let u=n.bindings.cursor;if(u.ready)return w({providerId:"cursor",binding:u,riskClass:t,routingRule:"orchestration:explicit_cursor",model:s})}if(o==="claude"||o==="provider:claude"){let u=n.bindings.claude;if(u.ready)return w({providerId:"claude",binding:u,riskClass:t,routingRule:"orchestration:explicit_claude",model:s})}let l=we({inventory:n,riskClass:t});if(l)return w({providerId:l.providerId,binding:l.binding,riskClass:t,routingRule:`orchestration:cost_aware_${l.providerId}`,model:s,escalatedFrom:l.escalatedFrom,escalatedReason:l.escalatedReason});let c=n.bindings.codex;return w({providerId:i,binding:n.bindings[i],riskClass:t,routingRule:c.ready?"orchestration:inventory_empty_default_cursor":"orchestration:codex_unavailable_default_cursor",model:s,...c.ready?{}:{escalatedFrom:"codex",escalatedReason:c.note??"codex oauth not bound"}})}R();d();var Xr="kynver",Zr=["agent_os_context_envelope","agent_os_search_memory","agent_os_search_skills","agent_os_get_skill","agent_os_progress_note"],Yn=Zr.map(e=>`mcp__${Xr}__${e}`);var q="claude-sonnet-4-6",J="claude-opus-4-8";R();d();R();d();var Sd=process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.5";function Gn(){return process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.5"}var U=Gn();R();d();var We="openai-compatible",np=600*1e3;R();d();var P="gemini";function I(e=process.env){return e.KYNVER_GEMINI_DEFAULT_MODEL?.trim()||"gemini-2.5-pro"}var L="gemini-api";var Cp=600*1e3;var rt="claude-sonnet-4-6",z="composer-2.5";function m(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function zn(e){if(!e)return;let r=m(e,"workerModelOverride")||m(e,"modelOverride");return r||`${m(e,"title")}
4
68
  ${m(e,"description")}
5
- ${m(e,"executorRef")}`.match(/\[(?:worker-)?model:\s*([^\]\n]+)\]/i)?.[1]?.trim()||void 0}function Jr(e){return e.toLowerCase()}function le(e=T()){let r=e.defaultModel?.trim();if(r)return r;let t=process.env.KYNVER_DEFAULT_MODEL?.trim();return t||Xr}function se(e){let r=(e??"").toLowerCase();return!r||r.includes("composer")||r.includes("cursor")||r.includes("codex")||r.startsWith("gpt-")||r.startsWith("gpt5")?"cursor":/^claude[-_]/i.test(r)||/^(?:opus|sonnet|haiku)\b/i.test(r)?"claude":r.startsWith("gemini-")?w:"cursor"}function Yn(e,r){let t=e.trim().toLowerCase(),n=r?.trim();return t==="cursor"?{model:q,provider:"cursor",rule:n&&n!=="cursor"?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:t==="claude"||t==="anthropic"?{model:V,provider:"claude",rule:n&&n!=="claude"?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:t==="gemini"||t==="google"?{model:P(),provider:w,rule:n&&n!==w?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:t==="gemini-api"||t==="gemini_api"||t==="google-api"?{model:P(),provider:U,rule:n&&n!==U?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:null}function zr(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 Vn=new Set(["report_reviewer","deep_reviewer","plan_reviewer"]);function Qr(e,r,t){return Vn.has(e)?G:r.includes("review")||/^review[\s:]/.test(t)||t.includes("critique")?G:V}function Zr(e){let r=Jr(m(e,"executorRef")),t=m(e,"title").toLowerCase(),n=m(e,"priority")||"normal",o=Jr(m(e,"roleLane"));if(r.includes("provider:claude")||r.startsWith("claude:")){let i=Qr(o,r,t);return{provider:"claude",model:i,rule:i===G?"factory:claude_review":"factory:claude_implementation"}}if(r.includes("provider:codex")||r.startsWith("codex:"))return{provider:"codex",model:B,rule:"lane:codex_orchestration"};if(r.includes("provider:chatgpt")||r.startsWith("chatgpt:")||r.includes("provider:gpt")||r.startsWith("gpt:")){let i=f(m(e,"executorRef"));return{provider:"codex",...i?.model?{model:i.model}:{model:B},rule:"lane:codex_orchestration"}}if(r.includes("provider:openai")||r.startsWith("openai-compatible:")){let i=f(m(e,"executorRef"));return{provider:Te,...i?.model?{model:i.model}:{},rule:"lane:openai_compatible"}}if(r.includes("provider:gemini-api")||r.startsWith("gemini-api:")){let i=f(m(e,"executorRef"));return{provider:U,...i?.model?{model:i.model}:{model:P()},rule:"lane:gemini_api"}}if(r.includes("provider:gemini")||r.startsWith("gemini:")){let i=f(m(e,"executorRef"));return{provider:w,...i?.model?{model:i.model}:{model:P()},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:B,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 zr(r,t)||o==="deep_reviewer"?{provider:"cursor",rule:"lane:deep_review"}:{provider:"cursor",rule:"lane:review"};if(zr(r,t)||o==="plan_author")return{provider:"cursor",rule:"lane:planning"};if(n==="critical")return{provider:"cursor",rule:"priority:critical"};if(n==="high")return{provider:"cursor",rule:"priority:high"};if(n==="low")return{provider:"cursor",rule:"priority:low"};let s=le();return{model:s,provider:se(s),rule:"default:global"}}function Gn(e){return e?f(m(e,"executorRef")):null}function qn(e){switch(S(e)){case w:case U:return P();case"claude":return V;case"codex":return B;case"cursor":return q;default:return}}var Ne="explicit:cli_provider",et="config:worker_provider";function rt(e,r,t){let n=S(r);return n===e.provider&&e.rule===t?e:{...e,provider:n,model:qn(n)??e.model,rule:t}}function Jn(e,r){let t=r?.trim();return!t||e.rule.startsWith("explicit:")&&e.rule!==Ne?e:rt(e,t,Ne)}function zn(e,r){if(r.explicitProvider?.trim()||Ke(r.task))return e;let t=r.configuredProvider?.trim();if(!t)return e;let n=S(t);return n===D||n===e.provider?e:rt(e,n,et)}function Xn(e){let r,t=Gn(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=Yn(u,e.explicitProvider);c?r=c:r={model:u,provider:e.explicitProvider?.trim()||se(u),rule:"explicit:cli",requestedModel:u}}else if(n)r={model:n,provider:o||se(n),rule:t?.rule??"executor_ref:model",requestedModel:n};else if(e.task&&ae(e.task)){let u=jn(e.task),c,p;if(u)c=u,p="task:provider_override";else{let L=typeof e.task.roleLane=="string"?e.task.roleLane.toLowerCase():"",We=typeof e.task.executorRef=="string"?e.task.executorRef.toLowerCase():"",ue=typeof e.task.title=="string"?e.task.title.toLowerCase():"";c=Qr(L,We,ue),p=c===G?"factory:claude_review":"factory:claude_implementation"}r={model:c,provider:"claude",rule:p,requestedModel:c}}else if(e.task&&Object.keys(e.task).length>0){let u=Zr(e.task);r={...u,requestedModel:u.model}}else{let u=le();r={model:u,provider:e.explicitProvider?.trim()||se(u),rule:"default:global",requestedModel:u}}r=Jn(r,e.explicitProvider),r=zn(r,{explicitProvider:e.explicitProvider,task:e.task,configuredProvider:e.configuredProvider});let s=!!e.configuredProvider?.trim()&&S(e.configuredProvider)!==D&&r.rule==="config:worker_provider",i=tt({routing:r,task:e.task,explicitProvider:e.explicitProvider??(s?r.provider:void 0),explicitProviderIsOperatorOverride:!!e.explicitProviderIsOperatorOverride||s});if(!e.task||Object.keys(e.task).length===0||i.rule==="explicit:model_provider_alias"||i.rule==="explicit:model_provider_alias_overrode_provider"||i.rule==="explicit:cli"||i.rule===Ne||i.rule===et||R(i.provider)&&(e.explicitProviderIsOperatorOverride||ae(e.task))||i.provider===Te||i.provider===w||i.provider===U||i.provider==="codex")return i;let l=Vr({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??B:i.model,rule:l.rule,requestedModel:i.requestedModel,orchestrationAudit:l.audit}}function Qn(e,r,t){return e||r||t||le()||V}ne();ne();var D="cursor",Zn=new Set(["claude","opus","anthropic"]),eo=[/\[worker-provider:\s*claude\]/i,/\[use-claude-worker\]/i,/\[operator-worker-provider:\s*claude\]/i];function J(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function R(e){if(!e?.trim())return!1;let r=e.trim().toLowerCase();return Zn.has(r)?!0:r.includes("claude")||r.includes("opus")}function ae(e){if(!e)return!1;let r=e.workerProviderOverride;if(typeof r=="string"&&R(r))return!0;let t=J(e,"executorRef").toLowerCase();if(t==="provider:claude"||t.startsWith("provider:claude:")||t.includes("claude-worker-override")||t.includes("operator-claude"))return!0;let n=f(J(e,"executorRef"));if(n?.provider&&R(n.provider)||n?.model&&R(ro(n.model)))return!0;let o=J(e,"description");if(eo.some(i=>i.test(o)))return!0;let s=J(e,"title");return!!/\[use-claude-worker\]/i.test(s)}function ro(e){let r=e.trim().toLowerCase();return/^claude[-_]/.test(r)||/^(?:opus|sonnet|haiku)\b/.test(r)?"claude":r}function to(e,r){return{provider:D,model:q,rule:`policy:cursor_default${r}`,requestedModel:e}}var no=["explicit:","executor_ref:","factory:","task:"];function oo(e){return no.some(r=>e.startsWith(r))}function Ke(e){if(!e)return!1;let r=e.workerProviderOverride;return typeof r=="string"&&r.trim()||f(J(e,"executorRef"))?.provider?!0:ae(e)}function tt(e){let{routing:r,task:t}=e,n=e.explicitProvider?.trim().toLowerCase();if(e.explicitProviderIsOperatorOverride&&R(n))return{...r,provider:"claude",rule:r.rule.startsWith("explicit:")?r.rule:"explicit:operator_provider"};if(n||oo(r.rule)||Ke(t)||!R(r.provider))return r;let o=r.rule&&r.rule!=="default:global"?`:${r.rule.replace(/:/g,"_")}`:"";return to(r.model,o)}function io(e){let r=e?.executorRef;return typeof r=="string"?r.trim():""}function nt(e){return e?.trim()||void 0}function so(e){let r=io(e.task),t=f(r),n=e.explicitProvider?.trim().toLowerCase(),o=nt(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=nt(e.routing.model),p={provider:u,model:c,rule:e.routing.rule};return s&&s!=="cursor"||r&&de(r)||n&&n!=="cursor"?u==="cursor"?{ok:!1,error:`model_routing_mismatch: requested ${s??"non-cursor"}${i?` model=${i}`:""} (${l}) but routing resolved to cursor (${e.routing.rule})`,requested:{provider:s,model:i,source:l},resolved:p}:i&&c&&i!==c&&!R(u)?{ok:!1,error:`model_routing_mismatch: requested model=${i} (${l}) but routing resolved model=${c} (${e.routing.rule})`,requested:{provider:s,model:i,source:l},resolved:p}:{ok:!0,requested:{provider:s,model:i,source:l},resolved:p}:{ok:!0,resolved:p}}export{q as CURSOR_DEFAULT_MODEL,Xr as GLOBAL_DEFAULT_MODEL,so as assessDispatchModelGuard,de as executorRefRequestsNonCursorWorker,Zr as inferModelRoutingFromTask,f as parseExecutorRefRoutingIntent,le as resolveGlobalDefaultModel,Qn as resolveModelFallback,Xn as resolveWorkerLaunch};
69
+ ${m(e,"executorRef")}`.match(/\[(?:worker-)?model:\s*([^\]\n]+)\]/i)?.[1]?.trim()||void 0}function Qr(e){return e.toLowerCase()}function pe(e=N()){let r=e.defaultModel?.trim();if(r)return r;let t=process.env.KYNVER_DEFAULT_MODEL?.trim();return t||rt}function ue(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-")?P:"cursor"}function Xn(e,r){let t=e.trim().toLowerCase(),n=r?.trim();return t==="cursor"?{model:z,provider:"cursor",rule:n&&n!=="cursor"?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:t==="claude"||t==="anthropic"?{model:q,provider:"claude",rule:n&&n!=="claude"?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:t==="gemini"||t==="google"?{model:I(),provider:P,rule:n&&n!==P?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:t==="gemini-api"||t==="gemini_api"||t==="google-api"?{model:I(),provider:L,rule:n&&n!==L?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:null}function et(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 Zn=new Set(["report_reviewer","deep_reviewer","plan_reviewer"]);function tt(e,r,t){return Zn.has(e)?J:r.includes("review")||/^review[\s:]/.test(t)||t.includes("critique")?J:q}function nt(e){let r=Qr(m(e,"executorRef")),t=m(e,"title").toLowerCase(),n=m(e,"priority")||"normal",o=Qr(m(e,"roleLane"));if(r.includes("provider:claude")||r.startsWith("claude:")){let i=tt(o,r,t);return{provider:"claude",model:i,rule:i===J?"factory:claude_review":"factory:claude_implementation"}}if(r.includes("provider:codex")||r.startsWith("codex:"))return{provider:"codex",model:U,rule:"lane:codex_orchestration"};if(r.includes("provider:chatgpt")||r.startsWith("chatgpt:")||r.includes("provider:gpt")||r.startsWith("gpt:")){let i=f(m(e,"executorRef"));return{provider:"codex",...i?.model?{model:i.model}:{model:U},rule:"lane:codex_orchestration"}}if(r.includes("provider:openai")||r.startsWith("openai-compatible:")){let i=f(m(e,"executorRef"));return{provider:We,...i?.model?{model:i.model}:{},rule:"lane:openai_compatible"}}if(r.includes("provider:gemini-api")||r.startsWith("gemini-api:")){let i=f(m(e,"executorRef"));return{provider:L,...i?.model?{model:i.model}:{model:I()},rule:"lane:gemini_api"}}if(r.includes("provider:gemini")||r.startsWith("gemini:")){let i=f(m(e,"executorRef"));return{provider:P,...i?.model?{model:i.model}:{model:I()},rule:"lane:gemini"}}if(r.includes("cursor")||r.includes("composer")||r.includes("copilot")||o==="implementer"||o==="repair_implementer")return{provider:"cursor",rule:"lane:implementation"};if(r.includes("codex"))return{provider:"codex",model:U,rule:"lane:codex_orchestration"};if(r.includes("landing")||t.startsWith("land:")||t.includes(" merge"))return{provider:"cursor",rule:"lane:landing"};if(r.includes("review")||/^review[\s:]/.test(t)||o.includes("review"))return et(r,t)||o==="deep_reviewer"?{provider:"cursor",rule:"lane:deep_review"}:{provider:"cursor",rule:"lane:review"};if(et(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=pe();return{model:s,provider:ue(s),rule:"default:global"}}function Qn(e){return e?f(m(e,"executorRef")):null}function eo(e){switch(S(e)){case P:case L:return I();case"claude":return q;case"codex":return U;case"cursor":return z;default:return}}var Me="explicit:cli_provider",ot="config:worker_provider";function it(e,r,t){let n=S(r);return n===e.provider&&e.rule===t?e:{...e,provider:n,model:eo(n)??e.model,rule:t}}function ro(e,r){let t=r?.trim();return!t||e.rule.startsWith("explicit:")&&e.rule!==Me?e:it(e,t,Me)}function to(e,r){if(r.explicitProvider?.trim()||De(r.task))return e;let t=r.configuredProvider?.trim();if(!t)return e;let n=S(t);return n===B||n===e.provider?e:it(e,n,ot)}function no(e){let r,t=Qn(e.task),n=e.explicitModel?.trim()?void 0:t?.model?.trim(),o=!e.explicitProvider?.trim()&&t?.provider?.trim()?t.provider.trim():void 0;if(e.explicitModel?.trim()){let c=e.explicitModel.trim(),u=Xn(c,e.explicitProvider);u?r=u:r={model:c,provider:e.explicitProvider?.trim()||ue(c),rule:"explicit:cli",requestedModel:c}}else if(n)r={model:n,provider:o||ue(n),rule:t?.rule??"executor_ref:model",requestedModel:n};else if(e.task&&de(e.task)){let c=zn(e.task),u,p;if(c)u=c,p="task:provider_override";else{let F=typeof e.task.roleLane=="string"?e.task.roleLane.toLowerCase():"",Be=typeof e.task.executorRef=="string"?e.task.executorRef.toLowerCase():"",me=typeof e.task.title=="string"?e.task.title.toLowerCase():"";u=tt(F,Be,me),p=u===J?"factory:claude_review":"factory:claude_implementation"}r={model:u,provider:"claude",rule:p,requestedModel:u}}else if(e.task&&Object.keys(e.task).length>0){let c=nt(e.task);r={...c,requestedModel:c.model}}else{let c=pe();r={model:c,provider:e.explicitProvider?.trim()||ue(c),rule:"default:global",requestedModel:c}}r=ro(r,e.explicitProvider),r=to(r,{explicitProvider:e.explicitProvider,task:e.task,configuredProvider:e.configuredProvider});let s=!!e.configuredProvider?.trim()&&S(e.configuredProvider)!==B&&r.rule==="config:worker_provider",i=st({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===Me||i.rule===ot||_(i.provider)&&(e.explicitProviderIsOperatorOverride||de(e.task))||i.provider===We||i.provider===P||i.provider===L||i.provider==="codex")return i;let l=zr({task:e.task,explicitProvider:e.explicitProvider??i.provider,explicitModel:i.model,inventory:e.orchestrationInventory??void 0});return{provider:l.provider,model:l.provider==="codex"?l.model??i.model??U:i.model,rule:l.rule,requestedModel:i.requestedModel,orchestrationAudit:l.audit}}function oo(e,r,t){return e||r||t||pe()||q}ae();ae();var B="cursor",io=new Set(["claude","opus","anthropic"]),so=[/\[worker-provider:\s*claude\]/i,/\[use-claude-worker\]/i,/\[operator-worker-provider:\s*claude\]/i];function X(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function _(e){if(!e?.trim())return!1;let r=e.trim().toLowerCase();return io.has(r)?!0:r.includes("claude")||r.includes("opus")}function de(e){if(!e)return!1;let r=e.workerProviderOverride;if(typeof r=="string"&&_(r))return!0;let t=X(e,"executorRef").toLowerCase();if(t==="provider:claude"||t.startsWith("provider:claude:")||t.includes("claude-worker-override")||t.includes("operator-claude"))return!0;let n=f(X(e,"executorRef"));if(n?.provider&&_(n.provider)||n?.model&&_(ao(n.model)))return!0;let o=X(e,"description");if(so.some(i=>i.test(o)))return!0;let s=X(e,"title");return!!/\[use-claude-worker\]/i.test(s)}function ao(e){let r=e.trim().toLowerCase();return/^claude[-_]/.test(r)||/^(?:opus|sonnet|haiku)\b/.test(r)?"claude":r}function lo(e,r){return{provider:B,model:z,rule:`policy:cursor_default${r}`,requestedModel:e}}var co=["explicit:","executor_ref:","factory:","task:"];function uo(e){return co.some(r=>e.startsWith(r))}function De(e){if(!e)return!1;let r=e.workerProviderOverride;return typeof r=="string"&&r.trim()||f(X(e,"executorRef"))?.provider?!0:de(e)}function st(e){let{routing:r,task:t}=e,n=e.explicitProvider?.trim().toLowerCase();if(e.explicitProviderIsOperatorOverride&&_(n))return{...r,provider:"claude",rule:r.rule.startsWith("explicit:")?r.rule:"explicit:operator_provider"};if(n||uo(r.rule)||De(t)||!_(r.provider))return r;let o=r.rule&&r.rule!=="default:global"?`:${r.rule.replace(/:/g,"_")}`:"";return lo(r.model,o)}function po(e){let r=e?.executorRef;return typeof r=="string"?r.trim():""}function at(e){return e?.trim()||void 0}function mo(e){let r=po(e.task),t=f(r),n=e.explicitProvider?.trim().toLowerCase(),o=at(e.explicitModel??void 0),s=n||t?.provider,i=o||t?.model,l=n||o?"cli":t?.rule??"none";if(!s&&!i)return{ok:!0};!s&&i&&(/^claude[-_]/i.test(i)||/^(?:opus|sonnet|haiku)\b/i.test(i))&&(s="claude");let c=e.routing.provider,u=at(e.routing.model),p={provider:c,model:u,rule:e.routing.rule};return s&&s!=="cursor"||r&&ge(r)||n&&n!=="cursor"?c==="cursor"?{ok:!1,error:`model_routing_mismatch: requested ${s??"non-cursor"}${i?` model=${i}`:""} (${l}) but routing resolved to cursor (${e.routing.rule})`,requested:{provider:s,model:i,source:l},resolved:p}:i&&u&&i!==u&&!_(c)?{ok:!1,error:`model_routing_mismatch: requested model=${i} (${l}) but routing resolved model=${u} (${e.routing.rule})`,requested:{provider:s,model:i,source:l},resolved:p}:{ok:!0,requested:{provider:s,model:i,source:l},resolved:p}:{ok:!0,resolved:p}}export{z as CURSOR_DEFAULT_MODEL,rt as GLOBAL_DEFAULT_MODEL,mo as assessDispatchModelGuard,ge as executorRefRequestsNonCursorWorker,nt as inferModelRoutingFromTask,f as parseExecutorRefRoutingIntent,pe as resolveGlobalDefaultModel,oo as resolveModelFallback,no as resolveWorkerLaunch};
@@ -1,2 +1,2 @@
1
- import{readFile as Ee}from"node:fs/promises";import{homedir as ve}from"node:os";import m from"node:path";import{existsSync as L,readFileSync as le}from"node:fs";import k from"node:path";import{existsSync as C,readFileSync as D}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 T}from"node:os";import I from"node:path";function ee(e){return e==="~"?T():e.startsWith("~/")||e.startsWith("~\\")?I.join(T(),e.slice(2)):e}function h(e){return I.resolve(ee(e))}function K(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"],Ye=new Set(re);var te=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],Ue=new Set(te);function _(e,r){try{let t=ne("git",r,K({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(D(r,"utf8"));return typeof t.name=="string"?t.name.trim():null}catch{return null}}function G(e){return ae(e)==="kynver"}function V(e){let r=c.resolve(e);if(!C(r))return null;let t=_(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(D(n,"utf8")).name==="@kynver-app/runtime")return r}catch{}let o=c.dirname(r);if(o===r)break;r=o}return null}function R(e,r,t,n,o){if(!t)return;let s=c.resolve(t);e.has(s)||(o?.requireMonorepo??!0)&&!G(s)||(e.add(s),r.push({repo:s,source:n}))}function ue(e){let r=e?.cwd??process.cwd(),t=new Set,n=[];R(t,n,V(r),"cwd_git",{requireMonorepo:!1});let o=ce(e?.runtimeModuleUrl??import.meta.url);o&&R(t,n,V(o),"runtime_checkout");let s=oe();for(let l of ie)R(t,n,h(c.join(s,l)),"well_known_path");let a=c.resolve(e?.cwd??process.cwd());return n.filter(l=>{if(l.source!=="runtime_checkout"||!G(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 Y(e){let r=e.trim().split("-")[0]?.split("+")[0];if(!r)return null;let t=r.split(".");if(t.length<1||t.length>3)return null;let n=t.map(o=>Number.parseInt(o,10));if(n.some(o=>!Number.isFinite(o)||o<0))return null;for(;n.length<3;)n.push(0);return[n[0],n[1],n[2]]}function E(e,r){let t=Y(e),n=Y(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 E(e,r)>=0}function me(e){let r=null;for(let t of e)(!r||E(t,r)>0)&&(r=t);return r}function de(e){try{let r=JSON.parse(le(e,"utf8"));return typeof r.version=="string"&&r.version.trim()?r.version.trim():null}catch{return null}}function ge(e,r){let t=[r,process.env.KYNVER_REPO,e].filter(o=>!!o?.trim());for(let o of t){let s=k.resolve(o);if(L(k.join(s,"packages/kynver-runtime/package.json"))&&L(k.join(s,"package.json")))return s}return $({cwd:e})?.repo??null}function H(e={}){let r=e.cwd??process.cwd(),t=ge(r,e.repoRoot);if(!t)return{};let n={};for(let o of j){let s=k.join(t,pe[o]),a=de(s);a&&(n[o]={version:a,source:"repo",path:s})}return n}function fe(e){return e==="@kynver-app/runtime"?["npm run kynver:build","npm run kynver"]:[`npm run build -w ${e}`]}function ye(e){let{packageName:r,minimumVersion:t,effectiveVersion:n,effectiveSource:o,repoVersion:s}=e,a=[];return s&&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],g=[],N=t(e.installed?.[i],"installed"),v=t(e.repo?.[i],"repo"),O=t(e.self?.[i],"self");N&&g.push(N),v&&g.push(v),O&&g.push(O);let{version:p,source:f}=ke(g),q=v?.version??null,b=!!p,P=!b&&r==="skip",S=b?W(p,u):P,Q=S?[]: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.`:S?`${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:S,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 B(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 d(e){let r=e?.trim();return r||null}function Se(e){return[...new Set(e.filter(r=>!!r))]}function he(){let e=ve(),r=d(process.env.KYNVER_OPENCLAW_NPM_ROOT)??d(process.env.OPENCLAW_NPM_ROOT)??m.join(e,".openclaw","npm"),t=d(process.env.KYNVER_NPM_GLOBAL_ROOT)??d(process.env.KYNVER_NPM_GLOBAL_MODULES_ROOT)??(d(process.env.NPM_CONFIG_PREFIX)?m.join(d(process.env.NPM_CONFIG_PREFIX),"lib","node_modules"):m.join(e,".npm-global","lib","node_modules"));return Se([m.join(r,"lib","node_modules"),m.join(r,"node_modules"),t.endsWith("node_modules")?t:m.join(t,"lib","node_modules")])}async function _e(e){try{let r=JSON.parse(await Ee(e,"utf8"));return typeof r.version=="string"&&r.version.trim()?r.version.trim():null}catch{return null}}function Re(e){let r=he(),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 Re(t)){let s=await _e(o);s&&(!n||E(s,n.version)>0)&&(n={version:s,path:o})}n&&(r[t]={version:n.version,observedAt:e,path:n.path})}return r}import{existsSync as Ce,readFileSync as Ae}from"node:fs";import{dirname as w,join as X}from"node:path";import{fileURLToPath as J}from"node:url";function Me(e){let r=w(J(e));for(let t=0;t<6;t+=1){if(Ce(X(r,"package.json")))return r;let n=w(r);if(n===r)break;r=n}throw new Error(`package.json not found above ${w(J(e))}`)}function we(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=we();function xe(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 x(e={}){let[r,t]=await Promise.all([F(),Promise.resolve(H({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:xe(r),repo:t,self:n,undetectedPolicy:"skip"}}async function Ne(e={}){let r=await x(e);return M(r)}async function Oe(e={}){let r=await x(e);return B(r)}export{x as buildMemoryCostPackageGuardInput,Oe as enforceMemoryCostPackageGuardAtStartup,Ne as evaluateMemoryCostPackageGuardAtStartup};
1
+ import{readFile as Ee}from"node:fs/promises";import{homedir as ve}from"node:os";import m from"node:path";import{existsSync as L,readFileSync as le}from"node:fs";import k from"node:path";import{existsSync as C,readFileSync as D}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 T}from"node:os";import I from"node:path";function ee(e){return e==="~"?T():e.startsWith("~/")||e.startsWith("~\\")?I.join(T(),e.slice(2)):e}function h(e){return I.resolve(ee(e))}function K(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"],Ye=new Set(re);var te=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],Ue=new Set(te);function _(e,r){try{let t=ne("git",r,K({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(D(r,"utf8"));return typeof t.name=="string"?t.name.trim():null}catch{return null}}function G(e){return ae(e)==="kynver"}function V(e){let r=c.resolve(e);if(!C(r))return null;let t=_(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(D(n,"utf8")).name==="@kynver-app/runtime")return r}catch{}let o=c.dirname(r);if(o===r)break;r=o}return null}function R(e,r,t,n,o){if(!t)return;let s=c.resolve(t);e.has(s)||(o?.requireMonorepo??!0)&&!G(s)||(e.add(s),r.push({repo:s,source:n}))}function ue(e){let r=e?.cwd??process.cwd(),t=new Set,n=[];R(t,n,V(r),"cwd_git",{requireMonorepo:!1});let o=ce(e?.runtimeModuleUrl??import.meta.url);o&&R(t,n,V(o),"runtime_checkout");let s=oe();for(let l of ie)R(t,n,h(c.join(s,l)),"well_known_path");let a=c.resolve(e?.cwd??process.cwd());return n.filter(l=>{if(l.source!=="runtime_checkout"||!G(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 Y(e){let r=e.trim().split("-")[0]?.split("+")[0];if(!r)return null;let t=r.split(".");if(t.length<1||t.length>3)return null;let n=t.map(o=>Number.parseInt(o,10));if(n.some(o=>!Number.isFinite(o)||o<0))return null;for(;n.length<3;)n.push(0);return[n[0],n[1],n[2]]}function E(e,r){let t=Y(e),n=Y(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 E(e,r)>=0}function me(e){let r=null;for(let t of e)(!r||E(t,r)>0)&&(r=t);return r}function de(e){try{let r=JSON.parse(le(e,"utf8"));return typeof r.version=="string"&&r.version.trim()?r.version.trim():null}catch{return null}}function ge(e,r){let t=[r,process.env.KYNVER_REPO,e].filter(o=>!!o?.trim());for(let o of t){let s=k.resolve(o);if(L(k.join(s,"packages/kynver-runtime/package.json"))&&L(k.join(s,"package.json")))return s}return $({cwd:e})?.repo??null}function H(e={}){let r=e.cwd??process.cwd(),t=ge(r,e.repoRoot);if(!t)return{};let n={};for(let o of j){let s=k.join(t,pe[o]),a=de(s);a&&(n[o]={version:a,source:"repo",path:s})}return n}function fe(e){return e==="@kynver-app/runtime"?["npm run kynver:build","npm run kynver"]:[`npm run build -w ${e}`]}function ye(e){let{packageName:r,minimumVersion:t,effectiveVersion:n,effectiveSource:o,repoVersion:s}=e,a=[];return s&&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],g=[],b=t(e.installed?.[i],"installed"),v=t(e.repo?.[i],"repo"),N=t(e.self?.[i],"self");b&&g.push(b),v&&g.push(v),N&&g.push(N);let{version:p,source:f}=ke(g),q=v?.version??null,O=!!p,P=!O&&r==="skip",S=O?W(p,u):P,Q=S?[]: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.`:S?`${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:S,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 B(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 d(e){let r=e?.trim();return r||null}function Se(e){return[...new Set(e.filter(r=>!!r))]}function he(){let e=ve(),r=d(process.env.KYNVER_OPENCLAW_NPM_ROOT)??d(process.env.OPENCLAW_NPM_ROOT)??m.join(e,".openclaw","npm"),t=d(process.env.KYNVER_NPM_GLOBAL_ROOT)??d(process.env.KYNVER_NPM_GLOBAL_MODULES_ROOT)??(d(process.env.NPM_CONFIG_PREFIX)?m.join(d(process.env.NPM_CONFIG_PREFIX),"lib","node_modules"):m.join(e,".npm-global","lib","node_modules"));return Se([m.join(r,"lib","node_modules"),m.join(r,"node_modules"),t.endsWith("node_modules")?t:m.join(t,"lib","node_modules")])}async function _e(e){try{let r=JSON.parse(await Ee(e,"utf8"));return typeof r.version=="string"&&r.version.trim()?r.version.trim():null}catch{return null}}function Re(e){let r=he(),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 Re(t)){let s=await _e(o);s&&(!n||E(s,n.version)>0)&&(n={version:s,path:o})}n&&(r[t]={version:n.version,observedAt:e,path:n.path})}return r}import{existsSync as Ce,readFileSync as Ae}from"node:fs";import{dirname as w,join as X}from"node:path";import{fileURLToPath as J}from"node:url";function Me(e){let r=w(J(e));for(let t=0;t<6;t+=1){if(Ce(X(r,"package.json")))return r;let n=w(r);if(n===r)break;r=n}throw new Error(`package.json not found above ${w(J(e))}`)}function we(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=we();function xe(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 x(e={}){let[r,t]=await Promise.all([F(),Promise.resolve(H({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:xe(r),repo:t,self:n,undetectedPolicy:"skip"}}async function be(e={}){let r=await x(e);return M(r)}async function Ne(e={}){let r=await x(e);return B(r)}export{x as buildMemoryCostPackageGuardInput,Ne as enforceMemoryCostPackageGuardAtStartup,be as evaluateMemoryCostPackageGuardAtStartup};
@@ -1,2 +1,2 @@
1
- var b=["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"],J=new Set(b);var M=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],F=new Set(M);var E={"@kynver-app/runtime":"0.1.83","@kynver-app/openclaw-agent-os":"0.1.43","@kynver-app/mcp-agent-os":"0.3.34"},N=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 h(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 k(t,e){let n=h(t),r=h(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 R(t,e){return k(t,e)>=0}function K(t){let e=null;for(let n of t)(!e||k(n,e)>0)&&(e=n);return e}function I(t){return t==="@kynver-app/runtime"?["npm run kynver:build","npm run kynver"]:[`npm run build -w ${t}`]}function D(t){let{packageName:e,minimumVersion:n,effectiveVersion:r,effectiveSource:s,repoVersion:a}=t,i=[];return a&&R(a,n)?(i.push(`Use the monorepo checkout (${a}) instead of a stale npm install: ${I(e).join("; ")}.`),i.push("Do not publish npm packages or wait on an operator release."),i):(r?i.push(`Upgrade ${e} from ${r} to >= ${n} (npm install -g ${e}@latest or align OpenClaw npm prefix).`):i.push(`Install ${e} >= ${n} before running memory-heavy AgentOS paths.`),e==="@kynver-app/runtime"&&i.push("Repo-source alternative: npm run kynver:build && npm run kynver"),s==="installed"&&a&&i.push(`Repo checkout reports ${a}; rebuild/link repo source if you develop from the monorepo.`),i)}function $(t){if(t.length===0)return{version:null,source:"unknown"};let e=K(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,u)=>o?typeof o=="string"?{version:o,source:u}:o:null,r=N.map(o=>{let u=E[o],l=[],S=n(t.installed?.[o],"installed"),f=n(t.repo?.[o],"repo"),v=n(t.self?.[o],"self");S&&l.push(S),f&&l.push(f),v&&l.push(v);let{version:c,source:p}=$(l),P=f?.version??null,_=!!c,g=!_&&e==="skip",y=_?R(c,u):g,x=y?[]:D({packageName:o,minimumVersion:u,effectiveVersion:c,effectiveSource:p,repoVersion:P}),O=g?`${m[o]} is not installed \u2014 memory-cost minimum ${u} applies when this package is present.`:y?`${m[o]} ${c} meets memory-cost minimum ${u} (${p}).`:`${m[o]} is below memory-cost minimum ${u}`+(c?` (effective ${c} via ${p})`:" (no version detected)")+".";return{packageName:o,displayName:m[o],minimumVersion:u,effectiveVersion:c,effectiveSource:p,ok:y,skipped:g,summary:O,remediation:x}}),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(`
1
+ var O=["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"],J=new Set(O);var M=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],F=new Set(M);var E={"@kynver-app/runtime":"0.1.83","@kynver-app/openclaw-agent-os":"0.1.43","@kynver-app/mcp-agent-os":"0.3.34"},N=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 h(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 k(t,e){let n=h(t),r=h(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 R(t,e){return k(t,e)>=0}function K(t){let e=null;for(let n of t)(!e||k(n,e)>0)&&(e=n);return e}function I(t){return t==="@kynver-app/runtime"?["npm run kynver:build","npm run kynver"]:[`npm run build -w ${t}`]}function D(t){let{packageName:e,minimumVersion:n,effectiveVersion:r,effectiveSource:s,repoVersion:a}=t,i=[];return a&&R(a,n)?(i.push(`Use the monorepo checkout (${a}) instead of a stale npm install: ${I(e).join("; ")}.`),i.push("Do not publish npm packages or wait on an operator release."),i):(r?i.push(`Upgrade ${e} from ${r} to >= ${n} (npm install -g ${e}@latest or align OpenClaw npm prefix).`):i.push(`Install ${e} >= ${n} before running memory-heavy AgentOS paths.`),e==="@kynver-app/runtime"&&i.push("Repo-source alternative: npm run kynver:build && npm run kynver"),s==="installed"&&a&&i.push(`Repo checkout reports ${a}; rebuild/link repo source if you develop from the monorepo.`),i)}function $(t){if(t.length===0)return{version:null,source:"unknown"};let e=K(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,u)=>o?typeof o=="string"?{version:o,source:u}:o:null,r=N.map(o=>{let u=E[o],l=[],S=n(t.installed?.[o],"installed"),f=n(t.repo?.[o],"repo"),v=n(t.self?.[o],"self");S&&l.push(S),f&&l.push(f),v&&l.push(v);let{version:c,source:p}=$(l),P=f?.version??null,_=!!c,g=!_&&e==="skip",y=_?R(c,u):g,x=y?[]:D({packageName:o,minimumVersion:u,effectiveVersion:c,effectiveSource:p,repoVersion:P}),b=g?`${m[o]} is not installed \u2014 memory-cost minimum ${u} applies when this package is present.`:y?`${m[o]} ${c} meets memory-cost minimum ${u} (${p}).`:`${m[o]} is below memory-cost minimum ${u}`+(c?` (effective ${c} via ${p})`:" (no version detected)")+".";return{packageName:o,displayName:m[o],minimumVersion:u,effectiveVersion:c,effectiveSource:p,ok:y,skipped:g,summary:b,remediation:x}}),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
2
  `)),this.name="MemoryCostPackageVersionGuardError",this.result=e}};function V(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,V as assertMemoryCostPackageVersionGuard,k as compareSemver,A as evaluateMemoryCostPackageVersionGuard};