@kynver-app/runtime 0.2.100 → 0.2.101

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
- var a=(e,r,t)=>()=>{if(t)throw t[0];try{return e&&(r=e(e=0)),r}catch(n){throw t=[n],n}};import{homedir as Be}from"node:os";import Le from"node:path";function ot(e){return e==="~"?Be():e.startsWith("~/")||e.startsWith("~\\")?Le.join(Be(),e.slice(2)):e}function w(e){return Le.resolve(ot(e))}var P=a(()=>{"use strict"});function R(e=process.platform){return e!=="win32"}var Fe=a(()=>{"use strict"});var d=a(()=>{"use strict";Fe()});var it,co,st,po,pe=a(()=>{"use strict";it=["ANTHROPIC_API_KEY","ANALYST_API_KEY","RECRUITER_API_KEY","AUTH_SECRET","NEXTAUTH_SECRET","DATABASE_URL","PRODUCTION_DATABASE_URL","KYNVER_PRODUCTION_DATABASE_URL","REDIS_URL","GOOGLE_CLIENT_SECRET","GITHUB_CLIENT_SECRET","KYNVER_API_KEY","KYNVER_SERVICE_SECRET","KYNVER_RUNTIME_SECRET","KYNVER_CRON_SECRET","OPENCLAW_CRON_SECRET","QSTASH_TOKEN","QSTASH_CURRENT_SIGNING_KEY","QSTASH_NEXT_SIGNING_KEY","TOOL_SECRETS_KEK","TOOL_EXECUTOR_DISPATCH_SECRET","CLOUDFLARE_API_TOKEN","STRIPE_SECRET_KEY","STRIPE_WEBHOOK_SECRET","STRIPE_IDENTITY_WEBHOOK_SECRET","VOYAGE_API_KEY","PERPLEXITY_API_KEY","FRED_API_KEY","FMP_API_KEY","CURSOR_API_KEY","MEMORY_CONTENT_KEK","LLM_BYOK_KEK","KYNVER_COMMAND_AUTH_KEY","KYNVER_INSTRUCTION_BUNDLE_KEY","KYNVER_MEMORY_LEDGER_KEY","KYNVER_JWKS_PRIVATE_KEY_JWK"],co=new Set(it),st=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],po=new Set(st)});var z=a(()=>{"use strict";P();d();pe()});var $e=a(()=>{"use strict";z()});var me=a(()=>{"use strict";z();P();$e()});var fe=a(()=>{"use strict";d()});var _=a(()=>{"use strict"});var X=a(()=>{"use strict"});var je=a(()=>{"use strict"});var To,No,ge=a(()=>{"use strict";To=25*1024*1024*1024,No=12*1024*1024*1024});var Uo,Bo,He=a(()=>{"use strict";ge();Uo=5*1024*1024*1024,Bo=10*1024*1024*1024});var Yo,Vo,he=a(()=>{"use strict";He();ge();Yo=30*1024*1024*1024,Vo=15*1024*1024*1024});var Ve=a(()=>{"use strict";d()});import ct from"node:path";var ri,ye=a(()=>{"use strict";P();Ve();ri=ct.join(".openclaw","harness")});var Z=a(()=>{"use strict";v();_();X();ee();ye()});var Je=a(()=>{"use strict";v();ye();Z();d()});var ke=a(()=>{"use strict";Je();d()});var ze=a(()=>{"use strict";ke();d()});var Xe=a(()=>{"use strict"});var Qe=a(()=>{"use strict";Xe();d()});var Ze=a(()=>{"use strict"});var er=a(()=>{"use strict";Ze()});var re=a(()=>{"use strict"});var rr=a(()=>{"use strict"});var tr=a(()=>{"use strict"});var nr=a(()=>{"use strict";er();d();re();rr();tr()});var or=a(()=>{"use strict";re()});var ir=a(()=>{"use strict"});var sr=a(()=>{"use strict"});var _e=a(()=>{"use strict"});var ar=a(()=>{"use strict"});var lr=a(()=>{"use strict";_e();ar()});var ur=a(()=>{"use strict";Qe();nr();re();or();ir();z();sr();lr();_e();d()});var cr=a(()=>{"use strict";ur()});var vt,xt,dr=a(()=>{"use strict";je();v();_();X();ee();he();ke();ze();cr();d();vt=500*1024*1024,xt=4*1024*1024*1024});var ee=a(()=>{"use strict";dr()});import{homedir as bt}from"node:os";import Et from"node:path";var pr,ve=a(()=>{"use strict";pr=Et.join(bt(),".kynver",".env")});var mr=a(()=>{"use strict"});var fr=a(()=>{"use strict";mr()});var gr=a(()=>{"use strict"});var hr=a(()=>{"use strict";d()});var xe=a(()=>{"use strict";fr();gr();hr()});var yr=a(()=>{"use strict"});var Rr=a(()=>{"use strict";yr()});var te=a(()=>{"use strict";ve();P();v();xe();Rr()});var kr=a(()=>{"use strict";_();_()});var _r=a(()=>{"use strict";ve();xe();te()});var be=a(()=>{"use strict"});var vr=a(()=>{"use strict";me();_();kr();v();te();_r();fe();be();Z()});function x(e){let r=e.trim().toLowerCase();return Nt[r]??r}var xr,Tt,Nt,ne=a(()=>{"use strict";xr=["claude","cursor","codex","gemini","gemini-api","openai-compatible"],Tt=xr.join("|"),Nt={anthropic:"claude",opus:"claude",openai:"openai-compatible",openai_compatible:"openai-compatible","openai-compat":"openai-compatible",chatgpt:"codex",gpt:"codex","openai-api":"openai-compatible",openai_api:"openai-compatible",google:"gemini",gemini_cli:"gemini",gemini_api:"gemini-api","google-api":"gemini-api",google_api:"gemini-api"}});import{existsSync as Wt,mkdirSync as _l,readFileSync as Mt,writeFileSync as vl}from"node:fs";import{homedir as Dt,totalmem as bl}from"node:os";import Ee from"node:path";function Ut(e){return{...e,...e.harnessRoot?.trim()?{harnessRoot:w(e.harnessRoot.trim())}:{},...e.defaultRepo?.trim()?{defaultRepo:w(e.defaultRepo.trim())}:{}}}function T(){if(!Wt(br))return{};try{return Ut(JSON.parse(Mt(br,"utf8")))}catch{return{}}}var Er,br,Dl,Ul,Bl,v=a(()=>{"use strict";me();P();fe();_();X();ee();he();te();vr();ne();Z();be();Er=Ee.join(Dt(),".kynver"),br=Ee.join(Er,"config.json"),Dl=Ee.join(Er,"credentials");Ul=500*1024*1024,Bl=4*1024*1024*1024});var Zr=/^claude[-_]/i,et=/^(?:opus|sonnet|haiku)\b/i;function Me(e){let r=e.trim();return Zr.test(r)||et.test(r)}function De(e){let r=e.trim().toLowerCase();return r.startsWith("gpt-")||r.startsWith("gpt5")||r.includes("codex")}function ce(e){let r=e.trim().toLowerCase();return r.includes("composer")||r.includes("cursor")}function Ue(e){return e.trim().toLowerCase().startsWith("gemini-")}function rt(e){return De(e)?"codex":Me(e)?"claude":Ue(e)?"gemini":(ce(e),"cursor")}function tt(e){if(!e.startsWith("provider:"))return null;let r=e.slice(9),t=r.indexOf(":"),n=(t>=0?r.slice(0,t):r).trim().toLowerCase(),o=t>=0&&r.slice(t+1).trim()||void 0;return n?n==="claude"||n==="opus"||n==="anthropic"?{provider:"claude",model:o,rule:o?"executor_ref:provider_claude_model":"executor_ref:provider_claude"}:n==="codex"?{provider:"codex",model:o,rule:"executor_ref:provider_codex"}:n==="openai-compatible"||n==="openai"||n==="openai_compatible"?{provider:"openai-compatible",model:o,rule:"executor_ref:provider_openai_compatible"}:n==="chatgpt"||n==="gpt"?{provider:"codex",model:o,rule:"executor_ref:provider_codex"}:n==="openai-api"||n==="openai_api"?{provider:"openai-compatible",model:o,rule:"executor_ref:provider_openai_compatible"}:n==="cursor"||n==="composer"?{provider:"cursor",model:o,rule:"executor_ref:provider_cursor"}:n==="gemini-api"||n==="gemini_api"||n==="google-api"?{provider:"gemini-api",model:o,rule:"executor_ref:provider_gemini_api"}:n==="gemini"||n==="google"||n==="gemini_cli"?{provider:"gemini",model:o,rule:o?"executor_ref:provider_gemini_model":"executor_ref:provider_gemini"}:null:null}function nt(e){if(!e.startsWith("harness-lane:"))return null;let r=e.split(":").map(o=>o.trim()).filter(Boolean);if(r.length<2)return null;let t=r[1],n=r.slice(2).join(":");return n?Me(n)||De(n)||ce(n)||Ue(n)?{lane:t,model:n,provider:rt(n),rule:"executor_ref:harness_lane_model"}:{lane:t,rule:"executor_ref:harness_lane"}:{lane:t,rule:"executor_ref:harness_lane"}}function f(e){let r=typeof e=="string"?e.trim():"";return r?tt(r)??nt(r):null}function de(e){let r=f(e);return r?!!(r.provider&&r.provider!=="cursor"||r.model&&!ce(r.model)):!1}v();var Sr={codex:{id:"codex",displayName:"Codex (BYO OAuth / Hermes openai-codex)",costTier:"low",authSources:["oauth_local","api_key_env","subscription_hermes"],supportsLowRiskOrchestration:!0,supportsPrivilegedPlatformActions:!1,workerMcpTools:"supported"},cursor:{id:"cursor",displayName:"Cursor / Composer",costTier:"medium",authSources:["oauth_local","api_key_env"],supportsLowRiskOrchestration:!0,supportsPrivilegedPlatformActions:!0,workerMcpTools:"supported"},claude:{id:"claude",displayName:"Claude Code",costTier:"high",authSources:["oauth_local"],supportsLowRiskOrchestration:!0,supportsPrivilegedPlatformActions:!0,workerMcpTools:"supported"}};function N(e){return Sr[e]}function Cr(){return Object.values(Sr)}import{existsSync as Jt}from"node:fs";import{homedir as zt}from"node:os";import $ from"node:path";import{createHash as Pr}from"node:crypto";import{statSync as qt}from"node:fs";import{spawnSync as Ir}from"node:child_process";import{existsSync as wr,readFileSync as Bt}from"node:fs";import b from"node:path";var F=class extends Error{constructor(t){super(`${t} is a batch file that is not a Node CLI shim; it cannot be spawned without a shell. Point the matching KYNVER_*_BIN setting at the real .exe or the CLI's JS entry, or run the daemon inside WSL.`);this.shimPath=t;this.name="UnresolvableWindowsShimError"}shimPath},Lt=".COM;.EXE;.BAT;.CMD";function Ft(e){return e.includes("/")||e.includes("\\")}function $t(e){return(e.PATHEXT||Lt).split(";").map(r=>r.trim().toLowerCase()).filter(r=>r.startsWith("."))}function jt(e){let r=Object.keys(e).find(t=>t.toUpperCase()==="PATH");return r?e[r]??"":""}function Ht(e,r={}){let t=r.env??process.env,n=r.exists??wr,o=$t(t),s=b.win32.extname(e)!=="",i=l=>s?[l]:o.map(u=>`${l}${u}`);if(Ft(e)||b.win32.isAbsolute(e))return i(e).find(l=>n(l))??null;for(let l of jt(t).split(";").map(u=>u.trim()).filter(Boolean)){let u=i(b.win32.join(l,e)).find(c=>n(c));if(u)return u}return null}var Or=/%~?dp0%?\\?([^"%\r\n]+?\.(?:c|m)?js)\b/i,Yt=/^\s*SET\s+"?([A-Za-z_]\w*)=([^"\r\n]*)"?\s*$/i;function Ar(e){return e.replace(/^[\\/]+/,"")}function Vt(e){let r=e.split(/\r?\n/),t=new Map;for(let s of r){let i=Yt.exec(s);i&&t.set(i[1].toUpperCase(),i[2])}let n=r.filter(s=>s.includes("%*")).pop();if(!n)return null;let o=Or.exec(n);if(o)return Ar(o[1]);for(let s of n.matchAll(/%([A-Za-z_]\w*)%/g)){let i=t.get(s[1].toUpperCase()),l=i?Or.exec(i):null;if(l)return Ar(l[1])}return null}function Gt(e,r={}){if((r.platform??process.platform)!=="win32")return{executable:e,prefixArgs:[],kind:"passthrough"};let n=Ht(e,r);if(!n)return{executable:e,prefixArgs:[],kind:"passthrough"};let o=b.win32.extname(n).toLowerCase();if(o!==".cmd"&&o!==".bat")return{executable:n,prefixArgs:[],kind:"exe"};let s=r.readText??(ue=>Bt(ue,"utf8")),i=r.exists??wr,l;try{l=s(n)}catch{throw new F(n)}let u=Vt(l);if(!u)throw new F(n);let c=b.win32.dirname(n),p=b.win32.join(c,u);if(!i(p))throw new F(n);let L=b.win32.join(c,"node.exe");return{executable:i(L)?L:r.nodeExecutable??process.execPath,prefixArgs:[p],kind:"node-shim"}}function E(e,r,t={}){let n=Gt(e,t);return[n.executable,[...n.prefixArgs,...r]]}function y(e){try{let r=qt(e),t=`${e}|${r.size}|${r.mtimeMs}`;return Pr("sha256").update(t).digest("hex").slice(0,16)}catch{return}}function K(e){return Pr("sha256").update(`env:${e}`).digest("hex").slice(0,16)}function g(e,r){for(let t of r){let n=process.env[t]?.trim();if(n)return n}return e}function h(e,r,t={}){let n=t.timeoutMs??8e3;try{let[o,s]=E(e,r),i=Ir(o,s,{windowsHide:!0,encoding:"utf8",timeout:n,env:{...process.env,...t.env,CI:"1",NO_COLOR:"1"}});if(i.status===0)return{ok:!0,note:t.okNote??`${e} ${r.join(" ")}: ok`};let l=(i.stderr||i.stdout||"").trim(),u=t.failPrefix??`${e} ${r.join(" ")} failed`;return{ok:!1,note:l?`${u}: ${l.slice(0,200)}`:u}}catch(o){return{ok:!1,note:o instanceof Error?o.message:`${e} probe failed`}}}function oe(e,r,t={}){let n=t.timeoutMs??8e3;try{let[o,s]=E(e,r);return Ir(o,s,{windowsHide:!0,stdio:"ignore",timeout:n,env:{...process.env,CI:"1",NO_COLOR:"1"}}).status===0?{ok:!0,note:t.okNote??`${e} authenticated`}:{ok:!1,note:t.failNote??`${e} not authenticated`}}catch(o){return{ok:!1,note:o instanceof Error?o.message:`${e} auth probe failed`}}}var Xt="codex";function Qt(){let e=zt();return[process.env.CODEX_HOME?.trim()?$.join($.resolve(process.env.CODEX_HOME.trim()),"auth.json"):null,$.join(e,".codex","auth.json"),$.join(e,".config","codex","auth.json")].filter(t=>!!t)}function Zt(e){return $.dirname(e)}function en(e){let r,t;for(let n of Qt()){if(!Jt(n))continue;r??=n;let o=h(e,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status",env:{CODEX_HOME:Zt(n)}});if(t??=o,o.ok)return{authPath:n,login:o}}return{authPath:r,login:t??h(e,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status"})}}function Tr(e=new Date().toISOString()){let r=g(Xt,["KYNVER_CODEX_BIN","CODEX_BIN"]);if(process.env.CODEX_API_KEY?.trim())return{providerId:"codex",ready:!0,authSource:"api_key_env",sessionFingerprint:K("CODEX_API_KEY"),checkedAt:e,note:"CODEX_API_KEY present (env binding \u2014 cloud credits path, no token stored in Kynver)"};let{authPath:t,login:n}=en(r),o=!!t&&n.ok;return{providerId:"codex",ready:o,authSource:"oauth_local",sessionFingerprint:t?y(t):void 0,checkedAt:e,note:o?"Local Codex OAuth session bound on runner":[n.note,t?void 0:"no Codex auth store found"].filter(Boolean).join("; ")}}import{existsSync as rn}from"node:fs";import{homedir as tn}from"node:os";import Se from"node:path";function nn(){let e=process.env.HERMES_HOME?.trim(),r=e?Se.resolve(e):Se.join(tn(),".hermes");return Se.join(r,"auth.json")}function ie(e=new Date().toISOString()){let r=g("hermes",["KYNVER_HERMES_BIN","HERMES_BIN"]),t=h(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=nn(),o=rn(n),s=oe(r,["auth","status","openai-codex"],{okNote:"hermes openai-codex: logged in",failNote:"hermes openai-codex: not logged in"}),i=t.ok&&s.ok;return{path:"hermes_openai_codex",ready:i,authSource:i?"subscription_hermes":"none",sessionFingerprint:o?y(n):void 0,checkedAt:e,note:i?"Hermes openai-codex subscription session bound (ChatGPT Codex OAuth)":[t.note,s.note,o?void 0:"no ~/.hermes/auth.json"].filter(Boolean).join("; ")}}function j(e=new Date().toISOString()){let r=Tr(e);if(r.ready)return{...r,path:"codex_cli"};let t=ie(e);return t.ready?{providerId:"codex",ready:!0,authSource:t.authSource,sessionFingerprint:t.sessionFingerprint,checkedAt:t.checkedAt,note:t.note,path:"hermes_openai_codex",hermesOpenAiCodex:t}:{providerId:"codex",ready:!1,authSource:"none",checkedAt:e,path:"none",hermesOpenAiCodex:t,note:[r.note,t.note].filter(Boolean).join("; ")||"Codex CLI and Hermes openai-codex unavailable"}}var Nr=["low","medium","high"],Kr={oauth_local:0,subscription_hermes:0,runner_token:1,api_key_env:2,none:3};function Wr(e,r){let t=N(e);return r==="privileged"?t.supportsPrivilegedPlatformActions:r==="low"?t.supportsLowRiskOrchestration:!0}function on(e,r){let t=N(e.providerId),n=N(r.providerId),o=Nr.indexOf(t.costTier)-Nr.indexOf(n.costTier);if(o!==0)return o;let s=Kr[e.binding.authSource]-Kr[r.binding.authSource];return s!==0?s:e.providerId.localeCompare(r.providerId)}function Ce(e){let r=Cr().map(l=>({providerId:l.id,binding:e.inventory.bindings[l.id]})).filter(l=>l.binding.ready&&Wr(l.providerId,e.riskClass));if(r.length===0)return null;let n=[...r].sort(on)[0],o="codex";if(n.providerId===o)return{providerId:n.providerId,binding:n.binding};let s=e.inventory.bindings[o],i;return Wr(o,e.riskClass)?s.ready||(i=s.note??`${o} not bound`):i=`${e.riskClass} orchestration requires privileged-capable provider`,{providerId:n.providerId,binding:n.binding,escalatedFrom:o,escalatedReason:i}}import{existsSync as sn}from"node:fs";import{homedir as an}from"node:os";import ln from"node:path";var un="claude";function cn(){let e=an();return[ln.join(e,".claude",".credentials.json")]}function Mr(e=new Date().toISOString()){let r=g(un,["KYNVER_CLAUDE_BIN","CLAUDE_BIN"]);if(process.env.ANTHROPIC_API_KEY?.trim())return{providerId:"claude",ready:!1,authSource:"api_key_env",sessionFingerprint:K("ANTHROPIC_API_KEY"),checkedAt:e,note:"ANTHROPIC_API_KEY present but scrubbed from worker env (deployment secret) \u2014 use `claude` CLI login (OAuth) for harness workers"};let t=h(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=cn().find(i=>sn(i)),o=oe(r,["auth","status"],{okNote:"claude auth status: authenticated",failNote:"claude auth status: not authenticated"}),s=t.ok&&(o.ok||!!n);return{providerId:"claude",ready:s,authSource:"oauth_local",sessionFingerprint:n?y(n):void 0,checkedAt:e,note:s?"Local Claude Code OAuth session bound on runner":[t.note,o.note,n?void 0:"no ~/.claude/.credentials.json"].filter(Boolean).join("; ")}}import{existsSync as kn}from"node:fs";import{homedir as Rn}from"node:os";import M from"node:path";import{closeSync as Eu,existsSync as gn,mkdirSync as Su,openSync as Cu,statSync as Ou,unlinkSync as Au}from"node:fs";d();import W from"node:path";pe();import{existsSync as H,readdirSync as dn}from"node:fs";import S from"node:path";var pn=/^\d{4}\.\d{1,2}\.\d{1,2}-[a-f0-9]+$/i;function mn(e){let t=e.split("-")[0].split(".");if(t.length!==3)return null;let[n,o,s]=t;return!n||!o||!s?null:+`${n}${o.padStart(2,"0")}${s.padStart(2,"0")}`}function fn(e){let r=S.join(e,"versions");if(!H(r))return null;let t=null,n=-1;for(let o of dn(r,{withFileTypes:!0})){if(!o.isDirectory()||!pn.test(o.name))continue;let s=mn(o.name);s==null||s<=n||(n=s,t=S.join(r,o.name))}return t}function Oe(e){let r=e?.trim()||S.join(process.env.LOCALAPPDATA||"","cursor-agent"),t=S.join(r,"node.exe"),n=S.join(r,"index.js");if(H(t)&&H(n))return{nodeExe:t,indexJs:n,versionDir:r};let o=fn(r);if(!o)return null;let s=S.join(o,"node.exe"),i=S.join(o,"index.js");return!H(s)||!H(i)?null:{nodeExe:s,indexJs:i,versionDir:o}}function hn(e,r,t){return{executable:e,prefixArgs:[r],shell:!1,detached:R(),bundledVersionDir:t}}function Dr(e){if(process.platform==="win32"){let r=/\.(cmd|bat)$/i.test(e),t=/node\.exe$/i.test(e)&&gn(W.join(W.dirname(e),"index.js"));if(r||t||e==="agent"){let o=r?Oe(W.dirname(e)):t?{nodeExe:e,indexJs:W.join(W.dirname(e),"index.js"),versionDir:W.dirname(e)}:Oe();if(o)return hn(o.nodeExe,o.indexJs,o.versionDir);throw new Error("Cursor Agent on Windows has no headless bundled node.exe under %LOCALAPPDATA%\\cursor-agent\\versions\\\u2026. Run `agent login` / update Cursor Agent CLI, use `--provider claude`, or set KYNVER_CURSOR_AGENT_ROOT to the cursor-agent folder.")}}return{executable:e,prefixArgs:[],shell:!1,detached:R()}}import{spawnSync as yn}from"node:child_process";function Ae(e,r=process.env){try{let t;try{t=Dr(e)}catch{t={executable:e,prefixArgs:[]}}let n=yn(t.executable,[...t.prefixArgs,"status","--format","json"],{encoding:"utf8",windowsHide:!0,timeout:8e3,env:{...r,CI:"1",NO_COLOR:"1"}});if(n.status!==0)return{ok:!1,note:"agent status: not authenticated"};let o=(n.stdout||"").trim();if(!o)return{ok:!1,note:"agent status: empty response"};let s;try{s=JSON.parse(o)}catch{return{ok:!1,note:"agent status: unparseable response"}}return typeof s=="object"&&s!==null&&s.isAuthenticated===!0?{ok:!0,note:"agent status: authenticated"}:{ok:!1,note:"agent status: not authenticated"}}catch(t){return{ok:!1,note:t instanceof Error?t.message:"agent status probe failed"}}}function we(e=process.env){let r=[],t=e.KYNVER_CURSOR_AUTH_HOME?.trim();t&&(r.push(M.join(t,".config","cursor","auth.json")),r.push(M.join(t,".cursor-agent","auth.json")));let n=Rn();if(r.push(M.join(n,".config","cursor","auth.json")),r.push(M.join(n,".cursor-agent","auth.json")),process.platform==="win32"){let o=e.LOCALAPPDATA?.trim(),s=e.APPDATA?.trim();o&&r.push(M.join(o,"cursor-agent","auth.json")),s&&r.push(M.join(s,"cursor","auth.json"))}return r}var _n="agent";function Ur(e=new Date().toISOString()){let r=g(_n,["KYNVER_CURSOR_AGENT_BIN","CURSOR_AGENT_BIN"]);if(process.env.CURSOR_API_KEY?.trim())return{providerId:"cursor",ready:!1,authSource:"api_key_env",sessionFingerprint:K("CURSOR_API_KEY"),checkedAt:e,note:"CURSOR_API_KEY present but scrubbed from worker env (deployment secret) \u2014 use `agent login` (OAuth) for harness workers"};let t=h(r,["-v"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=we().find(l=>kn(l)),o=Ae(r),s=!!n||o.ok,i=t.ok&&s;return{providerId:"cursor",ready:i,authSource:"oauth_local",sessionFingerprint:n?y(n):void 0,checkedAt:e,note:i?"Local Cursor/Composer OAuth session bound on runner":[t.note,s?void 0:o.note??"no ~/.config/cursor/auth.json or `agent login` session"].filter(Boolean).join("; ")}}import{existsSync as vn,readFileSync as xn}from"node:fs";import{homedir as bn}from"node:os";import Pe from"node:path";var En=["OPENAI_API_KEY","ANTHROPIC_API_KEY","KYNVER_API_KEY","KYNVER_BASE_URL"];function Sn(){let e=process.env.HERMES_HOME?.trim(),r=e?Pe.resolve(e):Pe.join(bn(),".hermes");return Pe.join(r,".env")}function Cn(e){try{let r=xn(e,"utf8"),t=[];for(let n of En)new RegExp(`^${n}=`,"m").test(r)&&t.push(n);return t}catch{return[]}}function Br(e=new Date().toISOString()){let r=g("hermes",["KYNVER_HERMES_BIN","HERMES_BIN"]),t=h(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=Sn(),o=vn(n),s=o?Cn(n):[],l=s.some(c=>c.endsWith("_API_KEY"))?"api_key_env":o?"oauth_local":"none",u=t.ok&&o;return{adapterId:"hermes",cliAvailable:t.ok,profileBound:o,authSource:l,sessionFingerprint:o?y(n):void 0,checkedAt:e,note:u?`Hermes profile bound (${s.length?`keys: ${s.join(", ")}`:"no API keys detected"})`:[t.note,o?void 0:"no ~/.hermes/.env"].filter(Boolean).join("; ")}}function Lr(e={}){let r=e.nowIso?.()??new Date().toISOString(),t=j(r),n={codex:t,cursor:Ur(r),claude:Mr(r)},o=Object.values(n).filter(s=>s.ready).length;return{generatedAt:r,bindings:n,cloudApiCredits:{anthropicApiKey:!!process.env.ANTHROPIC_API_KEY?.trim(),openaiApiKey:!!process.env.OPENAI_API_KEY?.trim(),codexApiKey:!!process.env.CODEX_API_KEY?.trim()},workerEndpoint:{baseUrlConfigured:!!process.env.KYNVER_WORKER_BASE_URL?.trim(),apiKeyConfigured:!!process.env.KYNVER_WORKER_API_KEY?.trim()},hermes:Br(r),hermesOpenAiCodex:ie(r),codexAdapterPath:t.path,readyCount:o}}var On=[/\bprivileged\b/i,/\bproduction\s+db\b/i,/\bdb:push\b/i,/\bmigration\b/i,/\bdeploy\b/i,/\bsecrets?\b/i,/\bstripe\b/i,/\[require-approval\]/i,/\[operator-only\]/i],An=[/\borchestration\b/i,/\bplan[- ]?progress\b/i,/\bstatus\s+sync\b/i,/\bheartbeat\b/i,/\bboard[- ]?drain\b/i,/\bmaintenance\b/i,/\[orchestration:\s*low-risk\]/i];function Ie(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function wn(e){let r=Ie(e,"executorRef").toLowerCase(),t=Ie(e,"title").toLowerCase(),n=Ie(e,"description").toLowerCase(),o=`${r}
1
+ var a=(e,r,t)=>()=>{if(t)throw t[0];try{return e&&(r=e(e=0)),r}catch(n){throw t=[n],n}};import{homedir as Be}from"node:os";import Le from"node:path";function ot(e){return e==="~"?Be():e.startsWith("~/")||e.startsWith("~\\")?Le.join(Be(),e.slice(2)):e}function w(e){return Le.resolve(ot(e))}var P=a(()=>{"use strict"});function R(e=process.platform){return e!=="win32"}var Fe=a(()=>{"use strict"});var d=a(()=>{"use strict";Fe()});var it,co,st,po,pe=a(()=>{"use strict";it=["ANTHROPIC_API_KEY","ANALYST_API_KEY","RECRUITER_API_KEY","AUTH_SECRET","NEXTAUTH_SECRET","DATABASE_URL","PRODUCTION_DATABASE_URL","KYNVER_PRODUCTION_DATABASE_URL","REDIS_URL","GOOGLE_CLIENT_SECRET","GITHUB_CLIENT_SECRET","KYNVER_API_KEY","KYNVER_SERVICE_SECRET","KYNVER_RUNTIME_SECRET","KYNVER_CRON_SECRET","OPENCLAW_CRON_SECRET","QSTASH_TOKEN","QSTASH_CURRENT_SIGNING_KEY","QSTASH_NEXT_SIGNING_KEY","TOOL_SECRETS_KEK","TOOL_EXECUTOR_DISPATCH_SECRET","CLOUDFLARE_API_TOKEN","STRIPE_SECRET_KEY","STRIPE_WEBHOOK_SECRET","STRIPE_IDENTITY_WEBHOOK_SECRET","VOYAGE_API_KEY","PERPLEXITY_API_KEY","FRED_API_KEY","FMP_API_KEY","CURSOR_API_KEY","MEMORY_CONTENT_KEK","LLM_BYOK_KEK","KYNVER_COMMAND_AUTH_KEY","KYNVER_INSTRUCTION_BUNDLE_KEY","KYNVER_MEMORY_LEDGER_KEY","KYNVER_JWKS_PRIVATE_KEY_JWK"],co=new Set(it),st=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],po=new Set(st)});var z=a(()=>{"use strict";P();d();pe()});var $e=a(()=>{"use strict";z()});var me=a(()=>{"use strict";z();P();$e()});var fe=a(()=>{"use strict";d()});var _=a(()=>{"use strict"});var X=a(()=>{"use strict"});var je=a(()=>{"use strict"});var To,No,ge=a(()=>{"use strict";To=25*1024*1024*1024,No=12*1024*1024*1024});var Uo,Bo,He=a(()=>{"use strict";ge();Uo=5*1024*1024*1024,Bo=10*1024*1024*1024});var Yo,Vo,he=a(()=>{"use strict";He();ge();Yo=30*1024*1024*1024,Vo=15*1024*1024*1024});var Ve=a(()=>{"use strict";d()});import ct from"node:path";var ri,ye=a(()=>{"use strict";P();Ve();ri=ct.join(".openclaw","harness")});var Z=a(()=>{"use strict";v();_();X();ee();ye()});var Je=a(()=>{"use strict";v();ye();Z();d()});var ke=a(()=>{"use strict";Je();d()});var ze=a(()=>{"use strict";ke();d()});var Xe=a(()=>{"use strict"});var Qe=a(()=>{"use strict";Xe();d()});var Ze=a(()=>{"use strict"});var er=a(()=>{"use strict";Ze()});var re=a(()=>{"use strict"});var rr=a(()=>{"use strict"});var tr=a(()=>{"use strict"});var nr=a(()=>{"use strict";er();d();re();rr();tr()});var or=a(()=>{"use strict";re()});var ir=a(()=>{"use strict"});var sr=a(()=>{"use strict"});var _e=a(()=>{"use strict"});var ar=a(()=>{"use strict"});var lr=a(()=>{"use strict";_e();ar()});var ur=a(()=>{"use strict";Qe();nr();re();or();ir();z();sr();lr();_e();d()});var cr=a(()=>{"use strict";ur()});var vt,xt,dr=a(()=>{"use strict";je();v();_();X();ee();he();ke();ze();cr();d();vt=500*1024*1024,xt=4*1024*1024*1024});var ee=a(()=>{"use strict";dr()});import{homedir as bt}from"node:os";import Et from"node:path";var pr,ve=a(()=>{"use strict";pr=Et.join(bt(),".kynver",".env")});var mr=a(()=>{"use strict"});var fr=a(()=>{"use strict";mr()});var gr=a(()=>{"use strict"});var hr=a(()=>{"use strict";d()});var xe=a(()=>{"use strict";fr();gr();hr()});var yr=a(()=>{"use strict"});var Rr=a(()=>{"use strict";yr()});var te=a(()=>{"use strict";ve();P();v();xe();Rr()});var kr=a(()=>{"use strict";_();_()});var _r=a(()=>{"use strict";ve();xe();te()});var be=a(()=>{"use strict"});var vr=a(()=>{"use strict";me();_();kr();v();te();_r();fe();be();Z()});function x(e){let r=e.trim().toLowerCase();return Nt[r]??r}var xr,Tt,Nt,ne=a(()=>{"use strict";xr=["claude","cursor","codex","gemini","gemini-api","openai-compatible"],Tt=xr.join("|"),Nt={anthropic:"claude",opus:"claude",openai:"openai-compatible",openai_compatible:"openai-compatible","openai-compat":"openai-compatible",chatgpt:"codex",gpt:"codex","openai-api":"openai-compatible",openai_api:"openai-compatible",google:"gemini",gemini_cli:"gemini",gemini_api:"gemini-api","google-api":"gemini-api",google_api:"gemini-api"}});import{existsSync as Dt,mkdirSync as _l,readFileSync as Wt,writeFileSync as vl}from"node:fs";import{homedir as Mt,totalmem as bl}from"node:os";import Ee from"node:path";function Ut(e){return{...e,...e.harnessRoot?.trim()?{harnessRoot:w(e.harnessRoot.trim())}:{},...e.defaultRepo?.trim()?{defaultRepo:w(e.defaultRepo.trim())}:{}}}function T(){if(!Dt(br))return{};try{return Ut(JSON.parse(Wt(br,"utf8")))}catch{return{}}}var Er,br,Ml,Ul,Bl,v=a(()=>{"use strict";me();P();fe();_();X();ee();he();te();vr();ne();Z();be();Er=Ee.join(Mt(),".kynver"),br=Ee.join(Er,"config.json"),Ml=Ee.join(Er,"credentials");Ul=500*1024*1024,Bl=4*1024*1024*1024});var Zr=/^claude[-_]/i,et=/^(?:opus|sonnet|haiku)\b/i;function We(e){let r=e.trim();return Zr.test(r)||et.test(r)}function Me(e){let r=e.trim().toLowerCase();return r.startsWith("gpt-")||r.startsWith("gpt5")||r.includes("codex")}function ce(e){let r=e.trim().toLowerCase();return r.includes("composer")||r.includes("cursor")}function Ue(e){return e.trim().toLowerCase().startsWith("gemini-")}function rt(e){return Me(e)?"codex":We(e)?"claude":Ue(e)?"gemini":(ce(e),"cursor")}function tt(e){if(!e.startsWith("provider:"))return null;let r=e.slice(9),t=r.indexOf(":"),n=(t>=0?r.slice(0,t):r).trim().toLowerCase(),o=t>=0&&r.slice(t+1).trim()||void 0;return n?n==="claude"||n==="opus"||n==="anthropic"?{provider:"claude",model:o,rule:o?"executor_ref:provider_claude_model":"executor_ref:provider_claude"}:n==="codex"?{provider:"codex",model:o,rule:"executor_ref:provider_codex"}:n==="openai-compatible"||n==="openai"||n==="openai_compatible"?{provider:"openai-compatible",model:o,rule:"executor_ref:provider_openai_compatible"}:n==="chatgpt"||n==="gpt"?{provider:"codex",model:o,rule:"executor_ref:provider_codex"}:n==="openai-api"||n==="openai_api"?{provider:"openai-compatible",model:o,rule:"executor_ref:provider_openai_compatible"}:n==="cursor"||n==="composer"?{provider:"cursor",model:o,rule:"executor_ref:provider_cursor"}:n==="gemini-api"||n==="gemini_api"||n==="google-api"?{provider:"gemini-api",model:o,rule:"executor_ref:provider_gemini_api"}:n==="gemini"||n==="google"||n==="gemini_cli"?{provider:"gemini",model:o,rule:o?"executor_ref:provider_gemini_model":"executor_ref:provider_gemini"}:null:null}function nt(e){if(!e.startsWith("harness-lane:"))return null;let r=e.split(":").map(o=>o.trim()).filter(Boolean);if(r.length<2)return null;let t=r[1],n=r.slice(2).join(":");return n?We(n)||Me(n)||ce(n)||Ue(n)?{lane:t,model:n,provider:rt(n),rule:"executor_ref:harness_lane_model"}:{lane:t,rule:"executor_ref:harness_lane"}:{lane:t,rule:"executor_ref:harness_lane"}}function f(e){let r=typeof e=="string"?e.trim():"";return r?tt(r)??nt(r):null}function de(e){let r=f(e);return r?!!(r.provider&&r.provider!=="cursor"||r.model&&!ce(r.model)):!1}v();var Sr={codex:{id:"codex",displayName:"Codex (BYO OAuth / Hermes openai-codex)",costTier:"low",authSources:["oauth_local","api_key_env","subscription_hermes"],supportsLowRiskOrchestration:!0,supportsPrivilegedPlatformActions:!1,workerMcpTools:"supported"},cursor:{id:"cursor",displayName:"Cursor / Composer",costTier:"medium",authSources:["oauth_local","api_key_env"],supportsLowRiskOrchestration:!0,supportsPrivilegedPlatformActions:!0,workerMcpTools:"supported"},claude:{id:"claude",displayName:"Claude Code",costTier:"high",authSources:["oauth_local"],supportsLowRiskOrchestration:!0,supportsPrivilegedPlatformActions:!0,workerMcpTools:"supported"}};function N(e){return Sr[e]}function Cr(){return Object.values(Sr)}import{existsSync as Jt}from"node:fs";import{homedir as zt}from"node:os";import $ from"node:path";import{createHash as Pr}from"node:crypto";import{statSync as qt}from"node:fs";import{spawnSync as Ir}from"node:child_process";import{existsSync as wr,readFileSync as Bt}from"node:fs";import b from"node:path";var F=class extends Error{constructor(t){super(`${t} is a batch file that is not a Node CLI shim; it cannot be spawned without a shell. Point the matching KYNVER_*_BIN setting at the real .exe or the CLI's JS entry, or run the daemon inside WSL.`);this.shimPath=t;this.name="UnresolvableWindowsShimError"}shimPath},Lt=".COM;.EXE;.BAT;.CMD";function Ft(e){return e.includes("/")||e.includes("\\")}function $t(e){return(e.PATHEXT||Lt).split(";").map(r=>r.trim().toLowerCase()).filter(r=>r.startsWith("."))}function jt(e){let r=Object.keys(e).find(t=>t.toUpperCase()==="PATH");return r?e[r]??"":""}function Ht(e,r={}){let t=r.env??process.env,n=r.exists??wr,o=$t(t),s=b.win32.extname(e)!=="",i=l=>s?[l]:o.map(u=>`${l}${u}`);if(Ft(e)||b.win32.isAbsolute(e))return i(e).find(l=>n(l))??null;for(let l of jt(t).split(";").map(u=>u.trim()).filter(Boolean)){let u=i(b.win32.join(l,e)).find(c=>n(c));if(u)return u}return null}var Or=/%~?dp0%?\\?([^"%\r\n]+?\.(?:c|m)?js)\b/i,Yt=/^\s*SET\s+"?([A-Za-z_]\w*)=([^"\r\n]*)"?\s*$/i;function Ar(e){return e.replace(/^[\\/]+/,"")}function Vt(e){let r=e.split(/\r?\n/),t=new Map;for(let s of r){let i=Yt.exec(s);i&&t.set(i[1].toUpperCase(),i[2])}let n=r.filter(s=>s.includes("%*")).pop();if(!n)return null;let o=Or.exec(n);if(o)return Ar(o[1]);for(let s of n.matchAll(/%([A-Za-z_]\w*)%/g)){let i=t.get(s[1].toUpperCase()),l=i?Or.exec(i):null;if(l)return Ar(l[1])}return null}function Gt(e,r={}){if((r.platform??process.platform)!=="win32")return{executable:e,prefixArgs:[],kind:"passthrough"};let n=Ht(e,r);if(!n)return{executable:e,prefixArgs:[],kind:"passthrough"};let o=b.win32.extname(n).toLowerCase();if(o!==".cmd"&&o!==".bat")return{executable:n,prefixArgs:[],kind:"exe"};let s=r.readText??(ue=>Bt(ue,"utf8")),i=r.exists??wr,l;try{l=s(n)}catch{throw new F(n)}let u=Vt(l);if(!u)throw new F(n);let c=b.win32.dirname(n),p=b.win32.join(c,u);if(!i(p))throw new F(n);let L=b.win32.join(c,"node.exe");return{executable:i(L)?L:r.nodeExecutable??process.execPath,prefixArgs:[p],kind:"node-shim"}}function E(e,r,t={}){let n=Gt(e,t);return[n.executable,[...n.prefixArgs,...r]]}function y(e){try{let r=qt(e),t=`${e}|${r.size}|${r.mtimeMs}`;return Pr("sha256").update(t).digest("hex").slice(0,16)}catch{return}}function K(e){return Pr("sha256").update(`env:${e}`).digest("hex").slice(0,16)}function g(e,r){for(let t of r){let n=process.env[t]?.trim();if(n)return n}return e}function h(e,r,t={}){let n=t.timeoutMs??8e3;try{let[o,s]=E(e,r),i=Ir(o,s,{windowsHide:!0,encoding:"utf8",timeout:n,env:{...process.env,...t.env,CI:"1",NO_COLOR:"1"}});if(i.status===0)return{ok:!0,note:t.okNote??`${e} ${r.join(" ")}: ok`};let l=(i.stderr||i.stdout||"").trim(),u=t.failPrefix??`${e} ${r.join(" ")} failed`;return{ok:!1,note:l?`${u}: ${l.slice(0,200)}`:u}}catch(o){return{ok:!1,note:o instanceof Error?o.message:`${e} probe failed`}}}function oe(e,r,t={}){let n=t.timeoutMs??8e3;try{let[o,s]=E(e,r);return Ir(o,s,{windowsHide:!0,stdio:"ignore",timeout:n,env:{...process.env,CI:"1",NO_COLOR:"1"}}).status===0?{ok:!0,note:t.okNote??`${e} authenticated`}:{ok:!1,note:t.failNote??`${e} not authenticated`}}catch(o){return{ok:!1,note:o instanceof Error?o.message:`${e} auth probe failed`}}}var Xt="codex";function Qt(){let e=zt();return[process.env.CODEX_HOME?.trim()?$.join($.resolve(process.env.CODEX_HOME.trim()),"auth.json"):null,$.join(e,".codex","auth.json"),$.join(e,".config","codex","auth.json")].filter(t=>!!t)}function Zt(e){return $.dirname(e)}function en(e){let r,t;for(let n of Qt()){if(!Jt(n))continue;r??=n;let o=h(e,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status",env:{CODEX_HOME:Zt(n)}});if(t??=o,o.ok)return{authPath:n,login:o}}return{authPath:r,login:t??h(e,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status"})}}function Tr(e=new Date().toISOString()){let r=g(Xt,["KYNVER_CODEX_BIN","CODEX_BIN"]);if(process.env.CODEX_API_KEY?.trim())return{providerId:"codex",ready:!0,authSource:"api_key_env",sessionFingerprint:K("CODEX_API_KEY"),checkedAt:e,note:"CODEX_API_KEY present (env binding \u2014 cloud credits path, no token stored in Kynver)"};let{authPath:t,login:n}=en(r),o=!!t&&n.ok;return{providerId:"codex",ready:o,authSource:"oauth_local",sessionFingerprint:t?y(t):void 0,checkedAt:e,note:o?"Local Codex OAuth session bound on runner":[n.note,t?void 0:"no Codex auth store found"].filter(Boolean).join("; ")}}import{existsSync as rn}from"node:fs";import{homedir as tn}from"node:os";import Se from"node:path";function nn(){let e=process.env.HERMES_HOME?.trim(),r=e?Se.resolve(e):Se.join(tn(),".hermes");return Se.join(r,"auth.json")}function ie(e=new Date().toISOString()){let r=g("hermes",["KYNVER_HERMES_BIN","HERMES_BIN"]),t=h(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=nn(),o=rn(n),s=oe(r,["auth","status","openai-codex"],{okNote:"hermes openai-codex: logged in",failNote:"hermes openai-codex: not logged in"}),i=t.ok&&s.ok;return{path:"hermes_openai_codex",ready:i,authSource:i?"subscription_hermes":"none",sessionFingerprint:o?y(n):void 0,checkedAt:e,note:i?"Hermes openai-codex subscription session bound (ChatGPT Codex OAuth)":[t.note,s.note,o?void 0:"no ~/.hermes/auth.json"].filter(Boolean).join("; ")}}function j(e=new Date().toISOString()){let r=Tr(e);if(r.ready)return{...r,path:"codex_cli"};let t=ie(e);return t.ready?{providerId:"codex",ready:!0,authSource:t.authSource,sessionFingerprint:t.sessionFingerprint,checkedAt:t.checkedAt,note:t.note,path:"hermes_openai_codex",hermesOpenAiCodex:t}:{providerId:"codex",ready:!1,authSource:"none",checkedAt:e,path:"none",hermesOpenAiCodex:t,note:[r.note,t.note].filter(Boolean).join("; ")||"Codex CLI and Hermes openai-codex unavailable"}}var Nr=["low","medium","high"],Kr={oauth_local:0,subscription_hermes:0,runner_token:1,api_key_env:2,none:3};function Dr(e,r){let t=N(e);return r==="privileged"?t.supportsPrivilegedPlatformActions:r==="low"?t.supportsLowRiskOrchestration:!0}function on(e,r){let t=N(e.providerId),n=N(r.providerId),o=Nr.indexOf(t.costTier)-Nr.indexOf(n.costTier);if(o!==0)return o;let s=Kr[e.binding.authSource]-Kr[r.binding.authSource];return s!==0?s:e.providerId.localeCompare(r.providerId)}function Ce(e){let r=Cr().map(l=>({providerId:l.id,binding:e.inventory.bindings[l.id]})).filter(l=>l.binding.ready&&Dr(l.providerId,e.riskClass));if(r.length===0)return null;let n=[...r].sort(on)[0],o="codex";if(n.providerId===o)return{providerId:n.providerId,binding:n.binding};let s=e.inventory.bindings[o],i;return Dr(o,e.riskClass)?s.ready||(i=s.note??`${o} not bound`):i=`${e.riskClass} orchestration requires privileged-capable provider`,{providerId:n.providerId,binding:n.binding,escalatedFrom:o,escalatedReason:i}}import{existsSync as sn}from"node:fs";import{homedir as an}from"node:os";import ln from"node:path";var un="claude";function cn(){let e=an();return[ln.join(e,".claude",".credentials.json")]}function Wr(e=new Date().toISOString()){let r=g(un,["KYNVER_CLAUDE_BIN","CLAUDE_BIN"]);if(process.env.ANTHROPIC_API_KEY?.trim())return{providerId:"claude",ready:!1,authSource:"api_key_env",sessionFingerprint:K("ANTHROPIC_API_KEY"),checkedAt:e,note:"ANTHROPIC_API_KEY present but scrubbed from worker env (deployment secret) \u2014 use `claude` CLI login (OAuth) for harness workers"};let t=h(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=cn().find(i=>sn(i)),o=oe(r,["auth","status"],{okNote:"claude auth status: authenticated",failNote:"claude auth status: not authenticated"}),s=t.ok&&(o.ok||!!n);return{providerId:"claude",ready:s,authSource:"oauth_local",sessionFingerprint:n?y(n):void 0,checkedAt:e,note:s?"Local Claude Code OAuth session bound on runner":[t.note,o.note,n?void 0:"no ~/.claude/.credentials.json"].filter(Boolean).join("; ")}}import{existsSync as kn}from"node:fs";import{homedir as Rn}from"node:os";import W from"node:path";import{closeSync as Eu,existsSync as gn,mkdirSync as Su,openSync as Cu,statSync as Ou,unlinkSync as Au}from"node:fs";d();import D from"node:path";pe();import{existsSync as H,readdirSync as dn}from"node:fs";import S from"node:path";var pn=/^\d{4}\.\d{1,2}\.\d{1,2}-[a-f0-9]+$/i;function mn(e){let t=e.split("-")[0].split(".");if(t.length!==3)return null;let[n,o,s]=t;return!n||!o||!s?null:+`${n}${o.padStart(2,"0")}${s.padStart(2,"0")}`}function fn(e){let r=S.join(e,"versions");if(!H(r))return null;let t=null,n=-1;for(let o of dn(r,{withFileTypes:!0})){if(!o.isDirectory()||!pn.test(o.name))continue;let s=mn(o.name);s==null||s<=n||(n=s,t=S.join(r,o.name))}return t}function Oe(e){let r=e?.trim()||S.join(process.env.LOCALAPPDATA||"","cursor-agent"),t=S.join(r,"node.exe"),n=S.join(r,"index.js");if(H(t)&&H(n))return{nodeExe:t,indexJs:n,versionDir:r};let o=fn(r);if(!o)return null;let s=S.join(o,"node.exe"),i=S.join(o,"index.js");return!H(s)||!H(i)?null:{nodeExe:s,indexJs:i,versionDir:o}}function hn(e,r,t){return{executable:e,prefixArgs:[r],shell:!1,detached:R(),bundledVersionDir:t}}function Mr(e){if(process.platform==="win32"){let r=/\.(cmd|bat)$/i.test(e),t=/node\.exe$/i.test(e)&&gn(D.join(D.dirname(e),"index.js"));if(r||t||e==="agent"){let o=r?Oe(D.dirname(e)):t?{nodeExe:e,indexJs:D.join(D.dirname(e),"index.js"),versionDir:D.dirname(e)}:Oe();if(o)return hn(o.nodeExe,o.indexJs,o.versionDir);throw new Error("Cursor Agent on Windows has no headless bundled node.exe under %LOCALAPPDATA%\\cursor-agent\\versions\\\u2026. Run `agent login` / update Cursor Agent CLI, use `--provider claude`, or set KYNVER_CURSOR_AGENT_ROOT to the cursor-agent folder.")}}return{executable:e,prefixArgs:[],shell:!1,detached:R()}}import{spawnSync as yn}from"node:child_process";function Ae(e,r=process.env){try{let t;try{t=Mr(e)}catch{t={executable:e,prefixArgs:[]}}let n=yn(t.executable,[...t.prefixArgs,"status","--format","json"],{encoding:"utf8",windowsHide:!0,timeout:8e3,env:{...r,CI:"1",NO_COLOR:"1"}});if(n.status!==0)return{ok:!1,note:"agent status: not authenticated"};let o=(n.stdout||"").trim();if(!o)return{ok:!1,note:"agent status: empty response"};let s;try{s=JSON.parse(o)}catch{return{ok:!1,note:"agent status: unparseable response"}}return typeof s=="object"&&s!==null&&s.isAuthenticated===!0?{ok:!0,note:"agent status: authenticated"}:{ok:!1,note:"agent status: not authenticated"}}catch(t){return{ok:!1,note:t instanceof Error?t.message:"agent status probe failed"}}}function we(e=process.env){let r=[],t=e.KYNVER_CURSOR_AUTH_HOME?.trim();t&&(r.push(W.join(t,".config","cursor","auth.json")),r.push(W.join(t,".cursor-agent","auth.json")));let n=Rn();if(r.push(W.join(n,".config","cursor","auth.json")),r.push(W.join(n,".cursor-agent","auth.json")),process.platform==="win32"){let o=e.LOCALAPPDATA?.trim(),s=e.APPDATA?.trim();o&&r.push(W.join(o,"cursor-agent","auth.json")),s&&r.push(W.join(s,"cursor","auth.json"))}return r}var _n="agent";function Ur(e=new Date().toISOString()){let r=g(_n,["KYNVER_CURSOR_AGENT_BIN","CURSOR_AGENT_BIN"]);if(process.env.CURSOR_API_KEY?.trim())return{providerId:"cursor",ready:!1,authSource:"api_key_env",sessionFingerprint:K("CURSOR_API_KEY"),checkedAt:e,note:"CURSOR_API_KEY present but scrubbed from worker env (deployment secret) \u2014 use `agent login` (OAuth) for harness workers"};let t=h(r,["-v"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=we().find(l=>kn(l)),o=Ae(r),s=!!n||o.ok,i=t.ok&&s;return{providerId:"cursor",ready:i,authSource:"oauth_local",sessionFingerprint:n?y(n):void 0,checkedAt:e,note:i?"Local Cursor/Composer OAuth session bound on runner":[t.note,s?void 0:o.note??"no ~/.config/cursor/auth.json or `agent login` session"].filter(Boolean).join("; ")}}import{existsSync as vn,readFileSync as xn}from"node:fs";import{homedir as bn}from"node:os";import Pe from"node:path";var En=["OPENAI_API_KEY","ANTHROPIC_API_KEY","KYNVER_API_KEY","KYNVER_BASE_URL"];function Sn(){let e=process.env.HERMES_HOME?.trim(),r=e?Pe.resolve(e):Pe.join(bn(),".hermes");return Pe.join(r,".env")}function Cn(e){try{let r=xn(e,"utf8"),t=[];for(let n of En)new RegExp(`^${n}=`,"m").test(r)&&t.push(n);return t}catch{return[]}}function Br(e=new Date().toISOString()){let r=g("hermes",["KYNVER_HERMES_BIN","HERMES_BIN"]),t=h(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=Sn(),o=vn(n),s=o?Cn(n):[],l=s.some(c=>c.endsWith("_API_KEY"))?"api_key_env":o?"oauth_local":"none",u=t.ok&&o;return{adapterId:"hermes",cliAvailable:t.ok,profileBound:o,authSource:l,sessionFingerprint:o?y(n):void 0,checkedAt:e,note:u?`Hermes profile bound (${s.length?`keys: ${s.join(", ")}`:"no API keys detected"})`:[t.note,o?void 0:"no ~/.hermes/.env"].filter(Boolean).join("; ")}}function Lr(e={}){let r=e.nowIso?.()??new Date().toISOString(),t=j(r),n={codex:t,cursor:Ur(r),claude:Wr(r)},o=Object.values(n).filter(s=>s.ready).length;return{generatedAt:r,bindings:n,cloudApiCredits:{anthropicApiKey:!!process.env.ANTHROPIC_API_KEY?.trim(),openaiApiKey:!!process.env.OPENAI_API_KEY?.trim(),codexApiKey:!!process.env.CODEX_API_KEY?.trim()},workerEndpoint:{baseUrlConfigured:!!process.env.KYNVER_WORKER_BASE_URL?.trim(),apiKeyConfigured:!!process.env.KYNVER_WORKER_API_KEY?.trim()},hermes:Br(r),hermesOpenAiCodex:ie(r),codexAdapterPath:t.path,readyCount:o}}var On=[/\bprivileged\b/i,/\bproduction\s+db\b/i,/\bdb:push\b/i,/\bmigration\b/i,/\bdeploy\b/i,/\bsecrets?\b/i,/\bstripe\b/i,/\[require-approval\]/i,/\[operator-only\]/i],An=[/\borchestration\b/i,/\bplan[- ]?progress\b/i,/\bstatus\s+sync\b/i,/\bheartbeat\b/i,/\bboard[- ]?drain\b/i,/\bmaintenance\b/i,/\[orchestration:\s*low-risk\]/i];function Ie(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function wn(e){let r=Ie(e,"executorRef").toLowerCase(),t=Ie(e,"title").toLowerCase(),n=Ie(e,"description").toLowerCase(),o=`${r}
2
2
  ${t}
3
- ${n}`;return On.some(s=>s.test(o))?"privileged":r.includes("provider:claude")||r.includes("deep_review")||r.includes("security")||r.includes("landing")||r.includes("review")||t.startsWith("land:")||r.includes("implementer")||r.includes("repair")||t.includes("implement")?"elevated":An.some(s=>s.test(o))?"low":"elevated"}function Pn(e){let r=N(e.provider),t=e.escalatedFrom&&e.escalatedReason?`Escalated from ${e.escalatedFrom} (${e.escalatedReason}); using ${r.displayName} (${r.costTier} tier)`:`${r.displayName} selected for ${e.riskClass} orchestration (${r.costTier} tier, auth=${e.authSource})`;return{provider:e.provider,model:e.model,authSource:e.authSource,costTier:r.costTier,riskClass:e.riskClass,costRationale:t,routingRule:e.routingRule,escalatedFrom:e.escalatedFrom,escalatedReason:e.escalatedReason}}function In(e){let r=e.inventory??Lr();return e.codexBinding?{...r,bindings:{...r.bindings,codex:e.codexBinding}}:r}function C(e){let r=Pn({provider:e.providerId,model:e.model,authSource:e.binding.authSource,riskClass:e.riskClass,routingRule:e.routingRule,escalatedFrom:e.escalatedFrom,escalatedReason:e.escalatedReason});return{provider:e.providerId,model:e.model,rule:r.routingRule,audit:r}}function Fr(e){let r=e.task??{},t=wn(r),n=In({inventory:e.inventory,codexBinding:e.codexBinding??(e.inventory?null:j())}),o=e.preferLowCost===!1?null:e.explicitProvider?.trim().toLowerCase(),s=e.explicitModel?.trim()||void 0,i=D;if(o==="codex"||o==="provider:codex"){let c=n.bindings.codex;if(!c.ready){let p=Ce({inventory:n,riskClass:t});return C(p?{providerId:p.providerId,binding:p.binding,riskClass:t,routingRule:"orchestration:explicit_codex_unavailable_cost_aware",model:s,escalatedFrom:"codex",escalatedReason:c.note??"codex oauth not bound"}:{providerId:i,binding:n.bindings[i],riskClass:t,routingRule:"orchestration:codex_unavailable_escalate_cursor",model:s,escalatedFrom:"codex",escalatedReason:c.note??"codex oauth not bound"})}return C({providerId:"codex",binding:c,riskClass:t,routingRule:"orchestration:explicit_codex",model:s})}if(o==="cursor"||o==="provider:cursor"){let c=n.bindings.cursor;if(c.ready)return C({providerId:"cursor",binding:c,riskClass:t,routingRule:"orchestration:explicit_cursor",model:s})}if(o==="claude"||o==="provider:claude"){let c=n.bindings.claude;if(c.ready)return C({providerId:"claude",binding:c,riskClass:t,routingRule:"orchestration:explicit_claude",model:s})}let l=Ce({inventory:n,riskClass:t});if(l)return C({providerId:l.providerId,binding:l.binding,riskClass:t,routingRule:`orchestration:cost_aware_${l.providerId}`,model:s,escalatedFrom:l.escalatedFrom,escalatedReason:l.escalatedReason});let u=n.bindings.codex;return C({providerId:i,binding:n.bindings[i],riskClass:t,routingRule:u.ready?"orchestration:inventory_empty_default_cursor":"orchestration:codex_unavailable_default_cursor",model:s,...u.ready?{}:{escalatedFrom:"codex",escalatedReason:u.note??"codex oauth not bound"}})}d();var $r="kynver",jr=["agent_os_context_envelope","agent_os_search_memory","agent_os_search_skills","agent_os_get_skill","agent_os_progress_note"],Tn=jr.map(e=>`mcp__${$r}__${e}`);var V="claude-sonnet-4-6",G="claude-opus-4-8";d();d();var wc=process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.5";function Kn(){return process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.5"}var U=Kn();d();var Te="openai-compatible",id=600*1e3;d();var O="gemini";function A(e=process.env){return e.KYNVER_GEMINI_DEFAULT_MODEL?.trim()||"gemini-2.5-pro"}var B="gemini-api";var Od=600*1e3;var Vr="claude-sonnet-4-6",q="composer-2.5";function m(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function Dn(e){if(!e)return;let r=m(e,"workerModelOverride")||m(e,"modelOverride");return r||`${m(e,"title")}
3
+ ${n}`;return On.some(s=>s.test(o))?"privileged":r.includes("provider:claude")||r.includes("deep_review")||r.includes("security")||r.includes("landing")||r.includes("review")||t.startsWith("land:")||r.includes("implementer")||r.includes("repair")||t.includes("implement")?"elevated":An.some(s=>s.test(o))?"low":"elevated"}function Pn(e){let r=N(e.provider),t=e.escalatedFrom&&e.escalatedReason?`Escalated from ${e.escalatedFrom} (${e.escalatedReason}); using ${r.displayName} (${r.costTier} tier)`:`${r.displayName} selected for ${e.riskClass} orchestration (${r.costTier} tier, auth=${e.authSource})`;return{provider:e.provider,model:e.model,authSource:e.authSource,costTier:r.costTier,riskClass:e.riskClass,costRationale:t,routingRule:e.routingRule,escalatedFrom:e.escalatedFrom,escalatedReason:e.escalatedReason}}function In(e){let r=e.inventory??Lr();return e.codexBinding?{...r,bindings:{...r.bindings,codex:e.codexBinding}}:r}function C(e){let r=Pn({provider:e.providerId,model:e.model,authSource:e.binding.authSource,riskClass:e.riskClass,routingRule:e.routingRule,escalatedFrom:e.escalatedFrom,escalatedReason:e.escalatedReason});return{provider:e.providerId,model:e.model,rule:r.routingRule,audit:r}}function Fr(e){let r=e.task??{},t=wn(r),n=In({inventory:e.inventory,codexBinding:e.codexBinding??(e.inventory?null:j())}),o=e.preferLowCost===!1?null:e.explicitProvider?.trim().toLowerCase(),s=e.explicitModel?.trim()||void 0,i=M;if(o==="codex"||o==="provider:codex"){let c=n.bindings.codex;if(!c.ready){let p=Ce({inventory:n,riskClass:t});return C(p?{providerId:p.providerId,binding:p.binding,riskClass:t,routingRule:"orchestration:explicit_codex_unavailable_cost_aware",model:s,escalatedFrom:"codex",escalatedReason:c.note??"codex oauth not bound"}:{providerId:i,binding:n.bindings[i],riskClass:t,routingRule:"orchestration:codex_unavailable_escalate_cursor",model:s,escalatedFrom:"codex",escalatedReason:c.note??"codex oauth not bound"})}return C({providerId:"codex",binding:c,riskClass:t,routingRule:"orchestration:explicit_codex",model:s})}if(o==="cursor"||o==="provider:cursor"){let c=n.bindings.cursor;if(c.ready)return C({providerId:"cursor",binding:c,riskClass:t,routingRule:"orchestration:explicit_cursor",model:s})}if(o==="claude"||o==="provider:claude"){let c=n.bindings.claude;if(c.ready)return C({providerId:"claude",binding:c,riskClass:t,routingRule:"orchestration:explicit_claude",model:s})}let l=Ce({inventory:n,riskClass:t});if(l)return C({providerId:l.providerId,binding:l.binding,riskClass:t,routingRule:`orchestration:cost_aware_${l.providerId}`,model:s,escalatedFrom:l.escalatedFrom,escalatedReason:l.escalatedReason});let u=n.bindings.codex;return C({providerId:i,binding:n.bindings[i],riskClass:t,routingRule:u.ready?"orchestration:inventory_empty_default_cursor":"orchestration:codex_unavailable_default_cursor",model:s,...u.ready?{}:{escalatedFrom:"codex",escalatedReason:u.note??"codex oauth not bound"}})}d();var $r="kynver",jr=["agent_os_context_envelope","agent_os_search_memory","agent_os_search_skills","agent_os_get_skill","agent_os_progress_note"],Tn=jr.map(e=>`mcp__${$r}__${e}`);var V="claude-sonnet-4-6",G="claude-opus-4-8";d();d();var wc=process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.5";function Kn(){return process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.5"}var U=Kn();d();var Te="openai-compatible",id=600*1e3;d();var O="gemini";function A(e=process.env){return e.KYNVER_GEMINI_DEFAULT_MODEL?.trim()||"gemini-2.5-pro"}var B="gemini-api";var Od=600*1e3;var Vr="claude-sonnet-4-6",q="composer-2.5";function m(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function Mn(e){if(!e)return;let r=m(e,"workerModelOverride")||m(e,"modelOverride");return r||`${m(e,"title")}
4
4
  ${m(e,"description")}
5
- ${m(e,"executorRef")}`.match(/\[(?:worker-)?model:\s*([^\]\n]+)\]/i)?.[1]?.trim()||void 0}function Hr(e){return e.toLowerCase()}function le(e=T()){let r=e.defaultModel?.trim();if(r)return r;let t=process.env.KYNVER_DEFAULT_MODEL?.trim();return t||Vr}function se(e){let r=(e??"").toLowerCase();return!r||r.includes("composer")||r.includes("cursor")||r.includes("codex")||r.startsWith("gpt-")||r.startsWith("gpt5")?"cursor":/^claude[-_]/i.test(r)||/^(?:opus|sonnet|haiku)\b/i.test(r)?"claude":r.startsWith("gemini-")?O:"cursor"}function Un(e,r){let t=e.trim().toLowerCase(),n=r?.trim();return t==="cursor"?{model:q,provider:"cursor",rule:n&&n!=="cursor"?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:t==="claude"||t==="anthropic"?{model:V,provider:"claude",rule:n&&n!=="claude"?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:t==="gemini"||t==="google"?{model:A(),provider:O,rule:n&&n!==O?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:t==="gemini-api"||t==="gemini_api"||t==="google-api"?{model:A(),provider:B,rule:n&&n!==B?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:null}function Yr(e,r){return!!(e.includes("deep")&&e.includes("review")||e.includes("security")||e.includes("plan_author")||e.includes("plan-author")||r.includes("deep review")||r.includes("security review")||e.includes("plan")&&!e.includes("review")&&(e.includes("author")||e.includes("strategy")))}var Bn=new Set(["report_reviewer","deep_reviewer","plan_reviewer"]);function Gr(e,r,t){return Bn.has(e)?G:r.includes("review")||/^review[\s:]/.test(t)||t.includes("critique")?G:V}function qr(e){let r=Hr(m(e,"executorRef")),t=m(e,"title").toLowerCase(),n=m(e,"priority")||"normal",o=Hr(m(e,"roleLane"));if(r.includes("provider:claude")||r.startsWith("claude:")){let i=Gr(o,r,t);return{provider:"claude",model:i,rule:i===G?"factory:claude_review":"factory:claude_implementation"}}if(r.includes("provider:codex")||r.startsWith("codex:"))return{provider:"codex",model:U,rule:"lane:codex_orchestration"};if(r.includes("provider:chatgpt")||r.startsWith("chatgpt:")||r.includes("provider:gpt")||r.startsWith("gpt:")){let i=f(m(e,"executorRef"));return{provider:"codex",...i?.model?{model:i.model}:{model:U},rule:"lane:codex_orchestration"}}if(r.includes("provider:openai")||r.startsWith("openai-compatible:")){let i=f(m(e,"executorRef"));return{provider:Te,...i?.model?{model:i.model}:{},rule:"lane:openai_compatible"}}if(r.includes("provider:gemini-api")||r.startsWith("gemini-api:")){let i=f(m(e,"executorRef"));return{provider:B,...i?.model?{model:i.model}:{model:A()},rule:"lane:gemini_api"}}if(r.includes("provider:gemini")||r.startsWith("gemini:")){let i=f(m(e,"executorRef"));return{provider:O,...i?.model?{model:i.model}:{model:A()},rule:"lane:gemini"}}if(r.includes("cursor")||r.includes("composer")||r.includes("copilot")||o==="implementer"||o==="repair_implementer")return{provider:"cursor",rule:"lane:implementation"};if(r.includes("codex"))return{provider:"codex",model:U,rule:"lane:codex_orchestration"};if(r.includes("landing")||t.startsWith("land:")||t.includes(" merge"))return{provider:"cursor",rule:"lane:landing"};if(r.includes("review")||/^review[\s:]/.test(t)||o.includes("review"))return Yr(r,t)||o==="deep_reviewer"?{provider:"cursor",rule:"lane:deep_review"}:{provider:"cursor",rule:"lane:review"};if(Yr(r,t)||o==="plan_author")return{provider:"cursor",rule:"lane:planning"};if(n==="critical")return{provider:"cursor",rule:"priority:critical"};if(n==="high")return{provider:"cursor",rule:"priority:high"};if(n==="low")return{provider:"cursor",rule:"priority:low"};let s=le();return{model:s,provider:se(s),rule:"default:global"}}function Ln(e){return e?f(m(e,"executorRef")):null}function Fn(e){switch(x(e)){case O:case B:return A();case"claude":return V;case"codex":return U;case"cursor":return q;default:return}}var Ne="explicit:cli_provider",Jr="config:worker_provider";function zr(e,r,t){let n=x(r);return n===e.provider&&e.rule===t?e:{...e,provider:n,model:Fn(n)??e.model,rule:t}}function $n(e,r){let t=r?.trim();return!t||e.rule.startsWith("explicit:")&&e.rule!==Ne?e:zr(e,t,Ne)}function jn(e,r){if(r.explicitProvider?.trim()||Ke(r.task))return e;let t=r.configuredProvider?.trim();if(!t)return e;let n=x(t);return n===D||n===e.provider?e:zr(e,n,Jr)}function Hn(e){let r,t=Ln(e.task),n=e.explicitModel?.trim()?void 0:t?.model?.trim(),o=!e.explicitProvider?.trim()&&t?.provider?.trim()?t.provider.trim():void 0;if(e.explicitModel?.trim()){let u=e.explicitModel.trim(),c=Un(u,e.explicitProvider);c?r=c:r={model:u,provider:e.explicitProvider?.trim()||se(u),rule:"explicit:cli",requestedModel:u}}else if(n)r={model:n,provider:o||se(n),rule:t?.rule??"executor_ref:model",requestedModel:n};else if(e.task&&ae(e.task)){let u=Dn(e.task),c,p;if(u)c=u,p="task:provider_override";else{let L=typeof e.task.roleLane=="string"?e.task.roleLane.toLowerCase():"",We=typeof e.task.executorRef=="string"?e.task.executorRef.toLowerCase():"",ue=typeof e.task.title=="string"?e.task.title.toLowerCase():"";c=Gr(L,We,ue),p=c===G?"factory:claude_review":"factory:claude_implementation"}r={model:c,provider:"claude",rule:p,requestedModel:c}}else if(e.task&&Object.keys(e.task).length>0){let u=qr(e.task);r={...u,requestedModel:u.model}}else{let u=le();r={model:u,provider:e.explicitProvider?.trim()||se(u),rule:"default:global",requestedModel:u}}r=$n(r,e.explicitProvider),r=jn(r,{explicitProvider:e.explicitProvider,task:e.task,configuredProvider:e.configuredProvider});let s=!!e.configuredProvider?.trim()&&x(e.configuredProvider)!==D&&r.rule==="config:worker_provider",i=Xr({routing:r,task:e.task,explicitProvider:e.explicitProvider??(s?r.provider:void 0),explicitProviderIsOperatorOverride:!!e.explicitProviderIsOperatorOverride||s});if(!e.task||Object.keys(e.task).length===0||i.rule==="explicit:model_provider_alias"||i.rule==="explicit:model_provider_alias_overrode_provider"||i.rule==="explicit:cli"||i.rule===Ne||i.rule===Jr||k(i.provider)&&(e.explicitProviderIsOperatorOverride||ae(e.task))||i.provider===Te||i.provider===O||i.provider===B||i.provider==="codex")return i;let l=Fr({task:e.task,explicitProvider:e.explicitProvider??i.provider,explicitModel:i.model,inventory:e.orchestrationInventory??void 0});return{provider:l.provider,model:l.provider==="codex"?l.model??i.model??U:i.model,rule:l.rule,requestedModel:i.requestedModel,orchestrationAudit:l.audit}}function Yn(e,r,t){return e||r||t||le()||V}ne();ne();var D="cursor",Vn=new Set(["claude","opus","anthropic"]),Gn=[/\[worker-provider:\s*claude\]/i,/\[use-claude-worker\]/i,/\[operator-worker-provider:\s*claude\]/i];function J(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function k(e){if(!e?.trim())return!1;let r=e.trim().toLowerCase();return Vn.has(r)?!0:r.includes("claude")||r.includes("opus")}function ae(e){if(!e)return!1;let r=e.workerProviderOverride;if(typeof r=="string"&&k(r))return!0;let t=J(e,"executorRef").toLowerCase();if(t==="provider:claude"||t.startsWith("provider:claude:")||t.includes("claude-worker-override")||t.includes("operator-claude"))return!0;let n=f(J(e,"executorRef"));if(n?.provider&&k(n.provider)||n?.model&&k(qn(n.model)))return!0;let o=J(e,"description");if(Gn.some(i=>i.test(o)))return!0;let s=J(e,"title");return!!/\[use-claude-worker\]/i.test(s)}function qn(e){let r=e.trim().toLowerCase();return/^claude[-_]/.test(r)||/^(?:opus|sonnet|haiku)\b/.test(r)?"claude":r}function Jn(e,r){return{provider:D,model:q,rule:`policy:cursor_default${r}`,requestedModel:e}}var zn=["explicit:","executor_ref:","factory:","task:"];function Xn(e){return zn.some(r=>e.startsWith(r))}function Ke(e){if(!e)return!1;let r=e.workerProviderOverride;return typeof r=="string"&&r.trim()||f(J(e,"executorRef"))?.provider?!0:ae(e)}function Xr(e){let{routing:r,task:t}=e,n=e.explicitProvider?.trim().toLowerCase();if(e.explicitProviderIsOperatorOverride&&k(n))return{...r,provider:"claude",rule:r.rule.startsWith("explicit:")?r.rule:"explicit:operator_provider"};if(n||Xn(r.rule)||Ke(t)||!k(r.provider))return r;let o=r.rule&&r.rule!=="default:global"?`:${r.rule.replace(/:/g,"_")}`:"";return Jn(r.model,o)}function Qn(e){let r=e?.executorRef;return typeof r=="string"?r.trim():""}function Qr(e){return e?.trim()||void 0}function Zn(e){let r=Qn(e.task),t=f(r),n=e.explicitProvider?.trim().toLowerCase(),o=Qr(e.explicitModel??void 0),s=n||t?.provider,i=o||t?.model,l=n||o?"cli":t?.rule??"none";if(!s&&!i)return{ok:!0};!s&&i&&(/^claude[-_]/i.test(i)||/^(?:opus|sonnet|haiku)\b/i.test(i))&&(s="claude");let u=e.routing.provider,c=Qr(e.routing.model),p={provider:u,model:c,rule:e.routing.rule};return s&&s!=="cursor"||r&&de(r)||n&&n!=="cursor"?u==="cursor"?{ok:!1,error:`model_routing_mismatch: requested ${s??"non-cursor"}${i?` model=${i}`:""} (${l}) but routing resolved to cursor (${e.routing.rule})`,requested:{provider:s,model:i,source:l},resolved:p}:i&&c&&i!==c&&!k(u)?{ok:!1,error:`model_routing_mismatch: requested model=${i} (${l}) but routing resolved model=${c} (${e.routing.rule})`,requested:{provider:s,model:i,source:l},resolved:p}:{ok:!0,requested:{provider:s,model:i,source:l},resolved:p}:{ok:!0,resolved:p}}export{q as CURSOR_DEFAULT_MODEL,Vr as GLOBAL_DEFAULT_MODEL,Zn as assessDispatchModelGuard,de as executorRefRequestsNonCursorWorker,qr as inferModelRoutingFromTask,f as parseExecutorRefRoutingIntent,le as resolveGlobalDefaultModel,Yn as resolveModelFallback,Hn as resolveWorkerLaunch};
5
+ ${m(e,"executorRef")}`.match(/\[(?:worker-)?model:\s*([^\]\n]+)\]/i)?.[1]?.trim()||void 0}function Hr(e){return e.toLowerCase()}function le(e=T()){let r=e.defaultModel?.trim();if(r)return r;let t=process.env.KYNVER_DEFAULT_MODEL?.trim();return t||Vr}function se(e){let r=(e??"").toLowerCase();return!r||r.includes("composer")||r.includes("cursor")||r.includes("codex")||r.startsWith("gpt-")||r.startsWith("gpt5")?"cursor":/^claude[-_]/i.test(r)||/^(?:opus|sonnet|haiku)\b/i.test(r)?"claude":r.startsWith("gemini-")?O:"cursor"}function Un(e,r){let t=e.trim().toLowerCase(),n=r?.trim();return t==="cursor"?{model:q,provider:"cursor",rule:n&&n!=="cursor"?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:t==="claude"||t==="anthropic"?{model:V,provider:"claude",rule:n&&n!=="claude"?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:t==="gemini"||t==="google"?{model:A(),provider:O,rule:n&&n!==O?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:t==="gemini-api"||t==="gemini_api"||t==="google-api"?{model:A(),provider:B,rule:n&&n!==B?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:null}function Yr(e,r){return!!(e.includes("deep")&&e.includes("review")||e.includes("security")||e.includes("plan_author")||e.includes("plan-author")||r.includes("deep review")||r.includes("security review")||e.includes("plan")&&!e.includes("review")&&(e.includes("author")||e.includes("strategy")))}var Bn=new Set(["report_reviewer","deep_reviewer","plan_reviewer"]);function Gr(e,r,t){return Bn.has(e)?G:r.includes("review")||/^review[\s:]/.test(t)||t.includes("critique")?G:V}function qr(e){let r=Hr(m(e,"executorRef")),t=m(e,"title").toLowerCase(),n=m(e,"priority")||"normal",o=Hr(m(e,"roleLane"));if(r.includes("provider:claude")||r.startsWith("claude:")){let i=Gr(o,r,t);return{provider:"claude",model:i,rule:i===G?"factory:claude_review":"factory:claude_implementation"}}if(r.includes("provider:codex")||r.startsWith("codex:"))return{provider:"codex",model:U,rule:"lane:codex_orchestration"};if(r.includes("provider:chatgpt")||r.startsWith("chatgpt:")||r.includes("provider:gpt")||r.startsWith("gpt:")){let i=f(m(e,"executorRef"));return{provider:"codex",...i?.model?{model:i.model}:{model:U},rule:"lane:codex_orchestration"}}if(r.includes("provider:openai")||r.startsWith("openai-compatible:")){let i=f(m(e,"executorRef"));return{provider:Te,...i?.model?{model:i.model}:{},rule:"lane:openai_compatible"}}if(r.includes("provider:gemini-api")||r.startsWith("gemini-api:")){let i=f(m(e,"executorRef"));return{provider:B,...i?.model?{model:i.model}:{model:A()},rule:"lane:gemini_api"}}if(r.includes("provider:gemini")||r.startsWith("gemini:")){let i=f(m(e,"executorRef"));return{provider:O,...i?.model?{model:i.model}:{model:A()},rule:"lane:gemini"}}if(r.includes("cursor")||r.includes("composer")||r.includes("copilot")||o==="implementer"||o==="repair_implementer")return{provider:"cursor",rule:"lane:implementation"};if(r.includes("codex"))return{provider:"codex",model:U,rule:"lane:codex_orchestration"};if(r.includes("landing")||t.startsWith("land:")||t.includes(" merge"))return{provider:"cursor",rule:"lane:landing"};if(r.includes("review")||/^review[\s:]/.test(t)||o.includes("review"))return Yr(r,t)||o==="deep_reviewer"?{provider:"cursor",rule:"lane:deep_review"}:{provider:"cursor",rule:"lane:review"};if(Yr(r,t)||o==="plan_author")return{provider:"cursor",rule:"lane:planning"};if(n==="critical")return{provider:"cursor",rule:"priority:critical"};if(n==="high")return{provider:"cursor",rule:"priority:high"};if(n==="low")return{provider:"cursor",rule:"priority:low"};let s=le();return{model:s,provider:se(s),rule:"default:global"}}function Ln(e){return e?f(m(e,"executorRef")):null}function Fn(e){switch(x(e)){case O:case B:return A();case"claude":return V;case"codex":return U;case"cursor":return q;default:return}}var Ne="explicit:cli_provider",Jr="config:worker_provider";function zr(e,r,t){let n=x(r);return n===e.provider&&e.rule===t?e:{...e,provider:n,model:Fn(n)??e.model,rule:t}}function $n(e,r){let t=r?.trim();return!t||e.rule.startsWith("explicit:")&&e.rule!==Ne?e:zr(e,t,Ne)}function jn(e,r){if(r.explicitProvider?.trim()||Ke(r.task))return e;let t=r.configuredProvider?.trim();if(!t)return e;let n=x(t);return n===M||n===e.provider?e:zr(e,n,Jr)}function Hn(e){let r,t=Ln(e.task),n=e.explicitModel?.trim()?void 0:t?.model?.trim(),o=!e.explicitProvider?.trim()&&t?.provider?.trim()?t.provider.trim():void 0;if(e.explicitModel?.trim()){let u=e.explicitModel.trim(),c=Un(u,e.explicitProvider);c?r=c:r={model:u,provider:e.explicitProvider?.trim()||se(u),rule:"explicit:cli",requestedModel:u}}else if(n)r={model:n,provider:o||se(n),rule:t?.rule??"executor_ref:model",requestedModel:n};else if(e.task&&ae(e.task)){let u=Mn(e.task),c,p;if(u)c=u,p="task:provider_override";else{let L=typeof e.task.roleLane=="string"?e.task.roleLane.toLowerCase():"",De=typeof e.task.executorRef=="string"?e.task.executorRef.toLowerCase():"",ue=typeof e.task.title=="string"?e.task.title.toLowerCase():"";c=Gr(L,De,ue),p=c===G?"factory:claude_review":"factory:claude_implementation"}r={model:c,provider:"claude",rule:p,requestedModel:c}}else if(e.task&&Object.keys(e.task).length>0){let u=qr(e.task);r={...u,requestedModel:u.model}}else{let u=le();r={model:u,provider:e.explicitProvider?.trim()||se(u),rule:"default:global",requestedModel:u}}r=$n(r,e.explicitProvider),r=jn(r,{explicitProvider:e.explicitProvider,task:e.task,configuredProvider:e.configuredProvider});let s=!!e.configuredProvider?.trim()&&x(e.configuredProvider)!==M&&r.rule==="config:worker_provider",i=Xr({routing:r,task:e.task,explicitProvider:e.explicitProvider??(s?r.provider:void 0),explicitProviderIsOperatorOverride:!!e.explicitProviderIsOperatorOverride||s});if(!e.task||Object.keys(e.task).length===0||i.rule==="explicit:model_provider_alias"||i.rule==="explicit:model_provider_alias_overrode_provider"||i.rule==="explicit:cli"||i.rule===Ne||i.rule===Jr||k(i.provider)&&(e.explicitProviderIsOperatorOverride||ae(e.task))||i.provider===Te||i.provider===O||i.provider===B||i.provider==="codex")return i;let l=Fr({task:e.task,explicitProvider:e.explicitProvider??i.provider,explicitModel:i.model,inventory:e.orchestrationInventory??void 0});return{provider:l.provider,model:l.provider==="codex"?l.model??i.model??U:i.model,rule:l.rule,requestedModel:i.requestedModel,orchestrationAudit:l.audit}}function Yn(e,r,t){return e||r||t||le()||V}ne();ne();var M="cursor",Vn=new Set(["claude","opus","anthropic"]),Gn=[/\[worker-provider:\s*claude\]/i,/\[use-claude-worker\]/i,/\[operator-worker-provider:\s*claude\]/i];function J(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function k(e){if(!e?.trim())return!1;let r=e.trim().toLowerCase();return Vn.has(r)?!0:r.includes("claude")||r.includes("opus")}function ae(e){if(!e)return!1;let r=e.workerProviderOverride;if(typeof r=="string"&&k(r))return!0;let t=J(e,"executorRef").toLowerCase();if(t==="provider:claude"||t.startsWith("provider:claude:")||t.includes("claude-worker-override")||t.includes("operator-claude"))return!0;let n=f(J(e,"executorRef"));if(n?.provider&&k(n.provider)||n?.model&&k(qn(n.model)))return!0;let o=J(e,"description");if(Gn.some(i=>i.test(o)))return!0;let s=J(e,"title");return!!/\[use-claude-worker\]/i.test(s)}function qn(e){let r=e.trim().toLowerCase();return/^claude[-_]/.test(r)||/^(?:opus|sonnet|haiku)\b/.test(r)?"claude":r}function Jn(e,r){return{provider:M,model:q,rule:`policy:cursor_default${r}`,requestedModel:e}}var zn=["explicit:","executor_ref:","factory:","task:"];function Xn(e){return zn.some(r=>e.startsWith(r))}function Ke(e){if(!e)return!1;let r=e.workerProviderOverride;return typeof r=="string"&&r.trim()||f(J(e,"executorRef"))?.provider?!0:ae(e)}function Xr(e){let{routing:r,task:t}=e,n=e.explicitProvider?.trim().toLowerCase();if(e.explicitProviderIsOperatorOverride&&k(n))return{...r,provider:"claude",rule:r.rule.startsWith("explicit:")?r.rule:"explicit:operator_provider"};if(n||Xn(r.rule)||Ke(t)||!k(r.provider))return r;let o=r.rule&&r.rule!=="default:global"?`:${r.rule.replace(/:/g,"_")}`:"";return Jn(r.model,o)}function Qn(e){let r=e?.executorRef;return typeof r=="string"?r.trim():""}function Qr(e){return e?.trim()||void 0}function Zn(e){let r=Qn(e.task),t=f(r),n=e.explicitProvider?.trim().toLowerCase(),o=Qr(e.explicitModel??void 0),s=n||t?.provider,i=o||t?.model,l=n||o?"cli":t?.rule??"none";if(!s&&!i)return{ok:!0};!s&&i&&(/^claude[-_]/i.test(i)||/^(?:opus|sonnet|haiku)\b/i.test(i))&&(s="claude");let u=e.routing.provider,c=Qr(e.routing.model),p={provider:u,model:c,rule:e.routing.rule};return s&&s!=="cursor"||r&&de(r)||n&&n!=="cursor"?u==="cursor"?{ok:!1,error:`model_routing_mismatch: requested ${s??"non-cursor"}${i?` model=${i}`:""} (${l}) but routing resolved to cursor (${e.routing.rule})`,requested:{provider:s,model:i,source:l},resolved:p}:i&&c&&i!==c&&!k(u)?{ok:!1,error:`model_routing_mismatch: requested model=${i} (${l}) but routing resolved model=${c} (${e.routing.rule})`,requested:{provider:s,model:i,source:l},resolved:p}:{ok:!0,requested:{provider:s,model:i,source:l},resolved:p}:{ok:!0,resolved:p}}export{q as CURSOR_DEFAULT_MODEL,Vr as GLOBAL_DEFAULT_MODEL,Zn as assessDispatchModelGuard,de as executorRefRequestsNonCursorWorker,qr as inferModelRoutingFromTask,f as parseExecutorRefRoutingIntent,le as resolveGlobalDefaultModel,Yn as resolveModelFallback,Hn as resolveWorkerLaunch};
@@ -3,6 +3,6 @@ var l=(e,r,t)=>()=>{if(t)throw t[0];try{return e&&(r=e(e=0)),r}catch(n){throw t=
3
3
  `):""}function N(e){if(!e)return!1;try{return process.kill(e,0),!0}catch{return!1}}function Ce(e){let r=null,t=-1/0;for(let n of e){if(!n)continue;let o=Date.parse(n);Number.isFinite(o)&&o>t&&(t=o,r=n)}return r}function Z(e){return Math.max(0,Math.round((Date.now()-e)/1e3))}var g=l(()=>{"use strict";_e()});import{existsSync as Qr,readFileSync as et}from"node:fs";function Ae(e){return e==="complete"}function we(e){return Ae(e.lastHeartbeatPhase)?e.terminalFinalResult!==void 0&&e.terminalFinalResult!==null?e.terminalFinalResult:e.lastHeartbeatSummary?.trim()||"completed":null}function Oe(e){let r={heartbeatCount:0,lastHeartbeatAt:null,lastHeartbeatPhase:null,lastHeartbeatSummary:null,terminalFinalResult:null,heartbeatBlocker:null,timestampAnomalies:[],lastBoxResourceSnapshot:null,lastPrEvidence:[]};if(!Qr(e))return r;let t=Date.now()+rt,n=new Date(t).toISOString(),o=et(e,"utf8").split(`
4
4
  `).filter(Boolean);for(let s of o){let i=I(s);if(!i||typeof i!="object"||Array.isArray(i))continue;let a=i;if(r.heartbeatCount++,a.ts){let u=String(a.ts),p=Date.parse(u);Number.isFinite(p)&&p>t?r.timestampAnomalies.push({kind:"future_heartbeat_timestamp",observedAt:u,clampedTo:n}):r.lastHeartbeatAt=u}a.phase!==void 0&&a.phase!==null&&(r.lastHeartbeatPhase=String(a.phase)),a.summary!==void 0&&a.summary!==null&&(r.lastHeartbeatSummary=String(a.summary)),Ae(r.lastHeartbeatPhase)&&(r.terminalFinalResult=xe(a)),r.heartbeatBlocker=a.blocker?String(a.blocker):null,a.boxResourceSnapshot&&typeof a.boxResourceSnapshot=="object"&&!Array.isArray(a.boxResourceSnapshot)&&(r.lastBoxResourceSnapshot=a.boxResourceSnapshot),Array.isArray(a.prEvidence)&&(r.lastPrEvidence=a.prEvidence.filter(u=>!!u&&typeof u=="object"&&typeof u.prUrl=="string"))}return r}var rt,Ie=l(()=>{"use strict";Se();g();rt=6e4});function Te(e){return e?(e.split("/").pop()??e).replace(/\.exe$/i,"").toLowerCase():null}function K(e){if(!e)return[];let r=[],t="",n,o=!1;for(let s of e){if(o){t+=s,o=!1;continue}if(s==="\\"){o=!0;continue}if(n){s===n?n=void 0:t+=s;continue}if(s==='"'||s==="'"){n=s;continue}if(/\s/.test(s)){t&&(r.push(t),t="");continue}t+=s}return t&&r.push(t),r}function Ne(e){let r=Te(e[0]);return!!(r&&tt.has(r))}function ot(e){let r=e.trim();return r.includes("/")?r.split("/").pop()??r:r}function st(e){if(!e||e.includes("*"))return null;let r=ot(e);return!r||r.includes("/")?null:/\.(?:json|md|mjs|cjs|js|ts|tsx|yaml|yml)$/iu.test(r)?r:null}function Ke(e){return!e||e.includes("/")||e.includes("*")?!1:/\.(?:json|md|mjs|cjs|js|ts|tsx|yaml|yml)$/iu.test(e)}function Q(e){if(!e)return!1;let r=e.trim();return r.startsWith("!")&&!r.includes("/")&&!r.endsWith("/**")}function it(e){if(!e.startsWith("--glob="))return e;let r=e.slice(7);return r.startsWith("!")&&!r.includes("/")&&!r.endsWith("/**")?`--glob=${r}/**`:e}function at(e){let r=[];for(let t=1;t<e.length;t+=1){let n=e[t];if(n){if(n==="--"){r.push(...e.slice(t+1));break}if(n.startsWith("-")){if(n.includes("="))continue;Pe.has(n)&&(t+=1);continue}r.push(n)}}return r}function lt(e){let r=!1,t=e.map((o,s)=>{let i=it(o),a=e[s-1];return a&&Pe.has(a)&&o.startsWith("!")&&!o.includes("/")&&!o.endsWith("/**")&&(i=`${o}/**`),i!==o&&(r=!0),i}),n=at(t);if(n.length===2){let[o,s]=n;if(Q(s))return{argv:[t[0]??"rg",o,"-g",`${s}/**`,"."],changed:!0};let i=st(s);if(i)return{argv:[t[0]??"rg","-g",i,o,"."],changed:!0}}return r&&n.length===1?{argv:[...t,"."],changed:!0}:{argv:t,changed:r}}function We(e){for(let r=1;r<e.length;r+=1){let t=e[r];if(t&&(t==="-c"||t==="-lc"||t==="-cl"||/^-[a-zA-Z]*c[a-zA-Z]*$/u.test(t)))return r+1}return-1}function W(e){let r=e.trim();if(!r)return{command:r,wrapped:!1};let t=K(r);if(!t.length)return{command:r,wrapped:!1};let n=Te(t[0]);if(!n||!nt.has(n))return{command:r,wrapped:!1};let o=We(t);if(o<0||o>=t.length)return{command:r,wrapped:!1};let s=t.slice(o).join(" ").trim();return s?{command:s,wrapped:!0}:{command:r,wrapped:!1}}function ut(e,r){let t=e.trim(),n=K(t),o=We(n);if(o<0)return r;let s=n.slice(0,o).join(" "),i=r.includes("'")?`"${r.replace(/"/g,'\\"')}"`:`'${r}'`;return`${s} ${i}`}function ct(e){let r=e.trim(),t=W(r),n=K(t.command);if(!n.length||!Ne(n))return{segment:r,changed:!1};let o=lt(n);if(!o.changed)return{segment:r,changed:!1};let s=o.argv.join(" ");return t.wrapped?{segment:ut(r,s),changed:!0}:{segment:s,changed:!0}}function ee(e){let r=e.trim();if(!r)return{command:r,changed:!1};let t=r.includes("&&")?" && ":r.includes("||")?" || ":"; ",n=r.split(/\s*(?:&&|\|\||;)\s*/u),o=!1,s=n.map(i=>{let a=ct(i);return a.changed&&(o=!0),a.segment});return o?{command:s.join(t),changed:!0}:{command:r,changed:!1}}function Ue(e){let r=W(e).command,t=K(r.trim());return t.length&&Ne(t)?!0:/\b(rg|ripgrep)\b/i.test(r)}function Be(e){if(!e)return{};let r=e.match(/search\s+"(.+)"\s+in\s+([^()]+?)(?:\s*\(|$)/iu);if(r)return{pattern:r[1],target:r[2]?.trim()};let t=e.match(/^search\s+"(.+)"\s+in\s+(.+)$/iu);return t?{pattern:t[1],target:t[2]?.trim()}:{}}function dt(e){let{pattern:r,target:t}=Be(e);return r?Q(t)?{kind:"rg_exclude_syntax",pattern:r,target:t}:Ke(t)?{kind:"bad_scope",pattern:r,target:t}:{kind:"not_repo_search",pattern:r,target:t}:{kind:"not_repo_search"}}function mt(e){let{pattern:r,target:t}=Be(e);if(!r)return null;if(Q(t)){let n=`${t.trim()}/**`;return{command:`rg "${r}" -g '${n}' .`,changed:!0}}return t&&Ke(t)?{command:`rg -g ${t} "${r}" .`,changed:!0}:null}function pt(e){if(e.kind==="bad_scope"&&e.pattern&&e.target)return`Use \`rg -g '${e.target}' ${e.pattern} .\` from the repo root instead of treating ${e.target} as a folder.`;if(e.kind==="rg_exclude_syntax"&&e.pattern){let r=e.target?`${e.target.trim()}/**`:"!node_modules/**";return`Repo search scope \`${e.target??"!node_modules"}\` is not a valid ripgrep path. Use \`rg "${e.pattern}" -g '${r}' .\` from the repo root (exclude globs need a \`/**\` suffix).`}return e.kind==="no_matches"&&e.pattern?`No matches for "${e.pattern}". Try a broader pattern, drop overly short tokens, or search from the repo root with \`rg "${e.pattern}" .\`.`:null}function ft(e){let r=e.match(/search\s+"(.+)"\s+in\s+([^()]+?)(?:\s*\(agent\)|\s*failed|$)/iu);return r?`search "${r[1]}" in ${r[2]?.trim()}`:null}function re(e){let r=e.meta?.trim()||(e.command?ft(e.command):null)||null;if(r){let t=dt(r),n=pt(t);if(n)return n;let o=mt(r);if(o?.changed)return`Repo search used an invalid scope. Retry with: \`${o.command}\`.`}if(e.command&&/\b(rg|ripgrep)\b/i.test(e.command)){let t=ee(e.command);if(t.changed)return`Ripgrep scope may be invalid. Retry with: \`${t.command}\`.`;if(e.exitCode===1)return"Ripgrep returned no matches (exit 1). Try a broader pattern or search from the repo root."}return null}var tt,nt,Pe,De=l(()=>{"use strict";tt=new Set(["rg","ripgrep","grep"]),nt=new Set(["bash","sh","dash","zsh"]),Pe=new Set(["-e","--regexp","-f","--file","-m","--max-count","-A","--after-context","-B","--before-context","-C","--context","-g","--glob","--iglob"])});function E(e,r=200){let t=e.replace(/\s+/g," ").trim();return t.length>r?`${t.slice(0,r-1)}\u2026`:t}function ht(e){let r=e.trim();if(!r)return null;if(r.startsWith("{"))try{return JSON.parse(r)}catch{}let t=r.indexOf("{"),n=r.lastIndexOf("}");if(t>=0&&n>t)try{return JSON.parse(r.slice(t,n+1))}catch{return null}return null}function v(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function kt(e){let r=e.metadata;if(!v(r))return null;let t=r.vulnerabilities;if(!v(t))return null;let n=s=>typeof t[s]=="number"?t[s]:0,o={info:n("info"),low:n("low"),moderate:n("moderate"),high:n("high"),critical:n("critical"),total:n("total")};return typeof t.total!="number"&&!o.critical&&!o.high&&!o.moderate&&!o.low&&!o.info?null:o}function bt(e){let r=[];e.critical&&r.push(`${e.critical} critical`),e.high&&r.push(`${e.high} high`),e.moderate&&r.push(`${e.moderate} moderate`),e.low&&r.push(`${e.low} low`),e.info&&r.push(`${e.info} info`);let t=r.length?r.join(", "):"see report";return`npm audit: ${e.total} vulnerabilit${e.total===1?"y":"ies"} (${t}) \u2014 remediation required`}function Rt(e,r){let t=e.error;if(v(t)){let s=typeof t.summary=="string"?t.summary.trim():"",i=typeof t.code=="string"?t.code.trim():"";if(s)return i?`${i}: ${s}`:s;if(i)return i}let n=typeof e.message=="string"?e.message.trim():"";if(n)return n;let o=r.trim();return o?E(o.split(`
5
5
  `).find(Boolean)??o,160):"npm audit failed"}function xt(e){let r=`${e.stdout}
6
- ${e.stderr}`.trim(),t=ht(r);if(!t||!v(t)){let o=E(r||`exit ${e.exitCode}`,180);return{kind:"command_failure",exitCode:e.exitCode,summary:`npm audit failed (invalid or missing JSON): ${o}`,parseError:"invalid_json"}}if(v(t.error))return{kind:"command_failure",exitCode:e.exitCode,summary:`npm audit command failed: ${Rt(t,e.stderr)}`};let n=kt(t);return n?e.exitCode===0&&n.total===0?{kind:"success",exitCode:0,summary:"npm audit: no vulnerabilities reported",audit:n}:{kind:"audit_findings",exitCode:e.exitCode,summary:bt(n),audit:n}:{kind:"command_failure",exitCode:e.exitCode,summary:"npm audit failed: JSON response missing vulnerability metadata",parseError:"missing_metadata"}}function St(e){return gt.test(e)}function _t(e){let r=W(e).command;return Me.test(e)||Me.test(r)||Ue(e)}function Et(e){let r=re({command:e.command,exitCode:e.exitCode});if(e.exitCode===0)return{kind:"success",exitCode:0,summary:"ripgrep finished (exit 0)"};if(e.exitCode===1){let n=(e.stderr||e.interleaved).trim();if(n&&yt.test(n)){let i=E(n,160);return{kind:"command_failure",exitCode:1,summary:r??`ripgrep failed (exit 1): ${i}`}}let o=ee(e.command),s=o.changed&&!r?` Retry with: \`${o.command}\`.`:"";return{kind:"search_no_matches",exitCode:1,summary:r??`ripgrep: no matches (exit 1).${s} Try a broader pattern or search from the repo root.`}}let t=E(e.interleaved||e.stdout||e.stderr||`exit ${e.exitCode}`,180);return{kind:"command_failure",exitCode:e.exitCode,summary:r??`ripgrep failed (exit ${e.exitCode}): ${t}`}}function Fe(e){let r=e.stdout??"",t=e.stderr??"",n=e.interleavedOutput??"";if(St(e.command)){let i=r.trim()||n.trim()||t.trim();return xt({exitCode:e.exitCode,stdout:i,stderr:t})}if(_t(e.command))return Et({command:e.command,exitCode:e.exitCode,stdout:r,stderr:t,interleaved:n});let o=re({command:e.command,exitCode:e.exitCode});if(o&&e.exitCode!==0)return{kind:"command_failure",exitCode:e.exitCode,summary:o};if(e.exitCode===0)return{kind:"success",exitCode:0,summary:"command succeeded (exit 0)"};let s=E(n||r||t||`exit ${e.exitCode}`,180);return{kind:"command_failure",exitCode:e.exitCode,summary:`command failed (exit ${e.exitCode}): ${s}`}}var gt,Me,yt,Le=l(()=>{"use strict";De();gt=/\bnpm\s+audit\b/i,Me=/\b(rg|ripgrep)\b/i,yt=/\b(error|invalid|unknown|panic|not found)\b/i});function C(e){return typeof e=="string"&&vt.test(e.trim())}function U(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let r=e;return r.is_error===!0||r.providerTerminalError===!0||typeof r.subtype=="string"&&/^error(?:_|$)/.test(r.subtype)}var vt,B=l(()=>{"use strict";vt=/^(?:provider authentication failed:\s*)?(?:(?:Failed to authenticate|authentication (?:failed|error))(?::\s*[^\n.!?]+)?|OAuth session expired and could not be refreshed)[.!]?$/i});function te(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function Ct(e){if(!e)return;let r=typeof e.input_tokens=="number"?e.input_tokens:void 0,t=typeof e.output_tokens=="number"?e.output_tokens:void 0;if(!((r===void 0||r<0)&&(t===void 0||t<0)))return{...r!==void 0&&r>=0?{inputTokens:r}:{},...t!==void 0&&t>=0?{outputTokens:t}:{}}}function $e(e){if(e.event==="step_update"&&te(e.step_update)){let s=e.step_update;return s.step_type==="tool"&&typeof s.tool_name=="string"&&s.tool_name.trim()?{currentTool:s.tool_name.trim()}:null}if(e.event!=="result"||!te(e.result))return null;let r=e.result,t=typeof r.status=="string"?r.status.toUpperCase():"";if(t!=="SUCCESS"&&t!=="ERROR")return null;let n=te(r.usage)?Ct(r.usage):void 0;if(t==="ERROR"){let s=typeof r.error=="string"&&r.error.trim()?r.error.trim():"antigravity cli result error";return{...n?{usage:n}:{},terminal:{ok:!1,finalResult:null,error:s}}}let o=typeof r.response=="string"?r.response.trim():"";return{...n?{usage:n}:{},terminal:{ok:!0,finalResult:o||"completed",error:null}}}var He=l(()=>{"use strict"});function ne(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function je(){return{assistantText:""}}function At(e,r){if(!(r.role!=="assistant"||typeof r.content!="string")){if(r.delta===!0){e.assistantText+=r.content;return}e.assistantText=r.content}}function wt(e){let r=typeof e.input_tokens=="number"?e.input_tokens:void 0,t=typeof e.output_tokens=="number"?e.output_tokens:void 0,o=(ne(e.models)?Object.keys(e.models):[]).find(s=>s.trim())?.trim();if(!(r===void 0&&t===void 0&&!o))return{...r!==void 0&&r>=0?{inputTokens:r}:{},...t!==void 0&&t>=0?{outputTokens:t}:{},...o?{model:o}:{}}}function Ot(e){return e.type!=="result"||e.status!=="success"&&e.status!=="error"?!1:typeof e.result!="string"}function Ye(e,r){if(e.type==="message"&&(e.role==="assistant"||e.role==="user"))return At(r,e),{};if(e.type==="tool_use"&&typeof e.tool_name=="string"&&e.tool_name.trim())return{currentTool:e.tool_name.trim()};if(!Ot(e))return null;let t=ne(e.stats)?wt(e.stats):void 0;if(e.status==="error"){let o=ne(e.error)&&typeof e.error.message=="string"?e.error.message:"gemini cli result error";return{...t?{usage:t}:{},terminal:{ok:!1,finalResult:null,error:o}}}let n=r.assistantText.trim();return{...t?{usage:t}:{},terminal:{ok:!0,finalResult:n||"completed",error:null}}}var Ve=l(()=>{"use strict"});import{existsSync as It,readFileSync as Pt}from"node:fs";function Tt(e){let r=e.timestamp_ms;return e.timestamp||e.ts||(r?new Date(r).toISOString():void 0)}function Nt(e){if(!e)return null;for(let r of Object.keys(e))if(r.endsWith("ToolCall")){let t=r.slice(0,-8);return t.length?t:r}return null}function Kt(e,r){e.finalResult=r.result||r.subtype||r.terminal_reason||"completed",U(r)&&(e.providerTerminalError=!0,e.error=String(r.result||r.api_error_status||"stream result error"))}function R(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:void 0}function Wt(e){let r=e.usage;return r&&typeof r=="object"&&!Array.isArray(r)?r:null}function Ut(e){if(typeof e.model=="string"&&e.model.trim())return e.model.trim();let r=e.modelUsage;if(r&&typeof r=="object"&&!Array.isArray(r)){let t=Object.keys(r)[0];if(t?.trim())return t.trim()}}function Bt(e,r){let t=Wt(r);if(!t)return;let n=R(t.input_tokens)??R(t.inputTokens)??R(t.prompt_tokens),o=R(t.output_tokens)??R(t.outputTokens)??R(t.completion_tokens);if(n===void 0&&o===void 0)return;let s=Ut(r)??e.usage?.model;e.usage={...n!==void 0?{inputTokens:n}:{},...o!==void 0?{outputTokens:o}:{},...s?{model:s}:{}}}function Dt(e){if(e.type!=="tool_call"||e.subtype!=="completed")return null;let t=(e.tool_call&&typeof e.tool_call=="object"&&!Array.isArray(e.tool_call)?e.tool_call:null)?.shellToolCall;if(!t||typeof t!="object"||Array.isArray(t))return null;let n=t,o=n.args,s=o&&typeof o=="object"&&!Array.isArray(o)&&typeof o.command=="string"?String(o.command):"",i=n.result;if(!i||typeof i!="object"||Array.isArray(i))return null;let a=i.success??i.failure;if(!a||typeof a!="object"||Array.isArray(a))return null;let u=a,p=typeof u.exitCode=="number"?u.exitCode:0;return{command:s,exitCode:p,stdout:typeof u.stdout=="string"?u.stdout:"",stderr:typeof u.stderr=="string"?u.stderr:"",interleaved:typeof u.interleavedOutput=="string"?u.interleavedOutput:""}}function Mt(e,r){r.kind==="success"||r.kind==="search_no_matches"||(e.lastShellOutcome=r)}function Ge(e){let r={firstEventAt:null,lastEventAt:null,currentTool:null,finalResult:null,error:null,lastShellOutcome:null,usage:null};if(!It(e))return r;let t=Pt(e,"utf8").split(`
6
+ ${e.stderr}`.trim(),t=ht(r);if(!t||!v(t)){let o=E(r||`exit ${e.exitCode}`,180);return{kind:"command_failure",exitCode:e.exitCode,summary:`npm audit failed (invalid or missing JSON): ${o}`,parseError:"invalid_json"}}if(v(t.error))return{kind:"command_failure",exitCode:e.exitCode,summary:`npm audit command failed: ${Rt(t,e.stderr)}`};let n=kt(t);return n?e.exitCode===0&&n.total===0?{kind:"success",exitCode:0,summary:"npm audit: no vulnerabilities reported",audit:n}:{kind:"audit_findings",exitCode:e.exitCode,summary:bt(n),audit:n}:{kind:"command_failure",exitCode:e.exitCode,summary:"npm audit failed: JSON response missing vulnerability metadata",parseError:"missing_metadata"}}function St(e){return gt.test(e)}function _t(e){let r=W(e).command;return Me.test(e)||Me.test(r)||Ue(e)}function Et(e){let r=re({command:e.command,exitCode:e.exitCode});if(e.exitCode===0)return{kind:"success",exitCode:0,summary:"ripgrep finished (exit 0)"};if(e.exitCode===1){let n=(e.stderr||e.interleaved).trim();if(n&&yt.test(n)){let i=E(n,160);return{kind:"command_failure",exitCode:1,summary:r??`ripgrep failed (exit 1): ${i}`}}let o=ee(e.command),s=o.changed&&!r?` Retry with: \`${o.command}\`.`:"";return{kind:"search_no_matches",exitCode:1,summary:r??`ripgrep: no matches (exit 1).${s} Try a broader pattern or search from the repo root.`}}let t=E(e.interleaved||e.stdout||e.stderr||`exit ${e.exitCode}`,180);return{kind:"command_failure",exitCode:e.exitCode,summary:r??`ripgrep failed (exit ${e.exitCode}): ${t}`}}function Fe(e){let r=e.stdout??"",t=e.stderr??"",n=e.interleavedOutput??"";if(St(e.command)){let i=r.trim()||n.trim()||t.trim();return xt({exitCode:e.exitCode,stdout:i,stderr:t})}if(_t(e.command))return Et({command:e.command,exitCode:e.exitCode,stdout:r,stderr:t,interleaved:n});let o=re({command:e.command,exitCode:e.exitCode});if(o&&e.exitCode!==0)return{kind:"command_failure",exitCode:e.exitCode,summary:o};if(e.exitCode===0)return{kind:"success",exitCode:0,summary:"command succeeded (exit 0)"};let s=E(n||r||t||`exit ${e.exitCode}`,180);return{kind:"command_failure",exitCode:e.exitCode,summary:`command failed (exit ${e.exitCode}): ${s}`}}var gt,Me,yt,Le=l(()=>{"use strict";De();gt=/\bnpm\s+audit\b/i,Me=/\b(rg|ripgrep)\b/i,yt=/\b(error|invalid|unknown|panic|not found)\b/i});function C(e){return typeof e=="string"&&vt.test(e.trim())}function U(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let r=e;return r.is_error===!0||r.providerTerminalError===!0||typeof r.subtype=="string"&&/^error(?:_|$)/.test(r.subtype)}var vt,B=l(()=>{"use strict";vt=/^(?:provider authentication failed:\s*)?(?:(?:Failed to authenticate|authentication (?:failed|error))(?::\s*[^\n.!?]+)?|OAuth session expired and could not be refreshed)[.!]?$/i});function te(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function Ct(e){if(!e)return;let r=typeof e.input_tokens=="number"?e.input_tokens:void 0,t=typeof e.output_tokens=="number"?e.output_tokens:void 0;if(!((r===void 0||r<0)&&(t===void 0||t<0)))return{...r!==void 0&&r>=0?{inputTokens:r}:{},...t!==void 0&&t>=0?{outputTokens:t}:{}}}function $e(e){if(e.event==="step_update"&&te(e.step_update)){let s=e.step_update,i=s.step_type==="tool"&&typeof s.tool_name=="string"&&s.tool_name.trim()?s.tool_name.trim():void 0,a=typeof s.text_delta=="string"?s.text_delta:void 0;return!i&&a===void 0?null:{...i?{currentTool:i}:{},...a!==void 0?{textDelta:a}:{}}}if(e.event!=="result"||!te(e.result))return null;let r=e.result,t=typeof r.status=="string"?r.status.toUpperCase():"";if(t!=="SUCCESS"&&t!=="ERROR")return null;let n=te(r.usage)?Ct(r.usage):void 0;if(t==="ERROR"){let s=typeof r.error=="string"&&r.error.trim()?r.error.trim():"antigravity cli result error";return{...n?{usage:n}:{},terminal:{ok:!1,finalResult:null,error:s}}}let o=typeof r.response=="string"?r.response.trim():"";return{...n?{usage:n}:{},terminal:{ok:!0,finalResult:o||"completed",error:null}}}var He=l(()=>{"use strict"});function ne(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function je(){return{assistantText:""}}function At(e,r){if(!(r.role!=="assistant"||typeof r.content!="string")){if(r.delta===!0){e.assistantText+=r.content;return}e.assistantText=r.content}}function wt(e){let r=typeof e.input_tokens=="number"?e.input_tokens:void 0,t=typeof e.output_tokens=="number"?e.output_tokens:void 0,o=(ne(e.models)?Object.keys(e.models):[]).find(s=>s.trim())?.trim();if(!(r===void 0&&t===void 0&&!o))return{...r!==void 0&&r>=0?{inputTokens:r}:{},...t!==void 0&&t>=0?{outputTokens:t}:{},...o?{model:o}:{}}}function Ot(e){return e.type!=="result"||e.status!=="success"&&e.status!=="error"?!1:typeof e.result!="string"}function Ye(e,r){if(e.type==="message"&&(e.role==="assistant"||e.role==="user"))return At(r,e),{};if(e.type==="tool_use"&&typeof e.tool_name=="string"&&e.tool_name.trim())return{currentTool:e.tool_name.trim()};if(!Ot(e))return null;let t=ne(e.stats)?wt(e.stats):void 0;if(e.status==="error"){let o=ne(e.error)&&typeof e.error.message=="string"?e.error.message:"gemini cli result error";return{...t?{usage:t}:{},terminal:{ok:!1,finalResult:null,error:o}}}let n=r.assistantText.trim();return{...t?{usage:t}:{},terminal:{ok:!0,finalResult:n||"completed",error:null}}}var Ve=l(()=>{"use strict"});import{existsSync as It,readFileSync as Pt}from"node:fs";function Tt(e){let r=e.timestamp_ms;return e.timestamp||e.ts||(r?new Date(r).toISOString():void 0)}function Nt(e){if(!e)return null;for(let r of Object.keys(e))if(r.endsWith("ToolCall")){let t=r.slice(0,-8);return t.length?t:r}return null}function Kt(e,r){e.finalResult=r.result||r.subtype||r.terminal_reason||"completed",U(r)&&(e.providerTerminalError=!0,e.error=String(r.result||r.api_error_status||"stream result error"))}function R(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:void 0}function Wt(e){let r=e.usage;return r&&typeof r=="object"&&!Array.isArray(r)?r:null}function Ut(e){if(typeof e.model=="string"&&e.model.trim())return e.model.trim();let r=e.modelUsage;if(r&&typeof r=="object"&&!Array.isArray(r)){let t=Object.keys(r)[0];if(t?.trim())return t.trim()}}function Bt(e,r){let t=Wt(r);if(!t)return;let n=R(t.input_tokens)??R(t.inputTokens)??R(t.prompt_tokens),o=R(t.output_tokens)??R(t.outputTokens)??R(t.completion_tokens);if(n===void 0&&o===void 0)return;let s=Ut(r)??e.usage?.model;e.usage={...n!==void 0?{inputTokens:n}:{},...o!==void 0?{outputTokens:o}:{},...s?{model:s}:{}}}function Dt(e){if(e.type!=="tool_call"||e.subtype!=="completed")return null;let t=(e.tool_call&&typeof e.tool_call=="object"&&!Array.isArray(e.tool_call)?e.tool_call:null)?.shellToolCall;if(!t||typeof t!="object"||Array.isArray(t))return null;let n=t,o=n.args,s=o&&typeof o=="object"&&!Array.isArray(o)&&typeof o.command=="string"?String(o.command):"",i=n.result;if(!i||typeof i!="object"||Array.isArray(i))return null;let a=i.success??i.failure;if(!a||typeof a!="object"||Array.isArray(a))return null;let u=a,p=typeof u.exitCode=="number"?u.exitCode:0;return{command:s,exitCode:p,stdout:typeof u.stdout=="string"?u.stdout:"",stderr:typeof u.stderr=="string"?u.stderr:"",interleaved:typeof u.interleavedOutput=="string"?u.interleavedOutput:""}}function Mt(e,r){r.kind==="success"||r.kind==="search_no_matches"||(e.lastShellOutcome=r)}function Ge(e){let r={firstEventAt:null,lastEventAt:null,currentTool:null,finalResult:null,error:null,lastShellOutcome:null,usage:null};if(!It(e))return r;let t=Pt(e,"utf8").split(`
7
7
  `).filter(Boolean),n=null,o=je();for(let s of t){let i=I(s);if(!i||typeof i!="object"||Array.isArray(i))continue;if(i.type==="turn.started"&&(n=null,r.finalResult=null),i.type==="item.completed"){let d=i.item;if(d&&typeof d=="object"&&!Array.isArray(d)){let f=d;f.type==="agent_message"&&typeof f.text=="string"&&f.text.trim()&&(n=f.text)}}i.type==="turn.completed"&&n&&!r.providerTerminalError&&(r.finalResult=n,n=null);let a=Tt(i);if(a&&(r.firstEventAt||=a,r.lastEventAt=a),i.type==="stream_event"&&i.event&&typeof i.event=="object"&&i.event.type==="content_block_start"){let d=i.event.content_block;d?.type==="tool_use"&&(r.currentTool=String(d.name||"tool"))}if(i.type==="assistant"&&i.message&&typeof i.message=="object"){let d=i.message.content;if(Array.isArray(d)){let f=d.find(y=>y?.type==="tool_use");f&&(r.currentTool=String(f.name||r.currentTool))}}if(i.type==="tool_call"&&i.subtype==="started"){let d=i.tool_call&&typeof i.tool_call=="object"&&!Array.isArray(i.tool_call)?i.tool_call:void 0,f=Nt(d);f&&(r.currentTool=f)}let u=Dt(i);u&&Mt(r,Fe({command:u.command,exitCode:u.exitCode,stdout:u.stdout,stderr:u.stderr,interleavedOutput:u.interleaved}));let p=$e(i),m=p?null:Ye(i,o),c=p??m;if(c?.currentTool&&(r.currentTool=c.currentTool),c?.usage&&(r.usage={...r.usage??{},...c.usage}),c?.terminal?c.terminal.ok?r.finalResult=c.terminal.finalResult:(r.finalResult=null,r.providerTerminalError=!0,r.error=c.terminal.error):i.type==="result"&&Kt(r,i),i.type==="turn.failed"){n=null,r.finalResult=null,r.providerTerminalError=!0;let d=i.error;r.error=typeof d?.message=="string"?d.message:"provider turn failed"}Bt(r,i)}return r}var ze=l(()=>{"use strict";Le();g();B();He();Ve()});function Je(e,r=240){let t=e.replace(/\s+/g," ").trim();return t.length>r?`${t.slice(0,r-1)}\u2026`:t}function oe(e){let r=(e??"").trim();if(!r)return null;if(C(r))return{blocked:!0,reason:`provider authentication failed: ${Je(r)}`};for(let t of Ft)if(t.test.test(r))return{blocked:!0,reason:`${t.label}: ${Je(r)}`};return null}var Ft,qe=l(()=>{"use strict";B();Ft=[{test:/(?:claude provider refuses to spawn: worker prompt is empty after argv assembly|Input must be provided (?:either )?through stdin or as a prompt argument)/i,label:"provider prompt delivery failed"},{test:/\b(?:invalid|unknown|unsupported|unrecognized)\b[^.\n]*\bmodel\b/i,label:"provider rejected the requested model"},{test:/\bmodel\b[^.\n]*\b(?:not\s+(?:found|supported|available|recognized|valid)|is\s+not\s+valid|does\s+not\s+exist)/i,label:"provider rejected the requested model"},{test:/\b(?:did you mean|available models|choose (?:a|one of)|supported models)\b/i,label:"provider rejected the requested model"},{test:/model preflight failed/i,label:"model/provider preflight failed"},{test:/\b(?:command not found|ENOENT|is the .*CLI on PATH|executable not found|no such file or directory)\b/i,label:"provider CLI is missing or not on PATH"},{test:/\bfailed to spawn\b/i,label:"provider failed to spawn the worker process"},{test:/\b(?:not logged in|unauthorized|authentication (?:failed|required)|invalid api key|missing api key|401)\b/i,label:"provider authentication failed"},{test:/\b(?:out of usage|increase limits?|switch to auto|ask your admin to increase your limit|usage limits?|quota exceeded|insufficient_quota|credits? exhausted|billing|payment required)\b/i,label:"provider quota exhausted"}]});function Xe(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function Lt(e){return e==null?!1:typeof e=="string"?e.trim().length>0:typeof e=="boolean"?e:Array.isArray(e)?e.length>0:typeof e=="object"?Object.keys(e).length>0:!0}function $t(e){return!e?.checked||e.headIsAncestorOfBase!==!1?null:Xe(e.head)}function Ht(e,r,t){let n=["exited_with_changes_salvage"];if((e==="uncommitted"||e==="both")&&n.push(`${r} uncommitted change${r===1?"":"s"} with no final result`),(e==="committed_ahead"||e==="both")&&t){let o=t.length>12?t.slice(0,12):t;n.push(`commit ${o} ahead of base with no final result`)}return n.push("review worktree \u2014 commit, open a PR, or run a salvage worker before discarding"),n.join(": ")}function Ze(e){if(e.alive||Lt(e.finalResult))return null;let r=(e.changedFiles??[]).filter(i=>i.trim()).length,t=Xe(e.headCommit)??$t(e.gitAncestry),n=r>0,o=!!t;if(!n&&!o)return{kind:"none",salvageable:!1,uncommittedCount:0,headCommit:null,attentionReason:"process exited without a final result"};let s=n&&o?"both":n?"uncommitted":"committed_ahead";return{kind:s,salvageable:!0,uncommittedCount:r,headCommit:t,attentionReason:Ht(s,r,t)}}var Qe=l(()=>{"use strict"});var x=l(()=>{"use strict"});var jt,po,Yt,fo,er=l(()=>{"use strict";jt=["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"],po=new Set(jt),Yt=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],fo=new Set(Yt)});import{spawnSync as tr}from"node:child_process";function Vt(e,r,t={}){let n=tr("git",r,X({cwd:e,encoding:"utf8"}));if(n.status!==0&&!t.allowFailure){let o=Gt(e,r,n);if(t.throwError)throw new Error(o);q(o)}return n.stdout||""}function Gt(e,r,t){let n=typeof t.stderr=="string"&&t.stderr.trim()||typeof t.stdout=="string"&&t.stdout.trim()||t.error?.message||`exit ${t.status??"unknown"}`;return`git ${r.join(" ")} failed in ${e}: ${n}`}function nr(e){return Vt(e,["status","--short"],{allowFailure:!0}).split(`
8
8
  `).map(r=>r.trim()).filter(Boolean)}function A(e,r){try{let t=tr("git",r,X({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}}}function rr(e,r,t){let n=A(e,["merge-base","--is-ancestor",r,t]);return n.status===0?{isAncestor:!0,error:null}:n.status===1?{isAncestor:!1,error:null}:{isAncestor:null,error:n.error||n.stderr||n.stdout||`git exited ${n.status}`}}function or(e,r="origin/main"){let t=typeof r=="string"?{base:r}:r,n=t.baseCommit?.trim()||t.base?.trim()||"origin/main",o=t.baseCommit?.trim()||null;if(!e)return se(n,"missing worktree path");let s=A(e,["rev-parse","HEAD"]);if(s.status!==0)return se(n,s.error||s.stderr||s.stdout||"failed to resolve HEAD");let i;if(o)i=o;else{let d=A(e,["rev-parse",n]);if(d.status!==0)return se(n,d.error||d.stderr||d.stdout||`failed to resolve ${n}`,s.stdout.trim());i=d.stdout.trim()}let a=s.stdout.trim();if(a===i)return{checked:!0,base:n,head:a,baseHead:i,baseIsAncestorOfHead:!0,headIsAncestorOfBase:!0,relation:"synced"};let u=rr(e,i,a),p=rr(e,a,i),m=u.error||p.error||void 0;if(u.isAncestor==null||p.isAncestor==null)return{checked:!1,base:n,head:a,baseHead:i,baseIsAncestorOfHead:u.isAncestor,headIsAncestorOfBase:p.isAncestor,relation:"unknown",...m?{error:m}:{}};let c=u.isAncestor?"ahead":p.isAncestor?"merged":"diverged";return{checked:!0,base:n,head:a,baseHead:i,baseIsAncestorOfHead:u.isAncestor,headIsAncestorOfBase:p.isAncestor,relation:c,...m?{error:m}:{}}}function se(e,r,t=null){return{checked:!1,base:e,head:t,baseHead:null,baseIsAncestorOfHead:null,headIsAncestorOfBase:null,relation:"unknown",error:r}}var D=l(()=>{"use strict";x();g();er()});function w(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function zt(e){return e==null?!1:typeof e=="string"?e.trim().length>0:typeof e=="boolean"?e:Array.isArray(e)?e.length>0:typeof e=="object"?Object.keys(e).length>0:!0}function Jt(e){if(w(e.headCommit)||w(e.prUrl)||w(e.artifactBundlePath)||w(e.patchPath))return!0;let r=e.gitAncestry;return!!(r?.checked&&r.headIsAncestorOfBase===!1&&w(r.head))}function sr(e){return zt(e.finalResult)?e.changedFiles.length===0?{blocked:!1}:Jt(e)?{blocked:!0,detail:`Worktree has ${e.changedFiles.length} uncommitted change(s); commit or discard before landing`}:{blocked:!0,reason:"dirty_worktree_no_pr",detail:`Worktree has ${e.changedFiles.length} uncommitted change(s) with no commit or PR; commit, open a PR, or discard before landing`}:{blocked:!1}}function ir(e){if(e.blocked)return e.detail??e.reason??"dirty_worktree_no_pr"}var ar=l(()=>{"use strict"});function ae(e){let r=e.trim();if(!r.startsWith("{"))return null;try{let t=JSON.parse(r);if(t&&typeof t=="object"&&!Array.isArray(t))return t}catch{return null}return null}function lr(e){let r=e.targetPrReconciliation??e.target_pr_reconciliation??e.targetPrs??e.target_prs;return Array.isArray(r)?r.length:0}function M(e){let r=e.trim();if(!r)return null;let t=ae(r);if(t)return t;let n=[],o=/```(?:json)?\s*([\s\S]*?)```/gi,s;for(;(s=o.exec(r))!==null;){let m=ae(s[1]??"");m&&n.push(m)}let i=r.indexOf("{"),a=r.lastIndexOf("}");if(i>=0&&a>i){let m=ae(r.slice(i,a+1));m&&n.push(m)}if(n.length===0)return null;let u=n[n.length-1],p=lr(u);for(let m of n){let c=lr(m);c>p&&(u=m,p=c)}return u}var le=l(()=>{"use strict"});function ur(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`https://github.com/${r[1]}/pull/${r[2]}`:e.trim()||null}function cr(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`${r[1].toLowerCase()}/pull/${r[2]}`:e.trim().toLowerCase()}function qt(e){return new Set(e.map(r=>cr(ur(r)??r)).filter(Boolean))}function dr(e,r,t){let n=ur(e)??e;if(!n)return"unrelated";let o=cr(n);return qt(r).has(o)?"contract":t?(t.outcome==="skipped"||t.outcome==="blocked")&&t.reason?.trim()?"support":(t.outcome==="merged","unrelated"):"unrelated"}var mr=l(()=>{"use strict"});function S(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function Xt(e){return e==null?!1:typeof e=="string"?e.trim().length>0:typeof e=="object"?Object.keys(e).length>0:!0}function k(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`https://github.com/${r[1]}/pull/${r[2]}`:S(e)}function F(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`${r[1].toLowerCase()}/pull/${r[2]}`:e.trim().toLowerCase()}function pr(e){let r=null;if(typeof e=="string"){let o=M(e);o&&(r=o)}else e&&typeof e=="object"&&!Array.isArray(e)&&(r=e);if(!r)return[];let t=r.targetPrReconciliation??r.target_pr_reconciliation;if(!Array.isArray(t))return[];let n=[];for(let o of t){if(!o||typeof o!="object"||Array.isArray(o))continue;let s=o,i=k(String(s.prUrl??s.pr_url??"")),a=S(s.outcome);!i||a!=="merged"&&a!=="skipped"&&a!=="blocked"||n.push({prUrl:i,outcome:a,mergeCommit:S(s.mergeCommit??s.merge_commit),reason:S(s.reason)})}return n}function fr(e,r){let t=[],n=k(S(e.prUrl)??"");if(n&&t.push(n),r&&typeof r=="object"&&!Array.isArray(r)){let o=r,s=k(String(o.prUrl??o.pr_url??""));s&&t.push(s)}return[...new Set(t)]}function gr(e){let{contract:r,snapshot:t}=e,n=e.finalResult??t.finalResult;if(!r.landingOnly&&r.targetPrUrls.length===0&&!r.repairEnforceOriginalPr)return{blocked:!1};if(!Xt(n))return(r.requiresTargetPrReconciliation??(r.landingOnly||!!r.repairEnforceOriginalPr||r.targetPrUrls.length>0))&&r.targetPrUrls.length>0?{blocked:!0,reason:"missing_target_pr_reconciliation",detail:`Final result required to reconcile target PR(s): ${r.targetPrUrls.join(", ")}`}:{blocked:!1};if(!(r.requiresTargetPrReconciliation??(r.landingOnly||!!r.repairEnforceOriginalPr||r.targetPrUrls.length>0))&&!r.repairEnforceOriginalPr)return{blocked:!1};let s=r.repairEnforceOriginalPr?k(S(r.targetPrUrl)??"")??(r.targetPrUrls.length===1?k(r.targetPrUrls[0]):null):null;if(s){let c=fr(t,n);if(!(n&&typeof n=="object"&&!Array.isArray(n)&&n.supersedesOriginalTargetPr===!0)){for(let h of c)if(h!==s)return{blocked:!0,reason:"duplicate_repair_pr",detail:`Repair worker opened or attached PR ${h} instead of canonical target ${s}`}}let y=pr(n).find(h=>h.prUrl===s);if(!y||y.outcome!=="merged"&&!(y.reason?.trim()&&(y.outcome==="skipped"||y.outcome==="blocked")))return{blocked:!0,reason:"missing_repair_target_reconciliation",detail:`Repair worker must reconcile target PR ${s}`}}let i=pr(n),a=new Map(i.map(c=>[F(c.prUrl),c])),u=new Set(r.targetPrUrls.map(c=>F(k(c)??c)).filter(Boolean)),p=fr(t,n);if(r.landingOnly)for(let c of p){let d=a.get(F(c)),f=dr(c,r.targetPrUrls,d);if(!(f==="contract"||f==="support"))return u.size>0?{blocked:!0,reason:"unrelated_implementation_pr",detail:`Landing-only worker attached unrelated PR ${c}`}:{blocked:!0,reason:"unrelated_implementation_pr",detail:"Landing-only worker must not open new implementation PRs"}}if(r.targetPrUrls.length===0)return{blocked:!1};let m=[];for(let c of r.targetPrUrls){let d=F(k(c)??c),f=a.get(d);if(!f){m.push(d);continue}f.outcome!=="merged"&&!f.reason?.trim()&&m.push(d)}return m.length>0?{blocked:!0,reason:m.every(c=>a.has(c))?"incomplete_target_pr_landing":"missing_target_pr_reconciliation",detail:`Target PR reconciliation incomplete: ${m.join(", ")}`}:{blocked:!1}}function yr(e){if(e.blocked)return e.detail??e.reason}var hr=l(()=>{"use strict";le();mr()});function Qt(e){let r=Date.now();if(e.providerTerminalError||U(e.finalResult)||e.finalResult&&e.error?.trim()||C(e.error)||C(e.finalResult)){let o=e.error||(typeof e.finalResult=="string"?e.finalResult:"provider terminal error");return{state:"blocked",reason:oe(o)?.reason??`provider terminal error: ${o}`}}if(e.completionBlocker&&!kr(e.completionBlocker))return{state:"blocked",reason:e.completionBlocker};if(e.finalResult){if(e.localOnly&&rn(e.finalResult))return{state:"done",reason:"local-only worker superseded by merged PR"};let o={finalResult:e.finalResult,changedFiles:e.changedFiles??[],gitAncestry:e.gitAncestry??null,prUrl:e.prUrl??null},s=sr(o);if(s.blocked){let i=ir(s);return{state:"needs_attention",reason:s.reason?`landing blocked (${s.reason}): ${i}`:`landing blocked: ${i}`}}if(e.landingContract){let i=gr({contract:e.landingContract,snapshot:o,finalResult:e.finalResult}),a=yr(i);if(a)return{state:"needs_attention",reason:i.reason?`landing contract (${i.reason}): ${a}`:`landing contract: ${a}`}}return{state:"done",reason:"final result recorded"}}if(!e.alive){if(en(e))return{state:"done",reason:"empty abandoned worker record"};let o=oe(e.error);if(o)return{state:"blocked",reason:o.reason};let s=Ze({alive:!1,finalResult:null,changedFiles:e.changedFiles,gitAncestry:e.gitAncestry});if(s?.salvageable){let a=e.error?.trim();return{state:"needs_attention",reason:a?`${s.attentionReason} (${a})`:s.attentionReason}}let i=e.error?.trim();return{state:"needs_attention",reason:i?`process exited without a final result: ${i}`:s?.attentionReason??"process exited without a final result"}}if(e.heartbeatBlocker)return{state:"blocked",reason:`worker heartbeat reported blocker: ${e.heartbeatBlocker}`};let t=e.startedAt?Date.parse(e.startedAt):NaN;if(!e.firstEventAt&&e.stdoutBytes===0&&e.heartbeatBytes===0&&Number.isFinite(t)&&r-t>Zt)return{state:"needs_attention",reason:`no first stream event ${Z(t)}s after start`};let n=e.lastActivityAt?Date.parse(e.lastActivityAt):NaN;return Number.isFinite(n)&&r-n>L?{state:"stale",reason:`no log/event/heartbeat activity for ${Z(n)}s`}:{state:"ok",reason:"recent activity"}}function kr(e){let r=e?.trim();return r?/completion acknowledged but board not advanced/i.test(r)&&/task already terminal/i.test(r):!1}function en(e){return e.finalResult||e.taskId||e.agentOsId||e.stdoutBytes>0||(e.stderrBytes??0)>0||e.heartbeatBytes>0||e.error?.trim()||(e.changedFiles??[]).some(r=>r.trim())?!1:/empty worker dir|marked abandoned/i.test(e.reconcileReason??"")}function rn(e){let r=null;if(typeof e=="string"?r=M(e):e&&typeof e=="object"&&!Array.isArray(e)&&(r=e),!r)return!1;let t=r.targetPrReconciliation??r.target_pr_reconciliation;return Array.isArray(t)?t.some(n=>!n||typeof n!="object"||Array.isArray(n)?!1:String(n.outcome??"").trim()==="merged"):!1}function tn(e,r,t){let n=e.completionSnapshot?.finalResult;return e.completionAckSource==="local-pr-merged-reconcile"&&n!==void 0&&n!==null?n:r||(n??we(t))}function br(e,r={}){let t=Ge(e.stdoutPath),n=Oe(e.heartbeatPath),o=typeof e.completionReportedAt=="string"&&e.completionReportedAt.trim().length>0,s=tn(e,t.finalResult,n),i=o?!1:N(e.pid),a=P(e.stdoutPath),u=P(e.stderrPath),p=P(e.heartbeatPath),m=nr(e.worktreePath),c=or(e.worktreePath,{base:r.base,baseCommit:r.baseCommit}),d=Ce([t.lastEventAt,n.lastHeartbeatAt,T(e.stdoutPath),T(e.stderrPath),T(e.heartbeatPath)]),f=t.error||!i&&!s&&ve(e.stderrPath,10).trim()||void 0,y=typeof e.completionBlocker=="string"&&e.completionBlocker.trim()?e.completionBlocker.trim():null,h=kr(y)?null:y,Jr=e.repairTargetPrUrl?{landingOnly:!1,targetPrUrls:[e.repairTargetPrUrl],targetPrUrl:e.repairTargetPrUrl,repairEnforceOriginalPr:!0}:null,z=Qt({alive:i,finalResult:s,firstEventAt:t.firstEventAt,stdoutBytes:a,stderrBytes:u,heartbeatBytes:p,lastActivityAt:d,heartbeatBlocker:n.heartbeatBlocker,startedAt:e.startedAt,error:f,providerTerminalError:t.providerTerminalError,changedFiles:m,gitAncestry:c,completionBlocker:h,landingContract:Jr,prUrl:e.repairTargetPrUrl??e.taskPrUrl??null,localOnly:e.localOnly===!0,taskId:e.taskId??null,agentOsId:e.agentOsId??null,reconcileReason:e.reconcileReason??null}),qr=h||z.state==="blocked"?"blocked":o||z.state==="done"?"done":s?"exited":i?"running":"exited";return{runId:e.runId,worker:e.name,pid:e.pid,alive:i,status:qr,attention:z,branch:e.branch,worktreePath:e.worktreePath,ownedPaths:e.ownedPaths,stdoutBytes:a,stderrBytes:u,heartbeatBytes:p,firstEventAt:t.firstEventAt,lastEventAt:t.lastEventAt,lastActivityAt:d,currentTool:o?null:t.currentTool,heartbeatCount:n.heartbeatCount,lastHeartbeatAt:n.lastHeartbeatAt,lastHeartbeatPhase:n.lastHeartbeatPhase,lastHeartbeatSummary:n.lastHeartbeatSummary,heartbeatBlocker:n.heartbeatBlocker,timestampAnomalies:n.timestampAnomalies,finalResult:s,error:f,providerTerminalError:t.providerTerminalError,changedFiles:m,gitAncestry:c,instructionPolicyFingerprint:e.instructionPolicyFingerprint??null,instructionPolicyEvidence:e.instructionPolicyEvidence??null,model:e.model??e.orchestrationAudit?.model??null,provider:e.provider??e.orchestrationAudit?.provider??null,usage:t.usage??null,boxKind:e.boxKind??null,boxId:e.boxId??null,runtimeId:e.runtimeId??null,personaSlug:e.personaSlug??null,dispatched:e.dispatched??null,localOnly:e.localOnly??null}}function Rr(e){return!!(e.finalResult||e.alive===!1||e.status==="exited"||e.status==="done")}function xr(e){return e.finalResult?e.attention.state==="needs_attention"||e.attention.state==="blocked":!1}var Zt,L,O=l(()=>{"use strict";Ie();ze();B();qe();Qe();D();ar();hr();le();g();Zt=18e4,L=6e5});var vr=l(()=>{"use strict";D()});var ue=l(()=>{"use strict";D();x();vr()});var ce=l(()=>{"use strict";g()});var b=l(()=>{"use strict"});var $=l(()=>{"use strict"});var Cr=l(()=>{"use strict"});var os,ss,de=l(()=>{"use strict";os=25*1024*1024*1024,ss=12*1024*1024*1024});var cs,ds,Ar=l(()=>{"use strict";de();cs=5*1024*1024*1024,ds=10*1024*1024*1024});var hs,ks,me=l(()=>{"use strict";Ar();de();hs=30*1024*1024*1024,ks=15*1024*1024*1024});var wr=l(()=>{"use strict";H();g()});var Or=l(()=>{"use strict";O()});var un,cn,Tr=l(()=>{"use strict";Cr();_();b();$();j();me();H();wr();Or();g();un=500*1024*1024,cn=4*1024*1024*1024});var j=l(()=>{"use strict";Tr()});import{homedir as mn}from"node:os";import pn from"node:path";var Nr,ge=l(()=>{"use strict";Nr=pn.join(mn(),".kynver",".env")});var Kr=l(()=>{"use strict"});var Wr=l(()=>{"use strict";Kr()});var Ur=l(()=>{"use strict"});var Br=l(()=>{"use strict";g()});var ye=l(()=>{"use strict";Wr();Ur();Br()});var Dr=l(()=>{"use strict"});var Mr=l(()=>{"use strict";Dr()});var Y=l(()=>{"use strict";ge();x();_();ye();Mr()});var Fr=l(()=>{"use strict";b();b()});var Lr=l(()=>{"use strict";ge();ye();Y()});var he=l(()=>{"use strict"});var $r=l(()=>{"use strict";g()});import bn from"node:path";var Hi,ke=l(()=>{"use strict";x();$r();Hi=bn.join(".openclaw","harness")});var G=l(()=>{"use strict";_();b();$();j();ke()});var jr=l(()=>{"use strict";ue();b();Fr();_();Y();Lr();ce();he();G()});var vn,da,Yr=l(()=>{"use strict";vn=["claude","cursor","codex","gemini","gemini-api","openai-compatible"],da=vn.join("|")});import{homedir as Cn,totalmem as _a}from"node:os";import be from"node:path";var Vr,Ba,Da,Ma,Fa,_=l(()=>{"use strict";ue();x();ce();b();$();j();me();Y();jr();Yr();G();he();Vr=be.join(Cn(),".kynver"),Ba=be.join(Vr,"config.json"),Da=be.join(Vr,"credentials"),Ma=500*1024*1024,Fa=4*1024*1024*1024});var Gr=l(()=>{"use strict";_();ke();G();g()});var H=l(()=>{"use strict";Gr();g()});O();var Sr="kynver-harness:",nn="@runner:";function _r(e){return e?.trim()?e.trim():null}function on(e){let r=_r(e);if(!r?.startsWith(Sr))return null;let t=r.slice(Sr.length),n=t.indexOf(nn);return n>=0?t.slice(0,n).trim()||null:t.trim()||null}function Er(e,r){let t=_r(r);return t?on(e)===t:!1}O();g();function sn(e){let{worker:r,status:t,taskLease:n}=e,o=n?.leaseOwner??null;if(r.dispatched&&n){if(n.status==="running"&&o&&!Er(o,r.runId))return{health:"orphaned",reason:`task lease held by ${o}, expected harness run ${r.runId}`};let i=r.leaseToken?.trim()??"",a=n.leaseToken?.trim()??"";if(n.status==="running"&&i&&a&&i!==a)return{health:"orphaned",reason:"task leaseToken superseded on board \u2014 completion replay would fail"};if(n.status==="running"&&!t.alive&&!t.finalResult)return{health:"orphaned",reason:"board task running but worker process is not alive"}}if(r.status==="running"&&!t.alive&&!t.finalResult)return{health:"orphaned",reason:"worker.json still running but process is dead"};if(t.attention.state==="stale")return{health:"stale",reason:t.attention.reason};let s=t.lastHeartbeatAt?Date.parse(t.lastHeartbeatAt):NaN;return t.alive&&Number.isFinite(s)&&Date.now()-s>L?{health:"stale",reason:`heartbeat older than ${Math.floor(L/1e3)}s`}:t.alive&&r.pid&&!N(r.pid)?{health:"orphaned",reason:"pid recorded but process is not alive"}:n?.status==="running"&&!t.alive&&t.finalResult?{health:"healthy",reason:"finished worker awaiting completion replay"}:{health:"healthy",reason:t.attention.reason||"worker within expected lifecycle bounds"}}H();function zr(e){return!!e.completionReportedAt?.trim()}O();function An(e){let{worker:r,status:t}=e,n=[];r.localOnly&&n.push("local-only worker (no board linkage)"),(!r.agentOsId||!r.taskId)&&n.push("missing agentOsId/taskId linkage"),zr(r)&&n.push("completion already acknowledged"),r.completionBlocker&&n.push(r.completionBlocker),t.heartbeatBlocker&&t.alive&&n.push(`worker heartbeat blocker: ${t.heartbeatBlocker}`),t.attention.state==="blocked"&&n.push(t.attention.reason||"worker attention blocked"),xr(t)&&n.push(t.attention.reason||"landing gate blocked");let o=Rr(t),s;return o?t.finalResult?s="final_result":t.alive?s="terminal_status":s="process_exited":n.push("worker has not reached a terminal condition"),{eligible:o&&n.length===0,terminalVerified:o,terminalReason:s,blockers:n}}export{An as assessAutoCompleteEligibility,sn as classifyWorkerHealth,br as computeWorkerStatus};
@@ -1,2 +1,2 @@
1
1
  var o=(e,r,t)=>()=>{if(t)throw t[0];try{return e&&(r=e(e=0)),r}catch(n){throw t=[n],n}};function J(e){let r=e[Wr];return r?new Set(r.split(/[\s,]+/).map(t=>t.trim()).filter(Boolean)):new Set}function _(e,r={}){return wr.has(e)?!0:Tr.has(e)||r.operatorAllow?.has(e)||Nr.some(t=>e.endsWith(t))?!1:Pr.some(t=>e.endsWith(t))}function _e(e){let r=J(e);return Object.keys(e).filter(t=>_(t,{operatorAllow:r})).sort()}function ke(e){let r=J(e);return r.size===0?[]:Object.keys(e).filter(t=>r.has(t)&&!_(t,{operatorAllow:r})&&_(t)).sort()}function A(e){let r=J(e),t={...e};for(let n of Object.keys(t))_(n,{operatorAllow:r})&&delete t[n];return t}function Kr(e){let r=_e(e),t=ke(e);return{forbiddenPresent:r,safe:r.length===0,...t.length?{operatorAllowedActive:t}:{}}}var Ar,wr,Pr,Ir,Tr,Nr,Wr,w=o(()=>{"use strict";Ar=["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"],wr=new Set(Ar),Pr=["_SECRET","_API_KEY","_KEK","_KEY","_TOKEN","_PASSWORD","_PASSPHRASE","_SALT"],Ir=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],Tr=new Set(Ir),Nr=["_PUBLIC_KEY"],Wr="KYNVER_WORKER_ENV_ALLOW"});var g=o(()=>{"use strict"});var Ae=o(()=>{"use strict"});function Q(e){if(!e)return!1;try{return process.kill(e,0),!0}catch{return!1}}var a=o(()=>{"use strict";Ae()});var T=o(()=>{"use strict";g();a();w()});var we=o(()=>{"use strict";T()});var ee=o(()=>{"use strict";T();g();we()});var re=o(()=>{"use strict";a()});var m=o(()=>{"use strict"});var N=o(()=>{"use strict"});var Pe=o(()=>{"use strict"});var Vn,Yn,te=o(()=>{"use strict";Vn=25*1024*1024*1024,Yn=12*1024*1024*1024});var Xn,Qn,Ie=o(()=>{"use strict";te();Xn=5*1024*1024*1024,Qn=10*1024*1024*1024});var oo,io,ne=o(()=>{"use strict";Ie();te();oo=30*1024*1024*1024,io=15*1024*1024*1024});var Ne=o(()=>{"use strict";a()});import Qr from"node:path";var go,oe=o(()=>{"use strict";g();Ne();go=Qr.join(".openclaw","harness")});var K=o(()=>{"use strict";f();m();N();D();oe()});var De=o(()=>{"use strict";f();oe();K();a()});var se=o(()=>{"use strict";De();a()});var Me=o(()=>{"use strict";se();a()});var Ue=o(()=>{"use strict"});var Be=o(()=>{"use strict";Ue();a()});var Le=o(()=>{"use strict"});var Fe=o(()=>{"use strict";Le()});var U=o(()=>{"use strict"});var $e=o(()=>{"use strict"});var He=o(()=>{"use strict"});var je=o(()=>{"use strict";Fe();a();U();$e();He()});var Ve=o(()=>{"use strict";U()});var Ye=o(()=>{"use strict"});var Ge=o(()=>{"use strict"});var ae=o(()=>{"use strict"});var qe=o(()=>{"use strict"});var Je=o(()=>{"use strict";ae();qe()});var ze=o(()=>{"use strict";Be();je();U();Ve();Ye();T();Ge();Je();ae();a()});var Xe=o(()=>{"use strict";ze()});var ut,ct,Qe=o(()=>{"use strict";Pe();f();m();N();D();ne();se();Me();Xe();a();ut=500*1024*1024,ct=4*1024*1024*1024});var D=o(()=>{"use strict";Qe()});import{homedir as dt}from"node:os";import pt from"node:path";var Ze,le=o(()=>{"use strict";Ze=pt.join(dt(),".kynver",".env")});var er=o(()=>{"use strict"});var rr=o(()=>{"use strict";er()});var tr=o(()=>{"use strict"});var nr=o(()=>{"use strict";a()});var ue=o(()=>{"use strict";rr();tr();nr()});var or=o(()=>{"use strict"});var ir=o(()=>{"use strict";or()});var B=o(()=>{"use strict";le();g();f();ue();ir()});var sr=o(()=>{"use strict";m();m()});var ar=o(()=>{"use strict";le();ue();B()});var ce=o(()=>{"use strict"});var lr=o(()=>{"use strict";ee();m();sr();f();B();ar();re();ce();K()});function k(e){let r=e.trim().toLowerCase();return kt[r]??r}var ur,_t,kt,L=o(()=>{"use strict";ur=["claude","cursor","codex","gemini","gemini-api","openai-compatible"],_t=ur.join("|"),kt={anthropic:"claude",opus:"claude",openai:"openai-compatible",openai_compatible:"openai-compatible","openai-compat":"openai-compatible",chatgpt:"codex",gpt:"codex","openai-api":"openai-compatible",openai_api:"openai-compatible",google:"gemini",gemini_cli:"gemini",gemini_api:"gemini-api","google-api":"gemini-api",google_api:"gemini-api"}});import{homedir as bt,totalmem as Na}from"node:os";import de from"node:path";var cr,Ga,qa,Ja,za,f=o(()=>{"use strict";ee();g();re();m();N();D();ne();B();lr();L();K();ce();cr=de.join(bt(),".kynver"),Ga=de.join(cr,"config.json"),qa=de.join(cr,"credentials"),Ja=500*1024*1024,za=4*1024*1024*1024});w();w();var z="KYNVER_NO_PROD_DB_CREDENTIALS",Dr=["KYNVER_ENV_FILE"],Mr=new Set(["1","true","yes","on"]);function be(e){let r=e[z]?.trim().toLowerCase();return r!==void 0&&Mr.has(r)}function d(e,r={}){let t=A(e);if(!r.reviewWorker)return t;let n={...t,[z]:"1"};for(let i of Dr)delete n[i];return n}var xe=["DATABASE_URL","PRODUCTION_DATABASE_URL","KYNVER_PRODUCTION_DATABASE_URL"];function Ur(e,r={}){let t=d(e,r),n=Object.keys(t).filter(u=>u.endsWith("_SECRET")||u.endsWith("_API_KEY")||xe.includes(u)),i=xe.every(u=>t[u]===void 0),s=r.reviewWorker?t.KYNVER_ENV_FILE===void 0:!0,l=be(t);return{reviewMode:!!r.reviewWorker,noProdFlagPresent:r.reviewWorker?l:!0,forbiddenKeysAfterScrub:n.sort(),productionDbKeysAbsent:i,envFilePointerStripped:s,safe:i&&n.length===0&&s&&(!r.reviewWorker||l)}}var Br="expert-lane-pr-review:",Lr="plan-review-task",Fr="scheduledjob:",P=new Set(["lorentz","dalton","rhea","sentinel"]);function $r(e){if(!e)return null;let r=e.trim().toLowerCase();return r.length?r:null}function X(e){return/\b(deep[- ]?review|plan review|review .*plan|security review|red[- ]team|lb\d+|runtime verification)\b/.test(e)}function Hr(e,r){return e.startsWith("factory:")?e.includes("lb")||X(r):!1}function jr(e){let r=(e.executorRef??"").toLowerCase(),t=(e.title??"").toLowerCase(),n=(e.description??"").toLowerCase(),i=`${t}
2
- ${n}`,s=$r(e.personaSlug);return r.startsWith("harness-lane:blocked-lane-unblock:")||r==="lane:over_attempt_recovery"||r.startsWith("next-action-fix:")||r.startsWith("next-action-landing:")||r.startsWith("code-work-lane-chain:release:")?!1:!!(r.startsWith(Br)||r===Lr||r.startsWith("daemon-review:")||s&&P.has(s)&&(r.includes("evidence")||r.includes("validate")||r.includes("review")||Hr(r,i)||X(i))||r.startsWith(Fr)&&e.parentTaskId&&s&&P.has(s)||e.planId&&!e.parentTaskId&&s&&P.has(s)&&X(i)||t.includes("expert pr review")||e.parentTaskId&&(t.startsWith("review:")||t.includes("review required")||t.includes("runtime review"))&&s&&P.has(s))}var Vr=/^claude[-_]/i,Yr=/^(?:opus|sonnet|haiku)\b/i;function Ee(e){let r=e.trim();return Vr.test(r)||Yr.test(r)}function Se(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 Oe(e){return e.trim().toLowerCase().startsWith("gemini-")}function Gr(e){return Se(e)?"codex":Ee(e)?"claude":Oe(e)?"gemini":(Ce(e),"cursor")}function qr(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(),i=t>=0&&r.slice(t+1).trim()||void 0;return n?n==="claude"||n==="opus"||n==="anthropic"?{provider:"claude",model:i,rule:i?"executor_ref:provider_claude_model":"executor_ref:provider_claude"}:n==="codex"?{provider:"codex",model:i,rule:"executor_ref:provider_codex"}:n==="openai-compatible"||n==="openai"||n==="openai_compatible"?{provider:"openai-compatible",model:i,rule:"executor_ref:provider_openai_compatible"}:n==="chatgpt"||n==="gpt"?{provider:"codex",model:i,rule:"executor_ref:provider_codex"}:n==="openai-api"||n==="openai_api"?{provider:"openai-compatible",model:i,rule:"executor_ref:provider_openai_compatible"}:n==="cursor"||n==="composer"?{provider:"cursor",model:i,rule:"executor_ref:provider_cursor"}:n==="gemini-api"||n==="gemini_api"||n==="google-api"?{provider:"gemini-api",model:i,rule:"executor_ref:provider_gemini_api"}:n==="gemini"||n==="google"||n==="gemini_cli"?{provider:"gemini",model:i,rule:i?"executor_ref:provider_gemini_model":"executor_ref:provider_gemini"}:null:null}function Jr(e){if(!e.startsWith("harness-lane:"))return null;let r=e.split(":").map(i=>i.trim()).filter(Boolean);if(r.length<2)return null;let t=r[1],n=r.slice(2).join(":");return n?Ee(n)||Se(n)||Ce(n)||Oe(n)?{lane:t,model:n,provider:Gr(n),rule:"executor_ref:harness_lane_model"}:{lane:t,rule:"executor_ref:harness_lane"}:{lane:t,rule:"executor_ref:harness_lane"}}function I(e){let r=typeof e=="string"?e.trim():"";return r?qr(r)??Jr(r):null}f();a();a();var mr="kynver",fr=["agent_os_context_envelope","agent_os_search_memory","agent_os_search_skills","agent_os_get_skill","agent_os_progress_note"],wt=fr.map(e=>`mcp__${mr}__${e}`);a();a();var yu=process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.5";function It(){return process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.5"}var Tt=It();a();var Gu=600*1e3;a();var gc=600*1e3;var gr="composer-2.5";L();L();var p="cursor",Dt=new Set(["claude","opus","anthropic"]),Mt=[/\[worker-provider:\s*claude\]/i,/\[use-claude-worker\]/i,/\[operator-worker-provider:\s*claude\]/i];function b(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function c(e){if(!e?.trim())return!1;let r=e.trim().toLowerCase();return Dt.has(r)?!0:r.includes("claude")||r.includes("opus")}function pe(e){if(!e)return!1;let r=e.workerProviderOverride;if(typeof r=="string"&&c(r))return!0;let t=b(e,"executorRef").toLowerCase();if(t==="provider:claude"||t.startsWith("provider:claude:")||t.includes("claude-worker-override")||t.includes("operator-claude"))return!0;let n=I(b(e,"executorRef"));if(n?.provider&&c(n.provider)||n?.model&&c(Ut(n.model)))return!0;let i=b(e,"description");if(Mt.some(l=>l.test(i)))return!0;let s=b(e,"title");return!!/\[use-claude-worker\]/i.test(s)}function Ut(e){let r=e.trim().toLowerCase();return/^claude[-_]/.test(r)||/^(?:opus|sonnet|haiku)\b/.test(r)?"claude":r}function Bt(e,r){return{provider:p,model:gr,rule:`policy:cursor_default${r}`,requestedModel:e}}var Lt=["explicit:","executor_ref:","factory:","task:"];function Ft(e){return Lt.some(r=>e.startsWith(r))}function me(e){if(!e)return!1;let r=e.workerProviderOverride;return typeof r=="string"&&r.trim()||I(b(e,"executorRef"))?.provider?!0:pe(e)}function hr(e){let{routing:r,task:t}=e,n=e.explicitProvider?.trim().toLowerCase();if(e.explicitProviderIsOperatorOverride&&c(n))return{...r,provider:"claude",rule:r.rule.startsWith("explicit:")?r.rule:"explicit:operator_provider"};if(n||Ft(r.rule)||me(t)||!c(r.provider))return r;let i=r.rule&&r.rule!=="default:global"?`:${r.rule.replace(/:/g,"_")}`:"";return Bt(r.model,i)}function $t(e,r=p){let t=e?.trim();return t?k(t):r}function Ht(e){let r=[...new Set(e.map(t=>t.trim().toLowerCase()).filter(Boolean))];return r.includes(p)?[...new Set(r.map(t=>c(t)?p:t))]:r.every(t=>c(t))?[p]:r}var jt=/\b(npm run typecheck|tsc\b[^|&;]*--noEmit|node scripts\/verify-pr-local\.mjs|kynver (harness )?verify)\b/i,Vt=/\b(npm run build\b|next build\b)\b/i,Yt=/\b(vercel (build|deploy|--prod))\b/i,Gt=/\b(openai|anthropic|perplexity|voyage)\b.*\b(api|cli)\b|\b(paid|billable)[-_ ]?compute\b/i;function fe(e){let r=e.trim();return r?Gt.test(r)?{heavy:!0,commandClass:"paid_compute",reason:"paid external compute requires heavy-verification token and operator approval"}:Yt.test(r)?{heavy:!0,commandClass:"vercel_verify",reason:"Vercel build/deploy verification requires heavy-verification token"}:Vt.test(r)?{heavy:!0,commandClass:"full_build",reason:"full app build requires heavy-verification token"}:jt.test(r)?{heavy:!0,commandClass:"full_typecheck",reason:"full repo typecheck requires heavy-verification token"}:{heavy:!1,commandClass:"allowed",reason:null}:{heavy:!1,commandClass:"allowed",reason:null}}var j="heavy_verification_token_required";import{spawnSync as pn}from"node:child_process";a();import{closeSync as Zt,existsSync as S,mkdirSync as en,openSync as rn,readdirSync as _r,readFileSync as tn,statSync as nn,unlinkSync as kr,writeFileSync as on}from"node:fs";import ye from"node:path";import{mkdirSync as Jt}from"node:fs";import{tmpdir as zt}from"node:os";import V from"node:path";import{homedir as qt,tmpdir as Lc}from"node:os";import yr from"node:path";function Rr(){let e=process.env.KYNVER_STATE_ROOT;return e?yr.resolve(e):yr.join(qt(),".kynver","state")}function Xt(){return!!(process.env.VERCEL||process.env.VERCEL_ENV||process.env.AWS_LAMBDA_FUNCTION_NAME||process.env.AWS_EXECUTION_ENV)}function Qt(){let e=process.env.KYNVER_HEAVY_VERIFICATION_STATE_ROOT;return e?V.resolve(e):Xt()?V.join(zt(),"kynver","state","heavy-verification"):V.join(Rr(),"heavy-verification")}function ge(){return V.join(Qt(),"slots")}function E(){let e=ge();return Jt(e,{recursive:!0}),e}var C=120*6e4,vr=1;function sn(e,r){let t=Number(e);return!Number.isFinite(t)||t<=0?r:Math.floor(t)}function G(){let e=process.env.KYNVER_HEAVY_VERIFICATION_SKIP?.trim().toLowerCase();return e==="1"||e==="true"||e==="yes"}function Y(){let e=process.env.KYNVER_HEAVY_VERIFICATION_MAX_CONCURRENT;return e?sn(e,vr):vr}function an(e){return`slot-${e}`}function ln(e,r=ge()){return ye.join(r,`${e}.json`)}function Re(e){if(!S(e))return null;try{let r=JSON.parse(tn(e,"utf8"));if(typeof r.slotId=="string"&&typeof r.pid=="number"&&typeof r.acquiredAt=="string"&&typeof r.command=="string")return r}catch{return null}return null}function xr(e,r=C){if(!e||!Q(e.pid))return!0;let t=Date.parse(e.acquiredAt);return Number.isNaN(t)?!0:Date.now()-t>r}function br(e,r){let t=Re(e);if(t)return xr(t,r);if(!S(e))return!0;try{return Date.now()-nn(e).mtimeMs>r}catch{return!0}}function un(e,r){if(br(e,r))try{kr(e)}catch{}}function cn(e){return en(e,{recursive:!0}),e}function ve(e={}){let r=cn(e.slotsDir??E()),t=e.staleMs??C,n=0;for(let i of _r(r)){if(!i.endsWith(".json"))continue;let s=ye.join(r,i),l=S(s);un(s,t),l&&!S(s)&&(n+=1)}return n}function dn(e={}){let r=e.slotsDir??E(),t=e.staleMs??C;ve({slotsDir:r,staleMs:t});let n=[];for(let i of _r(r)){if(!i.endsWith(".json"))continue;let s=Re(ye.join(r,i));s&&!xr(s,t)&&n.push(s)}return n}function he(e={}){return dn(e).length}function O(e,r={}){if(G())return{admitted:!0,slotId:null,activeSlots:0,maxSlots:Y(),reason:null};let t=r.slotsDir??E(),n=r.staleMs??C,i=r.maxSlots??Y();ve({slotsDir:t,staleMs:n});for(let l=0;l<i;l+=1){let u=an(l),R=ln(u,t),Sr=Re(R);if(br(R,n))try{kr(R)}catch{}else if(Sr||S(R))continue;let Cr={slotId:u,pid:process.pid,acquiredAt:new Date().toISOString(),command:e};try{let v=rn(R,"wx");on(v,JSON.stringify(Cr,null,2),"utf8"),Zt(v);let Or=he({slotsDir:t,staleMs:n});return{admitted:!0,slotId:u,activeSlots:Or,maxSlots:i,reason:null}}catch(v){if(v.code==="EEXIST")continue;throw v}}let s=he({slotsDir:t,staleMs:n});return{admitted:!1,slotId:null,activeSlots:s,maxSlots:i,reason:`heavy verification at capacity (${s}/${i} slots)`}}function q(e,r={}){if(G())return{admitted:!0,slotId:null,activeSlots:0,maxSlots:Y(),reason:null};let t=r.slotsDir??E(),n=r.staleMs??C,i=r.maxSlots??Y();ve({slotsDir:t,staleMs:n});let s=he({slotsDir:t,staleMs:n}),l=s<i;return{admitted:l,slotId:null,activeSlots:s,maxSlots:i,reason:l?null:`heavy verification at capacity (${s}/${i} slots); waiting for ${e}`}}function mn(e){e<=0||pn(process.execPath,["-e",`const d=Date.now()+${Math.floor(e)};while(Date.now()<d);`],{stdio:"ignore",windowsHide:!0})}function Er(e,r,t=2e3,n={}){let i=Date.now()+Math.max(0,r),s=O(e,n);for(;!s.admitted&&Date.now()<i;)mn(Math.min(t,i-Date.now())),s=O(e,n);return s}function fn(e,r={}){let t=fe(e);if(!t.heavy)return{allowed:!0,outcome:"allowed",commandClass:t.commandClass,reason:"command does not require heavy-verification token",verificationGate:{...q(e),slotId:null}};if(G())return{allowed:!0,outcome:"heavy_verification_skipped",commandClass:t.commandClass,reason:"KYNVER_HEAVY_VERIFICATION_SKIP bypasses gate",verificationGate:{...q(e),slotId:null}};let n=r.waitMs??0,i=n>0?Er(e,n,r.pollMs):O(e);return i.admitted?{allowed:!0,outcome:"allowed",commandClass:t.commandClass,reason:t.reason??"heavy-verification token acquired",verificationGate:i}:{allowed:!1,outcome:j,commandClass:t.commandClass,reason:t.reason??i.reason??j,verificationGate:i}}export{p as DEFAULT_WORKER_PROVIDER,j as HEAVY_VERIFICATION_TOKEN_REQUIRED,z as KYNVER_NO_PROD_DB_CREDENTIALS_ENV,Ur as auditReviewWorkerCredentialScope,Kr as auditWorkerEnv,d as buildWorkerSpawnEnv,fe as classifyHeavyShellCommand,hr as enforceCursorWorkerProvider,fn as gateWorkerShellCommand,c as isClaudeFamilyProvider,_ as isForbiddenWorkerEnvKey,jr as isHarnessExpertReviewWorker,be as isNoProdCredentialReviewEnvironment,_e as listForbiddenWorkerEnvKeys,ke as listOperatorAllowedWorkerEnvKeys,k as normalizeWorkerProviderName,Ht as preferCursorExecutor,$t as resolveConfiguredWorkerProvider,A as scrubWorkerEnv,pe as taskAllowsClaudeWorker,me as taskExpressesWorkerProviderPreference};
2
+ ${n}`,s=$r(e.personaSlug);return r.startsWith("harness-lane:blocked-lane-unblock:")||r==="lane:over_attempt_recovery"||r.startsWith("next-action-fix:")||r.startsWith("next-action-landing:")||r.startsWith("code-work-lane-chain:release:")?!1:!!(r.startsWith(Br)||r===Lr||r.startsWith("daemon-review:")||s&&P.has(s)&&(r.includes("evidence")||r.includes("validate")||r.includes("review")||Hr(r,i)||X(i))||r.startsWith(Fr)&&e.parentTaskId&&s&&P.has(s)||e.planId&&!e.parentTaskId&&s&&P.has(s)&&X(i)||t.includes("expert pr review")||e.parentTaskId&&(t.startsWith("review:")||t.includes("review required")||t.includes("runtime review"))&&s&&P.has(s))}var Vr=/^claude[-_]/i,Yr=/^(?:opus|sonnet|haiku)\b/i;function Ee(e){let r=e.trim();return Vr.test(r)||Yr.test(r)}function Se(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 Oe(e){return e.trim().toLowerCase().startsWith("gemini-")}function Gr(e){return Se(e)?"codex":Ee(e)?"claude":Oe(e)?"gemini":(Ce(e),"cursor")}function qr(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(),i=t>=0&&r.slice(t+1).trim()||void 0;return n?n==="claude"||n==="opus"||n==="anthropic"?{provider:"claude",model:i,rule:i?"executor_ref:provider_claude_model":"executor_ref:provider_claude"}:n==="codex"?{provider:"codex",model:i,rule:"executor_ref:provider_codex"}:n==="openai-compatible"||n==="openai"||n==="openai_compatible"?{provider:"openai-compatible",model:i,rule:"executor_ref:provider_openai_compatible"}:n==="chatgpt"||n==="gpt"?{provider:"codex",model:i,rule:"executor_ref:provider_codex"}:n==="openai-api"||n==="openai_api"?{provider:"openai-compatible",model:i,rule:"executor_ref:provider_openai_compatible"}:n==="cursor"||n==="composer"?{provider:"cursor",model:i,rule:"executor_ref:provider_cursor"}:n==="gemini-api"||n==="gemini_api"||n==="google-api"?{provider:"gemini-api",model:i,rule:"executor_ref:provider_gemini_api"}:n==="gemini"||n==="google"||n==="gemini_cli"?{provider:"gemini",model:i,rule:i?"executor_ref:provider_gemini_model":"executor_ref:provider_gemini"}:null:null}function Jr(e){if(!e.startsWith("harness-lane:"))return null;let r=e.split(":").map(i=>i.trim()).filter(Boolean);if(r.length<2)return null;let t=r[1],n=r.slice(2).join(":");return n?Ee(n)||Se(n)||Ce(n)||Oe(n)?{lane:t,model:n,provider:Gr(n),rule:"executor_ref:harness_lane_model"}:{lane:t,rule:"executor_ref:harness_lane"}:{lane:t,rule:"executor_ref:harness_lane"}}function I(e){let r=typeof e=="string"?e.trim():"";return r?qr(r)??Jr(r):null}f();a();a();var mr="kynver",fr=["agent_os_context_envelope","agent_os_search_memory","agent_os_search_skills","agent_os_get_skill","agent_os_progress_note"],wt=fr.map(e=>`mcp__${mr}__${e}`);a();a();var yu=process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.5";function It(){return process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.5"}var Tt=It();a();var Gu=600*1e3;a();var gc=600*1e3;var gr="composer-2.5";L();L();var p="cursor",Dt=new Set(["claude","opus","anthropic"]),Mt=[/\[worker-provider:\s*claude\]/i,/\[use-claude-worker\]/i,/\[operator-worker-provider:\s*claude\]/i];function b(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function c(e){if(!e?.trim())return!1;let r=e.trim().toLowerCase();return Dt.has(r)?!0:r.includes("claude")||r.includes("opus")}function pe(e){if(!e)return!1;let r=e.workerProviderOverride;if(typeof r=="string"&&c(r))return!0;let t=b(e,"executorRef").toLowerCase();if(t==="provider:claude"||t.startsWith("provider:claude:")||t.includes("claude-worker-override")||t.includes("operator-claude"))return!0;let n=I(b(e,"executorRef"));if(n?.provider&&c(n.provider)||n?.model&&c(Ut(n.model)))return!0;let i=b(e,"description");if(Mt.some(l=>l.test(i)))return!0;let s=b(e,"title");return!!/\[use-claude-worker\]/i.test(s)}function Ut(e){let r=e.trim().toLowerCase();return/^claude[-_]/.test(r)||/^(?:opus|sonnet|haiku)\b/.test(r)?"claude":r}function Bt(e,r){return{provider:p,model:gr,rule:`policy:cursor_default${r}`,requestedModel:e}}var Lt=["explicit:","executor_ref:","factory:","task:"];function Ft(e){return Lt.some(r=>e.startsWith(r))}function me(e){if(!e)return!1;let r=e.workerProviderOverride;return typeof r=="string"&&r.trim()||I(b(e,"executorRef"))?.provider?!0:pe(e)}function hr(e){let{routing:r,task:t}=e,n=e.explicitProvider?.trim().toLowerCase();if(e.explicitProviderIsOperatorOverride&&c(n))return{...r,provider:"claude",rule:r.rule.startsWith("explicit:")?r.rule:"explicit:operator_provider"};if(n||Ft(r.rule)||me(t)||!c(r.provider))return r;let i=r.rule&&r.rule!=="default:global"?`:${r.rule.replace(/:/g,"_")}`:"";return Bt(r.model,i)}function $t(e,r=p){let t=e?.trim();return t?k(t):r}function Ht(e){let r=[...new Set(e.map(t=>t.trim().toLowerCase()).filter(Boolean))];return r.includes(p)?[...new Set(r.map(t=>c(t)?p:t))]:r.every(t=>c(t))?[p]:r}var jt=/\b(npm run typecheck|tsc\b[^|&;]*--noEmit|node scripts\/verify-pr-local\.mjs|kynver (harness )?verify)\b/i,Vt=/\b(npm run build\b|next build\b)\b/i,Yt=/\b(vercel (build|deploy|--prod))\b/i,Gt=/\b(openai|anthropic|perplexity|voyage)\b.*\b(api|cli)\b|\b(paid|billable)[-_ ]?compute\b/i;function fe(e){let r=e.trim();return r?Gt.test(r)?{heavy:!0,commandClass:"paid_compute",reason:"paid external compute requires heavy-verification token and operator approval"}:Yt.test(r)?{heavy:!0,commandClass:"vercel_verify",reason:"Vercel build/deploy verification requires heavy-verification token"}:Vt.test(r)?{heavy:!0,commandClass:"full_build",reason:"full app build requires heavy-verification token"}:jt.test(r)?{heavy:!0,commandClass:"full_typecheck",reason:"full repo typecheck requires heavy-verification token"}:{heavy:!1,commandClass:"allowed",reason:null}:{heavy:!1,commandClass:"allowed",reason:null}}var j="heavy_verification_token_required";import{spawnSync as pn}from"node:child_process";a();import{closeSync as Zt,existsSync as S,mkdirSync as en,openSync as rn,readdirSync as _r,readFileSync as tn,statSync as nn,unlinkSync as kr,writeFileSync as on}from"node:fs";import ye from"node:path";import{mkdirSync as Jt}from"node:fs";import{tmpdir as zt}from"node:os";import V from"node:path";import{homedir as qt,tmpdir as Lc}from"node:os";import yr from"node:path";function vr(){let e=process.env.KYNVER_STATE_ROOT;return e?yr.resolve(e):yr.join(qt(),".kynver","state")}function Xt(){return!!(process.env.VERCEL||process.env.VERCEL_ENV||process.env.AWS_LAMBDA_FUNCTION_NAME||process.env.AWS_EXECUTION_ENV)}function Qt(){let e=process.env.KYNVER_HEAVY_VERIFICATION_STATE_ROOT;return e?V.resolve(e):Xt()?V.join(zt(),"kynver","state","heavy-verification"):V.join(vr(),"heavy-verification")}function ge(){return V.join(Qt(),"slots")}function E(){let e=ge();return Jt(e,{recursive:!0}),e}var C=120*6e4,Rr=1;function sn(e,r){let t=Number(e);return!Number.isFinite(t)||t<=0?r:Math.floor(t)}function G(){let e=process.env.KYNVER_HEAVY_VERIFICATION_SKIP?.trim().toLowerCase();return e==="1"||e==="true"||e==="yes"}function Y(){let e=process.env.KYNVER_HEAVY_VERIFICATION_MAX_CONCURRENT;return e?sn(e,Rr):Rr}function an(e){return`slot-${e}`}function ln(e,r=ge()){return ye.join(r,`${e}.json`)}function ve(e){if(!S(e))return null;try{let r=JSON.parse(tn(e,"utf8"));if(typeof r.slotId=="string"&&typeof r.pid=="number"&&typeof r.acquiredAt=="string"&&typeof r.command=="string")return r}catch{return null}return null}function xr(e,r=C){if(!e||!Q(e.pid))return!0;let t=Date.parse(e.acquiredAt);return Number.isNaN(t)?!0:Date.now()-t>r}function br(e,r){let t=ve(e);if(t)return xr(t,r);if(!S(e))return!0;try{return Date.now()-nn(e).mtimeMs>r}catch{return!0}}function un(e,r){if(br(e,r))try{kr(e)}catch{}}function cn(e){return en(e,{recursive:!0}),e}function Re(e={}){let r=cn(e.slotsDir??E()),t=e.staleMs??C,n=0;for(let i of _r(r)){if(!i.endsWith(".json"))continue;let s=ye.join(r,i),l=S(s);un(s,t),l&&!S(s)&&(n+=1)}return n}function dn(e={}){let r=e.slotsDir??E(),t=e.staleMs??C;Re({slotsDir:r,staleMs:t});let n=[];for(let i of _r(r)){if(!i.endsWith(".json"))continue;let s=ve(ye.join(r,i));s&&!xr(s,t)&&n.push(s)}return n}function he(e={}){return dn(e).length}function O(e,r={}){if(G())return{admitted:!0,slotId:null,activeSlots:0,maxSlots:Y(),reason:null};let t=r.slotsDir??E(),n=r.staleMs??C,i=r.maxSlots??Y();Re({slotsDir:t,staleMs:n});for(let l=0;l<i;l+=1){let u=an(l),v=ln(u,t),Sr=ve(v);if(br(v,n))try{kr(v)}catch{}else if(Sr||S(v))continue;let Cr={slotId:u,pid:process.pid,acquiredAt:new Date().toISOString(),command:e};try{let R=rn(v,"wx");on(R,JSON.stringify(Cr,null,2),"utf8"),Zt(R);let Or=he({slotsDir:t,staleMs:n});return{admitted:!0,slotId:u,activeSlots:Or,maxSlots:i,reason:null}}catch(R){if(R.code==="EEXIST")continue;throw R}}let s=he({slotsDir:t,staleMs:n});return{admitted:!1,slotId:null,activeSlots:s,maxSlots:i,reason:`heavy verification at capacity (${s}/${i} slots)`}}function q(e,r={}){if(G())return{admitted:!0,slotId:null,activeSlots:0,maxSlots:Y(),reason:null};let t=r.slotsDir??E(),n=r.staleMs??C,i=r.maxSlots??Y();Re({slotsDir:t,staleMs:n});let s=he({slotsDir:t,staleMs:n}),l=s<i;return{admitted:l,slotId:null,activeSlots:s,maxSlots:i,reason:l?null:`heavy verification at capacity (${s}/${i} slots); waiting for ${e}`}}function mn(e){e<=0||pn(process.execPath,["-e",`const d=Date.now()+${Math.floor(e)};while(Date.now()<d);`],{stdio:"ignore",windowsHide:!0})}function Er(e,r,t=2e3,n={}){let i=Date.now()+Math.max(0,r),s=O(e,n);for(;!s.admitted&&Date.now()<i;)mn(Math.min(t,i-Date.now())),s=O(e,n);return s}function fn(e,r={}){let t=fe(e);if(!t.heavy)return{allowed:!0,outcome:"allowed",commandClass:t.commandClass,reason:"command does not require heavy-verification token",verificationGate:{...q(e),slotId:null}};if(G())return{allowed:!0,outcome:"heavy_verification_skipped",commandClass:t.commandClass,reason:"KYNVER_HEAVY_VERIFICATION_SKIP bypasses gate",verificationGate:{...q(e),slotId:null}};let n=r.waitMs??0,i=n>0?Er(e,n,r.pollMs):O(e);return i.admitted?{allowed:!0,outcome:"allowed",commandClass:t.commandClass,reason:t.reason??"heavy-verification token acquired",verificationGate:i}:{allowed:!1,outcome:j,commandClass:t.commandClass,reason:t.reason??i.reason??j,verificationGate:i}}export{p as DEFAULT_WORKER_PROVIDER,j as HEAVY_VERIFICATION_TOKEN_REQUIRED,z as KYNVER_NO_PROD_DB_CREDENTIALS_ENV,Ur as auditReviewWorkerCredentialScope,Kr as auditWorkerEnv,d as buildWorkerSpawnEnv,fe as classifyHeavyShellCommand,hr as enforceCursorWorkerProvider,fn as gateWorkerShellCommand,c as isClaudeFamilyProvider,_ as isForbiddenWorkerEnvKey,jr as isHarnessExpertReviewWorker,be as isNoProdCredentialReviewEnvironment,_e as listForbiddenWorkerEnvKeys,ke as listOperatorAllowedWorkerEnvKeys,k as normalizeWorkerProviderName,Ht as preferCursorExecutor,$t as resolveConfiguredWorkerProvider,A as scrubWorkerEnv,pe as taskAllowsClaudeWorker,me as taskExpressesWorkerProviderPreference};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kynver-app/runtime",
3
- "version": "0.2.100",
3
+ "version": "0.2.101",
4
4
  "description": "Kynver AgentOS local execution runtime and CLI",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",