@kynver-app/runtime 0.2.37 → 0.2.41

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.
@@ -0,0 +1,5 @@
1
+ var a=(e,r,t)=>()=>{if(t)throw t[0];try{return e&&(r=e(e=0)),r}catch(n){throw t=[n],n}};import{homedir as he}from"node:os";import ye from"node:path";function xr(e){return e==="~"?he():e.startsWith("~/")||e.startsWith("~\\")?ye.join(he(),e.slice(2)):e}function x(e){return ye.resolve(xr(e))}var _=a(()=>{"use strict"});var d=a(()=>{"use strict"});var _r,Qt,Sr,en,G=a(()=>{"use strict";_r=["ANTHROPIC_API_KEY","ANALYST_API_KEY","RECRUITER_API_KEY","AUTH_SECRET","NEXTAUTH_SECRET","DATABASE_URL","PRODUCTION_DATABASE_URL","KYNVER_PRODUCTION_DATABASE_URL","REDIS_URL","GOOGLE_CLIENT_SECRET","GITHUB_CLIENT_SECRET","KYNVER_API_KEY","KYNVER_SERVICE_SECRET","KYNVER_RUNTIME_SECRET","KYNVER_CRON_SECRET","OPENCLAW_CRON_SECRET","QSTASH_TOKEN","QSTASH_CURRENT_SIGNING_KEY","QSTASH_NEXT_SIGNING_KEY","TOOL_SECRETS_KEK","TOOL_EXECUTOR_DISPATCH_SECRET","CLOUDFLARE_API_TOKEN","STRIPE_SECRET_KEY","STRIPE_WEBHOOK_SECRET","STRIPE_IDENTITY_WEBHOOK_SECRET","VOYAGE_API_KEY","PERPLEXITY_API_KEY","FRED_API_KEY","FMP_API_KEY","CURSOR_API_KEY","MEMORY_CONTENT_KEK","LLM_BYOK_KEK","KYNVER_COMMAND_AUTH_KEY","KYNVER_INSTRUCTION_BUNDLE_KEY","KYNVER_MEMORY_LEDGER_KEY","KYNVER_JWKS_PRIVATE_KEY_JWK"],Qt=new Set(_r),Sr=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY"],en=new Set(Sr)});var z=a(()=>{"use strict";_();d();G()});var q=a(()=>{"use strict";z();_()});var R=a(()=>{"use strict"});var N=a(()=>{"use strict"});var be=a(()=>{"use strict"});var gn,hn,J=a(()=>{"use strict";gn=25*1024*1024*1024,hn=12*1024*1024*1024});var kn,xn,Re=a(()=>{"use strict";J();kn=5*1024*1024*1024,xn=10*1024*1024*1024});var An,wn,X=a(()=>{"use strict";Re();J();An=30*1024*1024*1024,wn=15*1024*1024*1024});var ke=a(()=>{"use strict";d()});import Or from"node:path";var Wn,Z=a(()=>{"use strict";_();ke();Wn=Or.join(".openclaw","harness")});var B=a(()=>{"use strict";v();R();N();D();Z()});var Se=a(()=>{"use strict";v();Z();B();d()});var ee=a(()=>{"use strict";Se();d()});var Ee=a(()=>{"use strict";ee();d()});var Ce=a(()=>{"use strict"});var Oe=a(()=>{"use strict";Ce();d()});var Ae=a(()=>{"use strict"});var we=a(()=>{"use strict";Ae()});var Pe=a(()=>{"use strict";we();d()});var Ie=a(()=>{"use strict"});var Ne=a(()=>{"use strict"});var Ke=a(()=>{"use strict"});var re=a(()=>{"use strict"});var Be=a(()=>{"use strict"});var De=a(()=>{"use strict";re();Be()});var Te=a(()=>{"use strict";Oe();Pe();Ie();Ne();z();Ke();De();re();d()});var Me=a(()=>{"use strict";Te()});var Dr,Tr,We=a(()=>{"use strict";be();v();R();N();D();X();ee();Ee();Me();d();Dr=500*1024*1024,Tr=4*1024*1024*1024});var D=a(()=>{"use strict";We()});import{homedir as Mr}from"node:os";import Wr from"node:path";var Ue,te=a(()=>{"use strict";Ue=Wr.join(Mr(),".kynver",".env")});var Le=a(()=>{"use strict"});var Fe=a(()=>{"use strict";Le()});var $e=a(()=>{"use strict"});var ne=a(()=>{"use strict";Fe();$e()});var He=a(()=>{"use strict"});var je=a(()=>{"use strict";He()});var T=a(()=>{"use strict";te();_();v();ne();je()});var Ye=a(()=>{"use strict";R();R()});var Ve=a(()=>{"use strict";te();ne();T()});var Ge=a(()=>{"use strict";q();R();Ye();v();T();Ve();d();B()});import{existsSync as Vr,mkdirSync as Bs,readFileSync as Gr,writeFileSync as Ds}from"node:fs";import{homedir as zr,totalmem as Ms}from"node:os";import oe from"node:path";function qr(e){return{...e,...e.harnessRoot?.trim()?{harnessRoot:x(e.harnessRoot.trim())}:{},...e.defaultRepo?.trim()?{defaultRepo:x(e.defaultRepo.trim())}:{}}}function S(){if(!Vr(ze))return{};try{return qr(JSON.parse(Gr(ze,"utf8")))}catch{return{}}}var qe,ze,qs,Js,Xs,v=a(()=>{"use strict";q();_();d();R();N();D();X();T();Ge();B();qe=oe.join(zr(),".kynver"),ze=oe.join(qe,"config.json"),qs=oe.join(qe,"credentials");Js=500*1024*1024,Xs=4*1024*1024*1024});var yr=/^claude[-_]/i,br=/^(?:opus|sonnet|haiku)\b/i;function fe(e){let r=e.trim();return yr.test(r)||br.test(r)}function ge(e){let r=e.trim().toLowerCase();return r.startsWith("gpt-")||r.startsWith("gpt5")||r.includes("codex")}function Y(e){let r=e.trim().toLowerCase();return r.includes("composer")||r.includes("cursor")}function Rr(e){return ge(e)?"codex":fe(e)?"claude":(Y(e),"cursor")}function vr(e){if(!e.startsWith("provider:"))return null;let r=e.slice(9),t=r.indexOf(":"),n=(t>=0?r.slice(0,t):r).trim().toLowerCase(),o=t>=0&&r.slice(t+1).trim()||void 0;return n?n==="claude"||n==="opus"||n==="anthropic"?{provider:"claude",model:o,rule:o?"executor_ref:provider_claude_model":"executor_ref:provider_claude"}:n==="codex"?{provider:"codex",model:o,rule:"executor_ref:provider_codex"}:n==="openai-compatible"||n==="openai"||n==="openai_compatible"?{provider:"openai-compatible",model:o,rule:"executor_ref:provider_openai_compatible"}:n==="cursor"||n==="composer"?{provider:"cursor",model:o,rule:"executor_ref:provider_cursor"}:null:null}function kr(e){if(!e.startsWith("harness-lane:"))return null;let r=e.split(":").map(o=>o.trim()).filter(Boolean);if(r.length<2)return null;let t=r[1],n=r.slice(2).join(":");return n?fe(n)||ge(n)||Y(n)?{lane:t,model:n,provider:Rr(n),rule:"executor_ref:harness_lane_model"}:{lane:t,rule:"executor_ref:harness_lane"}:{lane:t,rule:"executor_ref:harness_lane"}}function h(e){let r=typeof e=="string"?e.trim():"";return r?vr(r)??kr(r):null}function V(e){let r=h(e);return r?!!(r.provider&&r.provider!=="cursor"||r.model&&!Y(r.model)):!1}v();var Je={codex:{id:"codex",displayName:"Codex (BYO OAuth / Hermes openai-codex)",costTier:"low",authSources:["oauth_local","api_key_env","subscription_hermes"],supportsLowRiskOrchestration:!0,supportsPrivilegedPlatformActions:!1,workerMcpTools:"unsupported",workerMcpToolsNote:"Codex (and the Hermes openai-codex path) has no per-spawn MCP config + tool allow-list, so a worker's toolset could not be held to the server's capability grant. Workers run without Kynver tools."},cursor:{id:"cursor",displayName:"Cursor / Composer",costTier:"medium",authSources:["oauth_local","api_key_env"],supportsLowRiskOrchestration:!0,supportsPrivilegedPlatformActions:!0,workerMcpTools:"unsupported",workerMcpToolsNote:"Cursor configures MCP servers per workspace, not per spawn, so a task-bound token could not be scoped to one worker. Workers run without Kynver tools."},claude:{id:"claude",displayName:"Claude Code",costTier:"high",authSources:["oauth_local"],supportsLowRiskOrchestration:!0,supportsPrivilegedPlatformActions:!0,workerMcpTools:"supported"}};function E(e){return Je[e]}function Xe(){return Object.values(Je)}import{existsSync as Xr}from"node:fs";import{homedir as Zr}from"node:os";import O from"node:path";import{createHash as Ze}from"node:crypto";import{statSync as Jr}from"node:fs";import{spawnSync as Qe}from"node:child_process";function y(e){try{let r=Jr(e),t=`${e}|${r.size}|${r.mtimeMs}`;return Ze("sha256").update(t).digest("hex").slice(0,16)}catch{return}}function C(e){return Ze("sha256").update(`env:${e}`).digest("hex").slice(0,16)}function p(e,r){for(let t of r){let n=process.env[t]?.trim();if(n)return n}return e}function m(e,r,t={}){let n=t.timeoutMs??8e3;try{let o=Qe(e,r,{encoding:"utf8",timeout:n,env:{...process.env,...t.env,CI:"1",NO_COLOR:"1"}});if(o.status===0)return{ok:!0,note:t.okNote??`${e} ${r.join(" ")}: ok`};let i=(o.stderr||o.stdout||"").trim(),s=t.failPrefix??`${e} ${r.join(" ")} failed`;return{ok:!1,note:i?`${s}: ${i.slice(0,200)}`:s}}catch(o){return{ok:!1,note:o instanceof Error?o.message:`${e} probe failed`}}}function M(e,r,t={}){let n=t.timeoutMs??8e3;try{return Qe(e,r,{stdio:"ignore",timeout:n,env:{...process.env,CI:"1",NO_COLOR:"1"}}).status===0?{ok:!0,note:t.okNote??`${e} authenticated`}:{ok:!1,note:t.failNote??`${e} not authenticated`}}catch(o){return{ok:!1,note:o instanceof Error?o.message:`${e} auth probe failed`}}}var Qr="codex";function et(){let e=Zr();return[process.env.CODEX_HOME?.trim()?O.join(O.resolve(process.env.CODEX_HOME.trim()),"auth.json"):null,O.join(e,".codex","auth.json"),O.join(e,".config","codex","auth.json")].filter(t=>!!t)}function rt(e){return O.dirname(e)}function tt(e){let r,t;for(let n of et()){if(!Xr(n))continue;r??=n;let o=m(e,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status",env:{CODEX_HOME:rt(n)}});if(t??=o,o.ok)return{authPath:n,login:o}}return{authPath:r,login:t??m(e,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status"})}}function er(e=new Date().toISOString()){let r=p(Qr,["KYNVER_CODEX_BIN","CODEX_BIN"]);if(process.env.CODEX_API_KEY?.trim())return{providerId:"codex",ready:!0,authSource:"api_key_env",sessionFingerprint:C("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}=tt(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 nt}from"node:fs";import{homedir as ot}from"node:os";import ie from"node:path";function it(){let e=process.env.HERMES_HOME?.trim(),r=e?ie.resolve(e):ie.join(ot(),".hermes");return ie.join(r,"auth.json")}function W(e=new Date().toISOString()){let r=p("hermes",["KYNVER_HERMES_BIN","HERMES_BIN"]),t=m(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=it(),o=nt(n),i=M(r,["auth","status","openai-codex"],{okNote:"hermes openai-codex: logged in",failNote:"hermes openai-codex: not logged in"}),s=t.ok&&i.ok;return{path:"hermes_openai_codex",ready:s,authSource:s?"subscription_hermes":"none",sessionFingerprint:o?y(n):void 0,checkedAt:e,note:s?"Hermes openai-codex subscription session bound (ChatGPT Codex OAuth)":[t.note,i.note,o?void 0:"no ~/.hermes/auth.json"].filter(Boolean).join("; ")}}function A(e=new Date().toISOString()){let r=er(e);if(r.ready)return{...r,path:"codex_cli"};let t=W(e);return t.ready?{providerId:"codex",ready:!0,authSource:t.authSource,sessionFingerprint:t.sessionFingerprint,checkedAt:t.checkedAt,note:t.note,path:"hermes_openai_codex",hermesOpenAiCodex:t}:{providerId:"codex",ready:!1,authSource:"none",checkedAt:e,path:"none",hermesOpenAiCodex:t,note:[r.note,t.note].filter(Boolean).join("; ")||"Codex CLI and Hermes openai-codex unavailable"}}var rr=["low","medium","high"],tr={oauth_local:0,subscription_hermes:0,runner_token:1,api_key_env:2,none:3};function nr(e,r){let t=E(e);return r==="privileged"?t.supportsPrivilegedPlatformActions:r==="low"?t.supportsLowRiskOrchestration:!0}function st(e,r){let t=E(e.providerId),n=E(r.providerId),o=rr.indexOf(t.costTier)-rr.indexOf(n.costTier);if(o!==0)return o;let i=tr[e.binding.authSource]-tr[r.binding.authSource];return i!==0?i:e.providerId.localeCompare(r.providerId)}function se(e){let r=Xe().map(l=>({providerId:l.id,binding:e.inventory.bindings[l.id]})).filter(l=>l.binding.ready&&nr(l.providerId,e.riskClass));if(r.length===0)return null;let n=[...r].sort(st)[0],o="codex";if(n.providerId===o)return{providerId:n.providerId,binding:n.binding};let i=e.inventory.bindings[o],s;return nr(o,e.riskClass)?i.ready||(s=i.note??`${o} not bound`):s=`${e.riskClass} orchestration requires privileged-capable provider`,{providerId:n.providerId,binding:n.binding,escalatedFrom:o,escalatedReason:s}}import{existsSync as at}from"node:fs";import{homedir as lt}from"node:os";import ut from"node:path";var ct="claude";function dt(){let e=lt();return[ut.join(e,".claude",".credentials.json")]}function or(e=new Date().toISOString()){let r=p(ct,["KYNVER_CLAUDE_BIN","CLAUDE_BIN"]);if(process.env.ANTHROPIC_API_KEY?.trim())return{providerId:"claude",ready:!1,authSource:"api_key_env",sessionFingerprint:C("ANTHROPIC_API_KEY"),checkedAt:e,note:"ANTHROPIC_API_KEY present but scrubbed from worker env (deployment secret) \u2014 use `claude` CLI login (OAuth) for harness workers"};let t=m(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=dt().find(s=>at(s)),o=M(r,["auth","status"],{okNote:"claude auth status: authenticated",failNote:"claude auth status: not authenticated"}),i=t.ok&&(o.ok||!!n);return{providerId:"claude",ready:i,authSource:"oauth_local",sessionFingerprint:n?y(n):void 0,checkedAt:e,note:i?"Local Claude Code OAuth session bound on runner":[t.note,o.note,n?void 0:"no ~/.claude/.credentials.json"].filter(Boolean).join("; ")}}import{existsSync as pt}from"node:fs";import{homedir as mt}from"node:os";import ae from"node:path";var ft="agent";function gt(){let e=mt(),r=[ae.join(e,".config","cursor","auth.json")];if(process.platform==="win32"){let t=process.env.LOCALAPPDATA?.trim(),n=process.env.APPDATA?.trim();t&&r.push(ae.join(t,"cursor-agent","auth.json")),n&&r.push(ae.join(n,"cursor","auth.json"))}return r}function ir(e=new Date().toISOString()){let r=p(ft,["KYNVER_CURSOR_AGENT_BIN","CURSOR_AGENT_BIN"]);if(process.env.CURSOR_API_KEY?.trim())return{providerId:"cursor",ready:!1,authSource:"api_key_env",sessionFingerprint:C("CURSOR_API_KEY"),checkedAt:e,note:"CURSOR_API_KEY present but scrubbed from worker env (deployment secret) \u2014 use `agent login` (OAuth) for harness workers"};let t=m(r,["-v"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=gt().find(i=>pt(i)),o=!!n&&t.ok;return{providerId:"cursor",ready:o,authSource:"oauth_local",sessionFingerprint:n?y(n):void 0,checkedAt:e,note:o?"Local Cursor/Composer OAuth session bound on runner":[t.note,n?void 0:"no ~/.config/cursor/auth.json"].filter(Boolean).join("; ")}}import{existsSync as ht,readFileSync as yt}from"node:fs";import{homedir as bt}from"node:os";import le from"node:path";var Rt=["OPENAI_API_KEY","ANTHROPIC_API_KEY","KYNVER_API_KEY","KYNVER_BASE_URL"];function vt(){let e=process.env.HERMES_HOME?.trim(),r=e?le.resolve(e):le.join(bt(),".hermes");return le.join(r,".env")}function kt(e){try{let r=yt(e,"utf8"),t=[];for(let n of Rt)new RegExp(`^${n}=`,"m").test(r)&&t.push(n);return t}catch{return[]}}function sr(e=new Date().toISOString()){let r=p("hermes",["KYNVER_HERMES_BIN","HERMES_BIN"]),t=m(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=vt(),o=ht(n),i=o?kt(n):[],l=i.some(u=>u.endsWith("_API_KEY"))?"api_key_env":o?"oauth_local":"none",c=t.ok&&o;return{adapterId:"hermes",cliAvailable:t.ok,profileBound:o,authSource:l,sessionFingerprint:o?y(n):void 0,checkedAt:e,note:c?`Hermes profile bound (${i.length?`keys: ${i.join(", ")}`:"no API keys detected"})`:[t.note,o?void 0:"no ~/.hermes/.env"].filter(Boolean).join("; ")}}function ar(e={}){let r=e.nowIso?.()??new Date().toISOString(),t=A(r),n={codex:t,cursor:ir(r),claude:or(r)},o=Object.values(n).filter(i=>i.ready).length;return{generatedAt:r,bindings:n,cloudApiCredits:{anthropicApiKey:!!process.env.ANTHROPIC_API_KEY?.trim(),openaiApiKey:!!process.env.OPENAI_API_KEY?.trim(),codexApiKey:!!process.env.CODEX_API_KEY?.trim()},workerEndpoint:{baseUrlConfigured:!!process.env.KYNVER_WORKER_BASE_URL?.trim(),apiKeyConfigured:!!process.env.KYNVER_WORKER_API_KEY?.trim()},hermes:sr(r),hermesOpenAiCodex:W(r),codexAdapterPath:t.path,readyCount:o}}var xt=[/\bprivileged\b/i,/\bproduction\s+db\b/i,/\bdb:push\b/i,/\bmigration\b/i,/\bdeploy\b/i,/\bsecrets?\b/i,/\bstripe\b/i,/\[require-approval\]/i,/\[operator-only\]/i],_t=[/\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 ue(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function St(e){let r=ue(e,"executorRef").toLowerCase(),t=ue(e,"title").toLowerCase(),n=ue(e,"description").toLowerCase(),o=`${r}
2
+ ${t}
3
+ ${n}`;return xt.some(i=>i.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":_t.some(i=>i.test(o))?"low":"elevated"}function Et(e){let r=E(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 Ct(e){let r=e.inventory??ar();return e.codexBinding?{...r,bindings:{...r.bindings,codex:e.codexBinding}}:r}function k(e){let r=Et({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 lr(e){let r=e.task??{},t=St(r),n=Ct({inventory:e.inventory,codexBinding:e.codexBinding??(e.inventory?null:A())}),o=e.preferLowCost===!1?null:e.explicitProvider?.trim().toLowerCase(),i=e.explicitModel?.trim()||void 0,s=ce;if(o==="codex"||o==="provider:codex"){let u=n.bindings.codex;if(!u.ready){let g=se({inventory:n,riskClass:t});return k(g?{providerId:g.providerId,binding:g.binding,riskClass:t,routingRule:"orchestration:explicit_codex_unavailable_cost_aware",model:i,escalatedFrom:"codex",escalatedReason:u.note??"codex oauth not bound"}:{providerId:s,binding:n.bindings[s],riskClass:t,routingRule:"orchestration:codex_unavailable_escalate_cursor",model:i,escalatedFrom:"codex",escalatedReason:u.note??"codex oauth not bound"})}return k({providerId:"codex",binding:u,riskClass:t,routingRule:"orchestration:explicit_codex",model:i})}if(o==="cursor"||o==="provider:cursor"){let u=n.bindings.cursor;if(u.ready)return k({providerId:"cursor",binding:u,riskClass:t,routingRule:"orchestration:explicit_cursor",model:i})}if(o==="claude"||o==="provider:claude"){let u=n.bindings.claude;if(u.ready)return k({providerId:"claude",binding:u,riskClass:t,routingRule:"orchestration:explicit_claude",model:i})}let l=se({inventory:n,riskClass:t});if(l)return k({providerId:l.providerId,binding:l.binding,riskClass:t,routingRule:`orchestration:cost_aware_${l.providerId}`,model:i,escalatedFrom:l.escalatedFrom,escalatedReason:l.escalatedReason});let c=n.bindings.codex;return k({providerId:s,binding:n.bindings[s],riskClass:t,routingRule:c.ready?"orchestration:inventory_empty_default_cursor":"orchestration:codex_unavailable_default_cursor",model:i,...c.ready?{}:{escalatedFrom:"codex",escalatedReason:c.note??"codex oauth not bound"}})}G();d();var Ot="kynver",At=["agent_os_context_envelope","agent_os_search_memory","agent_os_search_skills","agent_os_get_skill","agent_os_progress_note"],wt=At.map(e=>`mcp__${Ot}__${e}`);var U="claude-sonnet-4-6",w="claude-opus-4-8";d();d();var sl=process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.4";function It(){return process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.4"}var L=It();d();var pe="openai-compatible",xl=600*1e3;var dr="claude-sonnet-4-6",H="composer-2.5";function f(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function Nt(e){if(!e)return;let r=f(e,"workerModelOverride")||f(e,"modelOverride");return r||`${f(e,"title")}
4
+ ${f(e,"description")}
5
+ ${f(e,"executorRef")}`.match(/\[(?:worker-)?model:\s*([^\]\n]+)\]/i)?.[1]?.trim()||void 0}function ur(e){return e.toLowerCase()}function j(e=S()){let r=e.defaultModel?.trim();if(r)return r;let t=process.env.KYNVER_DEFAULT_MODEL?.trim();return t||dr}function F(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":"cursor"}function Kt(e,r){let t=e.trim().toLowerCase(),n=r?.trim();return t==="cursor"?{model:H,provider:"cursor",rule:n&&n!=="cursor"?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:t==="claude"||t==="anthropic"?{model:U,provider:"claude",rule:n&&n!=="claude"?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:null}function cr(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 Bt=new Set(["report_reviewer","deep_reviewer","plan_reviewer"]);function pr(e,r,t){return Bt.has(e)?w:r.includes("review")||/^review[\s:]/.test(t)||t.includes("critique")?w:U}function mr(e){let r=ur(f(e,"executorRef")),t=f(e,"title").toLowerCase(),n=f(e,"priority")||"normal",o=ur(f(e,"roleLane"));if(r.includes("provider:claude")||r.startsWith("claude:")){let s=pr(o,r,t);return{provider:"claude",model:s,rule:s===w?"factory:claude_review":"factory:claude_implementation"}}if(r.includes("provider:codex")||r.startsWith("codex:"))return{provider:"codex",model:L,rule:"lane:codex_orchestration"};if(r.includes("provider:openai")||r.startsWith("openai-compatible:")){let s=h(f(e,"executorRef"));return{provider:pe,...s?.model?{model:s.model}:{},rule:"lane:openai_compatible"}}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:L,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 cr(r,t)||o==="deep_reviewer"?{provider:"cursor",rule:"lane:deep_review"}:{provider:"cursor",rule:"lane:review"};if(cr(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 i=j();return{model:i,provider:F(i),rule:"default:global"}}function Dt(e){return e?h(f(e,"executorRef")):null}function Tt(e){let r,t=Dt(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 l=e.explicitModel.trim(),c=Kt(l,e.explicitProvider);c?r=c:r={model:l,provider:e.explicitProvider?.trim()||F(l),rule:"explicit:cli",requestedModel:l}}else if(n)r={model:n,provider:o||F(n),rule:t?.rule??"executor_ref:model",requestedModel:n};else if(e.task&&$(e.task)){let l=Nt(e.task),c,u;if(l)c=l,u="task:provider_override";else{let g=typeof e.task.roleLane=="string"?e.task.roleLane.toLowerCase():"",me=typeof e.task.executorRef=="string"?e.task.executorRef.toLowerCase():"",hr=typeof e.task.title=="string"?e.task.title.toLowerCase():"";c=pr(g,me,hr),u=c===w?"factory:claude_review":"factory:claude_implementation"}r={model:c,provider:"claude",rule:u,requestedModel:c}}else if(e.task&&Object.keys(e.task).length>0){let l=mr(e.task);r={...l,requestedModel:l.model}}else{let l=j();r={model:l,provider:e.explicitProvider?.trim()||F(l),rule:"default:global",requestedModel:l}}let i=fr({routing:r,task:e.task,explicitProvider:e.explicitProvider,explicitProviderIsOperatorOverride:e.explicitProviderIsOperatorOverride});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"||b(i.provider)&&(e.explicitProviderIsOperatorOverride||$(e.task))||i.provider===pe)return i;let s=lr({task:e.task,explicitProvider:e.explicitProvider??i.provider,explicitModel:i.model,inventory:e.orchestrationInventory??void 0});return{provider:s.provider,model:s.provider==="codex"?s.model??i.model??L:i.model,rule:s.rule,requestedModel:i.requestedModel,orchestrationAudit:s.audit}}function Mt(e,r,t){return e||r||t||j()||U}var ce="cursor";var Wt=new Set(["claude","opus","anthropic"]),Ut=[/\[worker-provider:\s*claude\]/i,/\[use-claude-worker\]/i,/\[operator-worker-provider:\s*claude\]/i];function P(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function b(e){if(!e?.trim())return!1;let r=e.trim().toLowerCase();return Wt.has(r)?!0:r.includes("claude")||r.includes("opus")}function $(e){if(!e)return!1;let r=e.workerProviderOverride;if(typeof r=="string"&&b(r))return!0;let t=P(e,"executorRef").toLowerCase();if(t==="provider:claude"||t.startsWith("provider:claude:")||t.includes("claude-worker-override")||t.includes("operator-claude"))return!0;let n=h(P(e,"executorRef"));if(n?.provider&&b(n.provider)||n?.model&&b(Lt(n.model)))return!0;let o=P(e,"description");if(Ut.some(s=>s.test(o)))return!0;let i=P(e,"title");return!!/\[use-claude-worker\]/i.test(i)}function Lt(e){let r=e.trim().toLowerCase();return/^claude[-_]/.test(r)||/^(?:opus|sonnet|haiku)\b/.test(r)?"claude":r}function Ft(e,r){return{provider:ce,model:H,rule:`policy:cursor_default${r}`,requestedModel:e}}var $t=["explicit:","executor_ref:","factory:","task:"];function Ht(e){return $t.some(r=>e.startsWith(r))}function jt(e){if(!e)return!1;let r=e.workerProviderOverride;return typeof r=="string"&&r.trim()||h(P(e,"executorRef"))?.provider?!0:$(e)}function fr(e){let{routing:r,task:t}=e,n=e.explicitProvider?.trim().toLowerCase();if(e.explicitProviderIsOperatorOverride&&b(n))return{...r,provider:"claude",rule:r.rule.startsWith("explicit:")?r.rule:"explicit:operator_provider"};if(n||Ht(r.rule)||jt(t)||!b(r.provider))return r;let o=r.rule&&r.rule!=="default:global"?`:${r.rule.replace(/:/g,"_")}`:"";return Ft(r.model,o)}function Yt(e){let r=e?.executorRef;return typeof r=="string"?r.trim():""}function gr(e){return e?.trim()||void 0}function Vt(e){let r=Yt(e.task),t=h(r),n=e.explicitProvider?.trim().toLowerCase(),o=gr(e.explicitModel??void 0),i=n||t?.provider,s=o||t?.model,l=n||o?"cli":t?.rule??"none";if(!i&&!s)return{ok:!0};!i&&s&&(/^claude[-_]/i.test(s)||/^(?:opus|sonnet|haiku)\b/i.test(s))&&(i="claude");let c=e.routing.provider,u=gr(e.routing.model),g={provider:c,model:u,rule:e.routing.rule};return i&&i!=="cursor"||r&&V(r)||n&&n!=="cursor"?c==="cursor"?{ok:!1,error:`model_routing_mismatch: requested ${i??"non-cursor"}${s?` model=${s}`:""} (${l}) but routing resolved to cursor (${e.routing.rule})`,requested:{provider:i,model:s,source:l},resolved:g}:s&&u&&s!==u&&!b(c)?{ok:!1,error:`model_routing_mismatch: requested model=${s} (${l}) but routing resolved model=${u} (${e.routing.rule})`,requested:{provider:i,model:s,source:l},resolved:g}:{ok:!0,requested:{provider:i,model:s,source:l},resolved:g}:{ok:!0,resolved:g}}export{H as CURSOR_DEFAULT_MODEL,dr as GLOBAL_DEFAULT_MODEL,Vt as assessDispatchModelGuard,V as executorRefRequestsNonCursorWorker,mr as inferModelRoutingFromTask,h as parseExecutorRefRoutingIntent,j as resolveGlobalDefaultModel,Mt as resolveModelFallback,Tt as resolveWorkerLaunch};
@@ -1,5 +1,5 @@
1
- var a=(e,r,t)=>()=>{if(t)throw t[0];try{return e&&(r=e(e=0)),r}catch(n){throw t=[n],n}};import{homedir as he}from"node:os";import ye from"node:path";function xr(e){return e==="~"?he():e.startsWith("~/")||e.startsWith("~\\")?ye.join(he(),e.slice(2)):e}function x(e){return ye.resolve(xr(e))}var _=a(()=>{"use strict"});var d=a(()=>{"use strict"});var _r,Zt,Sr,Qt,G=a(()=>{"use strict";_r=["ANTHROPIC_API_KEY","ANALYST_API_KEY","RECRUITER_API_KEY","AUTH_SECRET","NEXTAUTH_SECRET","DATABASE_URL","PRODUCTION_DATABASE_URL","KYNVER_PRODUCTION_DATABASE_URL","REDIS_URL","GOOGLE_CLIENT_SECRET","GITHUB_CLIENT_SECRET","KYNVER_API_KEY","KYNVER_SERVICE_SECRET","KYNVER_RUNTIME_SECRET","KYNVER_CRON_SECRET","OPENCLAW_CRON_SECRET","QSTASH_TOKEN","QSTASH_CURRENT_SIGNING_KEY","QSTASH_NEXT_SIGNING_KEY","TOOL_SECRETS_KEK","TOOL_EXECUTOR_DISPATCH_SECRET","CLOUDFLARE_API_TOKEN","STRIPE_SECRET_KEY","STRIPE_WEBHOOK_SECRET","STRIPE_IDENTITY_WEBHOOK_SECRET","VOYAGE_API_KEY","PERPLEXITY_API_KEY","FRED_API_KEY","FMP_API_KEY","CURSOR_API_KEY","MEMORY_CONTENT_KEK","LLM_BYOK_KEK","KYNVER_COMMAND_AUTH_KEY","KYNVER_INSTRUCTION_BUNDLE_KEY","KYNVER_MEMORY_LEDGER_KEY","KYNVER_JWKS_PRIVATE_KEY_JWK"],Zt=new Set(_r),Sr=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY"],Qt=new Set(Sr)});var z=a(()=>{"use strict";_();d();G()});var q=a(()=>{"use strict";z();_()});var R=a(()=>{"use strict"});var N=a(()=>{"use strict"});var be=a(()=>{"use strict"});var gn,hn,J=a(()=>{"use strict";gn=25*1024*1024*1024,hn=12*1024*1024*1024});var kn,xn,Re=a(()=>{"use strict";J();kn=5*1024*1024*1024,xn=10*1024*1024*1024});var An,wn,X=a(()=>{"use strict";Re();J();An=30*1024*1024*1024,wn=15*1024*1024*1024});var ke=a(()=>{"use strict";d()});import Cr from"node:path";var Wn,Z=a(()=>{"use strict";_();ke();Wn=Cr.join(".openclaw","harness")});var B=a(()=>{"use strict";v();R();N();D();Z()});var Se=a(()=>{"use strict";v();Z();B();d()});var ee=a(()=>{"use strict";Se();d()});var Ee=a(()=>{"use strict";ee();d()});var Ce=a(()=>{"use strict"});var Oe=a(()=>{"use strict";Ce();d()});var Ae=a(()=>{"use strict"});var we=a(()=>{"use strict";Ae()});var Pe=a(()=>{"use strict";we();d()});var Ie=a(()=>{"use strict"});var Ne=a(()=>{"use strict"});var Ke=a(()=>{"use strict"});var re=a(()=>{"use strict"});var Be=a(()=>{"use strict"});var De=a(()=>{"use strict";re();Be()});var Te=a(()=>{"use strict";Oe();Pe();Ie();Ne();z();Ke();De();re();d()});var Me=a(()=>{"use strict";Te()});var Br,Dr,We=a(()=>{"use strict";be();v();R();N();D();X();ee();Ee();Me();d();Br=500*1024*1024,Dr=4*1024*1024*1024});var D=a(()=>{"use strict";We()});import{homedir as Tr}from"node:os";import Mr from"node:path";var Ue,te=a(()=>{"use strict";Ue=Mr.join(Tr(),".kynver",".env")});var Le=a(()=>{"use strict"});var Fe=a(()=>{"use strict";Le()});var $e=a(()=>{"use strict"});var ne=a(()=>{"use strict";Fe();$e()});var He=a(()=>{"use strict"});var je=a(()=>{"use strict";He()});var T=a(()=>{"use strict";te();_();v();ne();je()});var Ye=a(()=>{"use strict";R();R()});var Ve=a(()=>{"use strict";te();ne();T()});var Ge=a(()=>{"use strict";q();R();Ye();v();T();Ve();d();B()});import{existsSync as Yr,mkdirSync as Bs,readFileSync as Vr,writeFileSync as Ds}from"node:fs";import{homedir as Gr,totalmem as Ms}from"node:os";import oe from"node:path";function zr(e){return{...e,...e.harnessRoot?.trim()?{harnessRoot:x(e.harnessRoot.trim())}:{},...e.defaultRepo?.trim()?{defaultRepo:x(e.defaultRepo.trim())}:{}}}function S(){if(!Yr(ze))return{};try{return zr(JSON.parse(Vr(ze,"utf8")))}catch{return{}}}var qe,ze,qs,Js,Xs,v=a(()=>{"use strict";q();_();d();R();N();D();X();T();Ge();B();qe=oe.join(Gr(),".kynver"),ze=oe.join(qe,"config.json"),qs=oe.join(qe,"credentials");Js=500*1024*1024,Xs=4*1024*1024*1024});var yr=/^claude[-_]/i,br=/^(?:opus|sonnet|haiku)\b/i;function fe(e){let r=e.trim();return yr.test(r)||br.test(r)}function ge(e){let r=e.trim().toLowerCase();return r.startsWith("gpt-")||r.startsWith("gpt5")||r.includes("codex")}function Y(e){let r=e.trim().toLowerCase();return r.includes("composer")||r.includes("cursor")}function Rr(e){return ge(e)?"codex":fe(e)?"claude":(Y(e),"cursor")}function vr(e){if(!e.startsWith("provider:"))return null;let r=e.slice(9),t=r.indexOf(":"),n=(t>=0?r.slice(0,t):r).trim().toLowerCase(),o=t>=0&&r.slice(t+1).trim()||void 0;return n?n==="claude"||n==="opus"||n==="anthropic"?{provider:"claude",model:o,rule:o?"executor_ref:provider_claude_model":"executor_ref:provider_claude"}:n==="codex"?{provider:"codex",model:o,rule:"executor_ref:provider_codex"}:n==="openai-compatible"||n==="openai"||n==="openai_compatible"?{provider:"openai-compatible",model:o,rule:"executor_ref:provider_openai_compatible"}:n==="cursor"||n==="composer"?{provider:"cursor",model:o,rule:"executor_ref:provider_cursor"}:null:null}function kr(e){if(!e.startsWith("harness-lane:"))return null;let r=e.split(":").map(o=>o.trim()).filter(Boolean);if(r.length<2)return null;let t=r[1],n=r.slice(2).join(":");return n?fe(n)||ge(n)||Y(n)?{lane:t,model:n,provider:Rr(n),rule:"executor_ref:harness_lane_model"}:{lane:t,rule:"executor_ref:harness_lane"}:{lane:t,rule:"executor_ref:harness_lane"}}function h(e){let r=typeof e=="string"?e.trim():"";return r?vr(r)??kr(r):null}function V(e){let r=h(e);return r?!!(r.provider&&r.provider!=="cursor"||r.model&&!Y(r.model)):!1}v();var Je={codex:{id:"codex",displayName:"Codex (BYO OAuth / Hermes openai-codex)",costTier:"low",authSources:["oauth_local","api_key_env","subscription_hermes"],supportsLowRiskOrchestration:!0,supportsPrivilegedPlatformActions:!1,workerMcpTools:"unsupported",workerMcpToolsNote:"Codex (and the Hermes openai-codex path) has no per-spawn MCP config + tool allow-list, so a worker's toolset could not be held to the server's capability grant. Workers run without Kynver tools."},cursor:{id:"cursor",displayName:"Cursor / Composer",costTier:"medium",authSources:["oauth_local","api_key_env"],supportsLowRiskOrchestration:!0,supportsPrivilegedPlatformActions:!0,workerMcpTools:"unsupported",workerMcpToolsNote:"Cursor configures MCP servers per workspace, not per spawn, so a task-bound token could not be scoped to one worker. Workers run without Kynver tools."},claude:{id:"claude",displayName:"Claude Code",costTier:"high",authSources:["oauth_local"],supportsLowRiskOrchestration:!0,supportsPrivilegedPlatformActions:!0,workerMcpTools:"supported"}};function E(e){return Je[e]}function Xe(){return Object.values(Je)}import{existsSync as Jr}from"node:fs";import{homedir as Xr}from"node:os";import O from"node:path";import{createHash as Ze}from"node:crypto";import{statSync as qr}from"node:fs";import{spawnSync as Qe}from"node:child_process";function y(e){try{let r=qr(e),t=`${e}|${r.size}|${r.mtimeMs}`;return Ze("sha256").update(t).digest("hex").slice(0,16)}catch{return}}function C(e){return Ze("sha256").update(`env:${e}`).digest("hex").slice(0,16)}function p(e,r){for(let t of r){let n=process.env[t]?.trim();if(n)return n}return e}function m(e,r,t={}){let n=t.timeoutMs??8e3;try{let o=Qe(e,r,{encoding:"utf8",timeout:n,env:{...process.env,...t.env,CI:"1",NO_COLOR:"1"}});if(o.status===0)return{ok:!0,note:t.okNote??`${e} ${r.join(" ")}: ok`};let i=(o.stderr||o.stdout||"").trim(),s=t.failPrefix??`${e} ${r.join(" ")} failed`;return{ok:!1,note:i?`${s}: ${i.slice(0,200)}`:s}}catch(o){return{ok:!1,note:o instanceof Error?o.message:`${e} probe failed`}}}function M(e,r,t={}){let n=t.timeoutMs??8e3;try{return Qe(e,r,{stdio:"ignore",timeout:n,env:{...process.env,CI:"1",NO_COLOR:"1"}}).status===0?{ok:!0,note:t.okNote??`${e} authenticated`}:{ok:!1,note:t.failNote??`${e} not authenticated`}}catch(o){return{ok:!1,note:o instanceof Error?o.message:`${e} auth probe failed`}}}var Zr="codex";function Qr(){let e=Xr();return[process.env.CODEX_HOME?.trim()?O.join(O.resolve(process.env.CODEX_HOME.trim()),"auth.json"):null,O.join(e,".codex","auth.json"),O.join(e,".config","codex","auth.json")].filter(t=>!!t)}function et(e){return O.dirname(e)}function rt(e){let r,t;for(let n of Qr()){if(!Jr(n))continue;r??=n;let o=m(e,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status",env:{CODEX_HOME:et(n)}});if(t??=o,o.ok)return{authPath:n,login:o}}return{authPath:r,login:t??m(e,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status"})}}function er(e=new Date().toISOString()){let r=p(Zr,["KYNVER_CODEX_BIN","CODEX_BIN"]);if(process.env.CODEX_API_KEY?.trim())return{providerId:"codex",ready:!0,authSource:"api_key_env",sessionFingerprint:C("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}=rt(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 tt}from"node:fs";import{homedir as nt}from"node:os";import ie from"node:path";function ot(){let e=process.env.HERMES_HOME?.trim(),r=e?ie.resolve(e):ie.join(nt(),".hermes");return ie.join(r,"auth.json")}function W(e=new Date().toISOString()){let r=p("hermes",["KYNVER_HERMES_BIN","HERMES_BIN"]),t=m(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=ot(),o=tt(n),i=M(r,["auth","status","openai-codex"],{okNote:"hermes openai-codex: logged in",failNote:"hermes openai-codex: not logged in"}),s=t.ok&&i.ok;return{path:"hermes_openai_codex",ready:s,authSource:s?"subscription_hermes":"none",sessionFingerprint:o?y(n):void 0,checkedAt:e,note:s?"Hermes openai-codex subscription session bound (ChatGPT Codex OAuth)":[t.note,i.note,o?void 0:"no ~/.hermes/auth.json"].filter(Boolean).join("; ")}}function A(e=new Date().toISOString()){let r=er(e);if(r.ready)return{...r,path:"codex_cli"};let t=W(e);return t.ready?{providerId:"codex",ready:!0,authSource:t.authSource,sessionFingerprint:t.sessionFingerprint,checkedAt:t.checkedAt,note:t.note,path:"hermes_openai_codex",hermesOpenAiCodex:t}:{providerId:"codex",ready:!1,authSource:"none",checkedAt:e,path:"none",hermesOpenAiCodex:t,note:[r.note,t.note].filter(Boolean).join("; ")||"Codex CLI and Hermes openai-codex unavailable"}}var rr=["low","medium","high"],tr={oauth_local:0,subscription_hermes:0,runner_token:1,api_key_env:2,none:3};function nr(e,r){let t=E(e);return r==="privileged"?t.supportsPrivilegedPlatformActions:r==="low"?t.supportsLowRiskOrchestration:!0}function it(e,r){let t=E(e.providerId),n=E(r.providerId),o=rr.indexOf(t.costTier)-rr.indexOf(n.costTier);if(o!==0)return o;let i=tr[e.binding.authSource]-tr[r.binding.authSource];return i!==0?i:e.providerId.localeCompare(r.providerId)}function se(e){let r=Xe().map(l=>({providerId:l.id,binding:e.inventory.bindings[l.id]})).filter(l=>l.binding.ready&&nr(l.providerId,e.riskClass));if(r.length===0)return null;let n=[...r].sort(it)[0],o="codex";if(n.providerId===o)return{providerId:n.providerId,binding:n.binding};let i=e.inventory.bindings[o],s;return nr(o,e.riskClass)?i.ready||(s=i.note??`${o} not bound`):s=`${e.riskClass} orchestration requires privileged-capable provider`,{providerId:n.providerId,binding:n.binding,escalatedFrom:o,escalatedReason:s}}import{existsSync as st}from"node:fs";import{homedir as at}from"node:os";import lt from"node:path";var ut="claude";function ct(){let e=at();return[lt.join(e,".claude",".credentials.json")]}function or(e=new Date().toISOString()){let r=p(ut,["KYNVER_CLAUDE_BIN","CLAUDE_BIN"]);if(process.env.ANTHROPIC_API_KEY?.trim())return{providerId:"claude",ready:!1,authSource:"api_key_env",sessionFingerprint:C("ANTHROPIC_API_KEY"),checkedAt:e,note:"ANTHROPIC_API_KEY present but scrubbed from worker env (deployment secret) \u2014 use `claude` CLI login (OAuth) for harness workers"};let t=m(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=ct().find(s=>st(s)),o=M(r,["auth","status"],{okNote:"claude auth status: authenticated",failNote:"claude auth status: not authenticated"}),i=t.ok&&(o.ok||!!n);return{providerId:"claude",ready:i,authSource:"oauth_local",sessionFingerprint:n?y(n):void 0,checkedAt:e,note:i?"Local Claude Code OAuth session bound on runner":[t.note,o.note,n?void 0:"no ~/.claude/.credentials.json"].filter(Boolean).join("; ")}}import{existsSync as dt}from"node:fs";import{homedir as pt}from"node:os";import ae from"node:path";var mt="agent";function ft(){let e=pt(),r=[ae.join(e,".config","cursor","auth.json")];if(process.platform==="win32"){let t=process.env.LOCALAPPDATA?.trim(),n=process.env.APPDATA?.trim();t&&r.push(ae.join(t,"cursor-agent","auth.json")),n&&r.push(ae.join(n,"cursor","auth.json"))}return r}function ir(e=new Date().toISOString()){let r=p(mt,["KYNVER_CURSOR_AGENT_BIN","CURSOR_AGENT_BIN"]);if(process.env.CURSOR_API_KEY?.trim())return{providerId:"cursor",ready:!1,authSource:"api_key_env",sessionFingerprint:C("CURSOR_API_KEY"),checkedAt:e,note:"CURSOR_API_KEY present but scrubbed from worker env (deployment secret) \u2014 use `agent login` (OAuth) for harness workers"};let t=m(r,["-v"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=ft().find(i=>dt(i)),o=!!n&&t.ok;return{providerId:"cursor",ready:o,authSource:"oauth_local",sessionFingerprint:n?y(n):void 0,checkedAt:e,note:o?"Local Cursor/Composer OAuth session bound on runner":[t.note,n?void 0:"no ~/.config/cursor/auth.json"].filter(Boolean).join("; ")}}import{existsSync as gt,readFileSync as ht}from"node:fs";import{homedir as yt}from"node:os";import le from"node:path";var bt=["OPENAI_API_KEY","ANTHROPIC_API_KEY","KYNVER_API_KEY","KYNVER_BASE_URL"];function Rt(){let e=process.env.HERMES_HOME?.trim(),r=e?le.resolve(e):le.join(yt(),".hermes");return le.join(r,".env")}function vt(e){try{let r=ht(e,"utf8"),t=[];for(let n of bt)new RegExp(`^${n}=`,"m").test(r)&&t.push(n);return t}catch{return[]}}function sr(e=new Date().toISOString()){let r=p("hermes",["KYNVER_HERMES_BIN","HERMES_BIN"]),t=m(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=Rt(),o=gt(n),i=o?vt(n):[],l=i.some(u=>u.endsWith("_API_KEY"))?"api_key_env":o?"oauth_local":"none",c=t.ok&&o;return{adapterId:"hermes",cliAvailable:t.ok,profileBound:o,authSource:l,sessionFingerprint:o?y(n):void 0,checkedAt:e,note:c?`Hermes profile bound (${i.length?`keys: ${i.join(", ")}`:"no API keys detected"})`:[t.note,o?void 0:"no ~/.hermes/.env"].filter(Boolean).join("; ")}}function ar(e={}){let r=e.nowIso?.()??new Date().toISOString(),t=A(r),n={codex:t,cursor:ir(r),claude:or(r)},o=Object.values(n).filter(i=>i.ready).length;return{generatedAt:r,bindings:n,cloudApiCredits:{anthropicApiKey:!!process.env.ANTHROPIC_API_KEY?.trim(),openaiApiKey:!!process.env.OPENAI_API_KEY?.trim(),codexApiKey:!!process.env.CODEX_API_KEY?.trim()},workerEndpoint:{baseUrlConfigured:!!process.env.KYNVER_WORKER_BASE_URL?.trim(),apiKeyConfigured:!!process.env.KYNVER_WORKER_API_KEY?.trim()},hermes:sr(r),hermesOpenAiCodex:W(r),codexAdapterPath:t.path,readyCount:o}}var kt=[/\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],xt=[/\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 ue(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function _t(e){let r=ue(e,"executorRef").toLowerCase(),t=ue(e,"title").toLowerCase(),n=ue(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 he}from"node:os";import ye from"node:path";function xr(e){return e==="~"?he():e.startsWith("~/")||e.startsWith("~\\")?ye.join(he(),e.slice(2)):e}function x(e){return ye.resolve(xr(e))}var _=a(()=>{"use strict"});var d=a(()=>{"use strict"});var _r,Qt,Sr,en,G=a(()=>{"use strict";_r=["ANTHROPIC_API_KEY","ANALYST_API_KEY","RECRUITER_API_KEY","AUTH_SECRET","NEXTAUTH_SECRET","DATABASE_URL","PRODUCTION_DATABASE_URL","KYNVER_PRODUCTION_DATABASE_URL","REDIS_URL","GOOGLE_CLIENT_SECRET","GITHUB_CLIENT_SECRET","KYNVER_API_KEY","KYNVER_SERVICE_SECRET","KYNVER_RUNTIME_SECRET","KYNVER_CRON_SECRET","OPENCLAW_CRON_SECRET","QSTASH_TOKEN","QSTASH_CURRENT_SIGNING_KEY","QSTASH_NEXT_SIGNING_KEY","TOOL_SECRETS_KEK","TOOL_EXECUTOR_DISPATCH_SECRET","CLOUDFLARE_API_TOKEN","STRIPE_SECRET_KEY","STRIPE_WEBHOOK_SECRET","STRIPE_IDENTITY_WEBHOOK_SECRET","VOYAGE_API_KEY","PERPLEXITY_API_KEY","FRED_API_KEY","FMP_API_KEY","CURSOR_API_KEY","MEMORY_CONTENT_KEK","LLM_BYOK_KEK","KYNVER_COMMAND_AUTH_KEY","KYNVER_INSTRUCTION_BUNDLE_KEY","KYNVER_MEMORY_LEDGER_KEY","KYNVER_JWKS_PRIVATE_KEY_JWK"],Qt=new Set(_r),Sr=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY"],en=new Set(Sr)});var z=a(()=>{"use strict";_();d();G()});var q=a(()=>{"use strict";z();_()});var R=a(()=>{"use strict"});var N=a(()=>{"use strict"});var be=a(()=>{"use strict"});var gn,hn,J=a(()=>{"use strict";gn=25*1024*1024*1024,hn=12*1024*1024*1024});var kn,xn,Re=a(()=>{"use strict";J();kn=5*1024*1024*1024,xn=10*1024*1024*1024});var An,wn,X=a(()=>{"use strict";Re();J();An=30*1024*1024*1024,wn=15*1024*1024*1024});var ke=a(()=>{"use strict";d()});import Or from"node:path";var Wn,Z=a(()=>{"use strict";_();ke();Wn=Or.join(".openclaw","harness")});var B=a(()=>{"use strict";v();R();N();D();Z()});var Se=a(()=>{"use strict";v();Z();B();d()});var ee=a(()=>{"use strict";Se();d()});var Ee=a(()=>{"use strict";ee();d()});var Ce=a(()=>{"use strict"});var Oe=a(()=>{"use strict";Ce();d()});var Ae=a(()=>{"use strict"});var we=a(()=>{"use strict";Ae()});var Pe=a(()=>{"use strict";we();d()});var Ie=a(()=>{"use strict"});var Ne=a(()=>{"use strict"});var Ke=a(()=>{"use strict"});var re=a(()=>{"use strict"});var Be=a(()=>{"use strict"});var De=a(()=>{"use strict";re();Be()});var Te=a(()=>{"use strict";Oe();Pe();Ie();Ne();z();Ke();De();re();d()});var Me=a(()=>{"use strict";Te()});var Dr,Tr,We=a(()=>{"use strict";be();v();R();N();D();X();ee();Ee();Me();d();Dr=500*1024*1024,Tr=4*1024*1024*1024});var D=a(()=>{"use strict";We()});import{homedir as Mr}from"node:os";import Wr from"node:path";var Ue,te=a(()=>{"use strict";Ue=Wr.join(Mr(),".kynver",".env")});var Le=a(()=>{"use strict"});var Fe=a(()=>{"use strict";Le()});var $e=a(()=>{"use strict"});var ne=a(()=>{"use strict";Fe();$e()});var He=a(()=>{"use strict"});var je=a(()=>{"use strict";He()});var T=a(()=>{"use strict";te();_();v();ne();je()});var Ye=a(()=>{"use strict";R();R()});var Ve=a(()=>{"use strict";te();ne();T()});var Ge=a(()=>{"use strict";q();R();Ye();v();T();Ve();d();B()});import{existsSync as Vr,mkdirSync as Bs,readFileSync as Gr,writeFileSync as Ds}from"node:fs";import{homedir as zr,totalmem as Ms}from"node:os";import oe from"node:path";function qr(e){return{...e,...e.harnessRoot?.trim()?{harnessRoot:x(e.harnessRoot.trim())}:{},...e.defaultRepo?.trim()?{defaultRepo:x(e.defaultRepo.trim())}:{}}}function S(){if(!Vr(ze))return{};try{return qr(JSON.parse(Gr(ze,"utf8")))}catch{return{}}}var qe,ze,qs,Js,Xs,v=a(()=>{"use strict";q();_();d();R();N();D();X();T();Ge();B();qe=oe.join(zr(),".kynver"),ze=oe.join(qe,"config.json"),qs=oe.join(qe,"credentials");Js=500*1024*1024,Xs=4*1024*1024*1024});var yr=/^claude[-_]/i,br=/^(?:opus|sonnet|haiku)\b/i;function fe(e){let r=e.trim();return yr.test(r)||br.test(r)}function ge(e){let r=e.trim().toLowerCase();return r.startsWith("gpt-")||r.startsWith("gpt5")||r.includes("codex")}function Y(e){let r=e.trim().toLowerCase();return r.includes("composer")||r.includes("cursor")}function Rr(e){return ge(e)?"codex":fe(e)?"claude":(Y(e),"cursor")}function vr(e){if(!e.startsWith("provider:"))return null;let r=e.slice(9),t=r.indexOf(":"),n=(t>=0?r.slice(0,t):r).trim().toLowerCase(),o=t>=0&&r.slice(t+1).trim()||void 0;return n?n==="claude"||n==="opus"||n==="anthropic"?{provider:"claude",model:o,rule:o?"executor_ref:provider_claude_model":"executor_ref:provider_claude"}:n==="codex"?{provider:"codex",model:o,rule:"executor_ref:provider_codex"}:n==="openai-compatible"||n==="openai"||n==="openai_compatible"?{provider:"openai-compatible",model:o,rule:"executor_ref:provider_openai_compatible"}:n==="cursor"||n==="composer"?{provider:"cursor",model:o,rule:"executor_ref:provider_cursor"}:null:null}function kr(e){if(!e.startsWith("harness-lane:"))return null;let r=e.split(":").map(o=>o.trim()).filter(Boolean);if(r.length<2)return null;let t=r[1],n=r.slice(2).join(":");return n?fe(n)||ge(n)||Y(n)?{lane:t,model:n,provider:Rr(n),rule:"executor_ref:harness_lane_model"}:{lane:t,rule:"executor_ref:harness_lane"}:{lane:t,rule:"executor_ref:harness_lane"}}function h(e){let r=typeof e=="string"?e.trim():"";return r?vr(r)??kr(r):null}function V(e){let r=h(e);return r?!!(r.provider&&r.provider!=="cursor"||r.model&&!Y(r.model)):!1}v();var Je={codex:{id:"codex",displayName:"Codex (BYO OAuth / Hermes openai-codex)",costTier:"low",authSources:["oauth_local","api_key_env","subscription_hermes"],supportsLowRiskOrchestration:!0,supportsPrivilegedPlatformActions:!1,workerMcpTools:"unsupported",workerMcpToolsNote:"Codex (and the Hermes openai-codex path) has no per-spawn MCP config + tool allow-list, so a worker's toolset could not be held to the server's capability grant. Workers run without Kynver tools."},cursor:{id:"cursor",displayName:"Cursor / Composer",costTier:"medium",authSources:["oauth_local","api_key_env"],supportsLowRiskOrchestration:!0,supportsPrivilegedPlatformActions:!0,workerMcpTools:"unsupported",workerMcpToolsNote:"Cursor configures MCP servers per workspace, not per spawn, so a task-bound token could not be scoped to one worker. Workers run without Kynver tools."},claude:{id:"claude",displayName:"Claude Code",costTier:"high",authSources:["oauth_local"],supportsLowRiskOrchestration:!0,supportsPrivilegedPlatformActions:!0,workerMcpTools:"supported"}};function E(e){return Je[e]}function Xe(){return Object.values(Je)}import{existsSync as Xr}from"node:fs";import{homedir as Zr}from"node:os";import O from"node:path";import{createHash as Ze}from"node:crypto";import{statSync as Jr}from"node:fs";import{spawnSync as Qe}from"node:child_process";function y(e){try{let r=Jr(e),t=`${e}|${r.size}|${r.mtimeMs}`;return Ze("sha256").update(t).digest("hex").slice(0,16)}catch{return}}function C(e){return Ze("sha256").update(`env:${e}`).digest("hex").slice(0,16)}function p(e,r){for(let t of r){let n=process.env[t]?.trim();if(n)return n}return e}function m(e,r,t={}){let n=t.timeoutMs??8e3;try{let o=Qe(e,r,{encoding:"utf8",timeout:n,env:{...process.env,...t.env,CI:"1",NO_COLOR:"1"}});if(o.status===0)return{ok:!0,note:t.okNote??`${e} ${r.join(" ")}: ok`};let i=(o.stderr||o.stdout||"").trim(),s=t.failPrefix??`${e} ${r.join(" ")} failed`;return{ok:!1,note:i?`${s}: ${i.slice(0,200)}`:s}}catch(o){return{ok:!1,note:o instanceof Error?o.message:`${e} probe failed`}}}function M(e,r,t={}){let n=t.timeoutMs??8e3;try{return Qe(e,r,{stdio:"ignore",timeout:n,env:{...process.env,CI:"1",NO_COLOR:"1"}}).status===0?{ok:!0,note:t.okNote??`${e} authenticated`}:{ok:!1,note:t.failNote??`${e} not authenticated`}}catch(o){return{ok:!1,note:o instanceof Error?o.message:`${e} auth probe failed`}}}var Qr="codex";function et(){let e=Zr();return[process.env.CODEX_HOME?.trim()?O.join(O.resolve(process.env.CODEX_HOME.trim()),"auth.json"):null,O.join(e,".codex","auth.json"),O.join(e,".config","codex","auth.json")].filter(t=>!!t)}function rt(e){return O.dirname(e)}function tt(e){let r,t;for(let n of et()){if(!Xr(n))continue;r??=n;let o=m(e,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status",env:{CODEX_HOME:rt(n)}});if(t??=o,o.ok)return{authPath:n,login:o}}return{authPath:r,login:t??m(e,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status"})}}function er(e=new Date().toISOString()){let r=p(Qr,["KYNVER_CODEX_BIN","CODEX_BIN"]);if(process.env.CODEX_API_KEY?.trim())return{providerId:"codex",ready:!0,authSource:"api_key_env",sessionFingerprint:C("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}=tt(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 nt}from"node:fs";import{homedir as ot}from"node:os";import ie from"node:path";function it(){let e=process.env.HERMES_HOME?.trim(),r=e?ie.resolve(e):ie.join(ot(),".hermes");return ie.join(r,"auth.json")}function W(e=new Date().toISOString()){let r=p("hermes",["KYNVER_HERMES_BIN","HERMES_BIN"]),t=m(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=it(),o=nt(n),i=M(r,["auth","status","openai-codex"],{okNote:"hermes openai-codex: logged in",failNote:"hermes openai-codex: not logged in"}),s=t.ok&&i.ok;return{path:"hermes_openai_codex",ready:s,authSource:s?"subscription_hermes":"none",sessionFingerprint:o?y(n):void 0,checkedAt:e,note:s?"Hermes openai-codex subscription session bound (ChatGPT Codex OAuth)":[t.note,i.note,o?void 0:"no ~/.hermes/auth.json"].filter(Boolean).join("; ")}}function A(e=new Date().toISOString()){let r=er(e);if(r.ready)return{...r,path:"codex_cli"};let t=W(e);return t.ready?{providerId:"codex",ready:!0,authSource:t.authSource,sessionFingerprint:t.sessionFingerprint,checkedAt:t.checkedAt,note:t.note,path:"hermes_openai_codex",hermesOpenAiCodex:t}:{providerId:"codex",ready:!1,authSource:"none",checkedAt:e,path:"none",hermesOpenAiCodex:t,note:[r.note,t.note].filter(Boolean).join("; ")||"Codex CLI and Hermes openai-codex unavailable"}}var rr=["low","medium","high"],tr={oauth_local:0,subscription_hermes:0,runner_token:1,api_key_env:2,none:3};function nr(e,r){let t=E(e);return r==="privileged"?t.supportsPrivilegedPlatformActions:r==="low"?t.supportsLowRiskOrchestration:!0}function st(e,r){let t=E(e.providerId),n=E(r.providerId),o=rr.indexOf(t.costTier)-rr.indexOf(n.costTier);if(o!==0)return o;let i=tr[e.binding.authSource]-tr[r.binding.authSource];return i!==0?i:e.providerId.localeCompare(r.providerId)}function se(e){let r=Xe().map(l=>({providerId:l.id,binding:e.inventory.bindings[l.id]})).filter(l=>l.binding.ready&&nr(l.providerId,e.riskClass));if(r.length===0)return null;let n=[...r].sort(st)[0],o="codex";if(n.providerId===o)return{providerId:n.providerId,binding:n.binding};let i=e.inventory.bindings[o],s;return nr(o,e.riskClass)?i.ready||(s=i.note??`${o} not bound`):s=`${e.riskClass} orchestration requires privileged-capable provider`,{providerId:n.providerId,binding:n.binding,escalatedFrom:o,escalatedReason:s}}import{existsSync as at}from"node:fs";import{homedir as lt}from"node:os";import ut from"node:path";var ct="claude";function dt(){let e=lt();return[ut.join(e,".claude",".credentials.json")]}function or(e=new Date().toISOString()){let r=p(ct,["KYNVER_CLAUDE_BIN","CLAUDE_BIN"]);if(process.env.ANTHROPIC_API_KEY?.trim())return{providerId:"claude",ready:!1,authSource:"api_key_env",sessionFingerprint:C("ANTHROPIC_API_KEY"),checkedAt:e,note:"ANTHROPIC_API_KEY present but scrubbed from worker env (deployment secret) \u2014 use `claude` CLI login (OAuth) for harness workers"};let t=m(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=dt().find(s=>at(s)),o=M(r,["auth","status"],{okNote:"claude auth status: authenticated",failNote:"claude auth status: not authenticated"}),i=t.ok&&(o.ok||!!n);return{providerId:"claude",ready:i,authSource:"oauth_local",sessionFingerprint:n?y(n):void 0,checkedAt:e,note:i?"Local Claude Code OAuth session bound on runner":[t.note,o.note,n?void 0:"no ~/.claude/.credentials.json"].filter(Boolean).join("; ")}}import{existsSync as pt}from"node:fs";import{homedir as mt}from"node:os";import ae from"node:path";var ft="agent";function gt(){let e=mt(),r=[ae.join(e,".config","cursor","auth.json")];if(process.platform==="win32"){let t=process.env.LOCALAPPDATA?.trim(),n=process.env.APPDATA?.trim();t&&r.push(ae.join(t,"cursor-agent","auth.json")),n&&r.push(ae.join(n,"cursor","auth.json"))}return r}function ir(e=new Date().toISOString()){let r=p(ft,["KYNVER_CURSOR_AGENT_BIN","CURSOR_AGENT_BIN"]);if(process.env.CURSOR_API_KEY?.trim())return{providerId:"cursor",ready:!1,authSource:"api_key_env",sessionFingerprint:C("CURSOR_API_KEY"),checkedAt:e,note:"CURSOR_API_KEY present but scrubbed from worker env (deployment secret) \u2014 use `agent login` (OAuth) for harness workers"};let t=m(r,["-v"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=gt().find(i=>pt(i)),o=!!n&&t.ok;return{providerId:"cursor",ready:o,authSource:"oauth_local",sessionFingerprint:n?y(n):void 0,checkedAt:e,note:o?"Local Cursor/Composer OAuth session bound on runner":[t.note,n?void 0:"no ~/.config/cursor/auth.json"].filter(Boolean).join("; ")}}import{existsSync as ht,readFileSync as yt}from"node:fs";import{homedir as bt}from"node:os";import le from"node:path";var Rt=["OPENAI_API_KEY","ANTHROPIC_API_KEY","KYNVER_API_KEY","KYNVER_BASE_URL"];function vt(){let e=process.env.HERMES_HOME?.trim(),r=e?le.resolve(e):le.join(bt(),".hermes");return le.join(r,".env")}function kt(e){try{let r=yt(e,"utf8"),t=[];for(let n of Rt)new RegExp(`^${n}=`,"m").test(r)&&t.push(n);return t}catch{return[]}}function sr(e=new Date().toISOString()){let r=p("hermes",["KYNVER_HERMES_BIN","HERMES_BIN"]),t=m(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=vt(),o=ht(n),i=o?kt(n):[],l=i.some(u=>u.endsWith("_API_KEY"))?"api_key_env":o?"oauth_local":"none",c=t.ok&&o;return{adapterId:"hermes",cliAvailable:t.ok,profileBound:o,authSource:l,sessionFingerprint:o?y(n):void 0,checkedAt:e,note:c?`Hermes profile bound (${i.length?`keys: ${i.join(", ")}`:"no API keys detected"})`:[t.note,o?void 0:"no ~/.hermes/.env"].filter(Boolean).join("; ")}}function ar(e={}){let r=e.nowIso?.()??new Date().toISOString(),t=A(r),n={codex:t,cursor:ir(r),claude:or(r)},o=Object.values(n).filter(i=>i.ready).length;return{generatedAt:r,bindings:n,cloudApiCredits:{anthropicApiKey:!!process.env.ANTHROPIC_API_KEY?.trim(),openaiApiKey:!!process.env.OPENAI_API_KEY?.trim(),codexApiKey:!!process.env.CODEX_API_KEY?.trim()},workerEndpoint:{baseUrlConfigured:!!process.env.KYNVER_WORKER_BASE_URL?.trim(),apiKeyConfigured:!!process.env.KYNVER_WORKER_API_KEY?.trim()},hermes:sr(r),hermesOpenAiCodex:W(r),codexAdapterPath:t.path,readyCount:o}}var xt=[/\bprivileged\b/i,/\bproduction\s+db\b/i,/\bdb:push\b/i,/\bmigration\b/i,/\bdeploy\b/i,/\bsecrets?\b/i,/\bstripe\b/i,/\[require-approval\]/i,/\[operator-only\]/i],_t=[/\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 ue(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function St(e){let r=ue(e,"executorRef").toLowerCase(),t=ue(e,"title").toLowerCase(),n=ue(e,"description").toLowerCase(),o=`${r}
2
2
  ${t}
3
- ${n}`;return kt.some(i=>i.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":xt.some(i=>i.test(o))?"low":"elevated"}function St(e){let r=E(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 Et(e){let r=e.inventory??ar();return e.codexBinding?{...r,bindings:{...r.bindings,codex:e.codexBinding}}:r}function k(e){let r=St({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 lr(e){let r=e.task??{},t=_t(r),n=Et({inventory:e.inventory,codexBinding:e.codexBinding??(e.inventory?null:A())}),o=e.preferLowCost===!1?null:e.explicitProvider?.trim().toLowerCase(),i=e.explicitModel?.trim()||void 0,s=ce;if(o==="codex"||o==="provider:codex"){let u=n.bindings.codex;if(!u.ready){let g=se({inventory:n,riskClass:t});return k(g?{providerId:g.providerId,binding:g.binding,riskClass:t,routingRule:"orchestration:explicit_codex_unavailable_cost_aware",model:i,escalatedFrom:"codex",escalatedReason:u.note??"codex oauth not bound"}:{providerId:s,binding:n.bindings[s],riskClass:t,routingRule:"orchestration:codex_unavailable_escalate_cursor",model:i,escalatedFrom:"codex",escalatedReason:u.note??"codex oauth not bound"})}return k({providerId:"codex",binding:u,riskClass:t,routingRule:"orchestration:explicit_codex",model:i})}if(o==="cursor"||o==="provider:cursor"){let u=n.bindings.cursor;if(u.ready)return k({providerId:"cursor",binding:u,riskClass:t,routingRule:"orchestration:explicit_cursor",model:i})}if(o==="claude"||o==="provider:claude"){let u=n.bindings.claude;if(u.ready)return k({providerId:"claude",binding:u,riskClass:t,routingRule:"orchestration:explicit_claude",model:i})}let l=se({inventory:n,riskClass:t});if(l)return k({providerId:l.providerId,binding:l.binding,riskClass:t,routingRule:`orchestration:cost_aware_${l.providerId}`,model:i,escalatedFrom:l.escalatedFrom,escalatedReason:l.escalatedReason});let c=n.bindings.codex;return k({providerId:s,binding:n.bindings[s],riskClass:t,routingRule:c.ready?"orchestration:inventory_empty_default_cursor":"orchestration:codex_unavailable_default_cursor",model:i,...c.ready?{}:{escalatedFrom:"codex",escalatedReason:c.note??"codex oauth not bound"}})}G();d();var Ct="kynver",Ot=["agent_os_context_envelope","agent_os_search_memory","agent_os_search_skills","agent_os_get_skill","agent_os_progress_note"],At=Ot.map(e=>`mcp__${Ct}__${e}`);var U="claude-sonnet-4-6",w="claude-opus-4-8";d();d();var sl=process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.4";function Pt(){return process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.4"}var L=Pt();d();var pe="openai-compatible",xl=600*1e3;var dr="claude-sonnet-4-6",H="composer-2.5";function f(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function It(e){if(!e)return;let r=f(e,"workerModelOverride")||f(e,"modelOverride");return r||`${f(e,"title")}
3
+ ${n}`;return xt.some(i=>i.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":_t.some(i=>i.test(o))?"low":"elevated"}function Et(e){let r=E(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 Ct(e){let r=e.inventory??ar();return e.codexBinding?{...r,bindings:{...r.bindings,codex:e.codexBinding}}:r}function k(e){let r=Et({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 lr(e){let r=e.task??{},t=St(r),n=Ct({inventory:e.inventory,codexBinding:e.codexBinding??(e.inventory?null:A())}),o=e.preferLowCost===!1?null:e.explicitProvider?.trim().toLowerCase(),i=e.explicitModel?.trim()||void 0,s=ce;if(o==="codex"||o==="provider:codex"){let u=n.bindings.codex;if(!u.ready){let g=se({inventory:n,riskClass:t});return k(g?{providerId:g.providerId,binding:g.binding,riskClass:t,routingRule:"orchestration:explicit_codex_unavailable_cost_aware",model:i,escalatedFrom:"codex",escalatedReason:u.note??"codex oauth not bound"}:{providerId:s,binding:n.bindings[s],riskClass:t,routingRule:"orchestration:codex_unavailable_escalate_cursor",model:i,escalatedFrom:"codex",escalatedReason:u.note??"codex oauth not bound"})}return k({providerId:"codex",binding:u,riskClass:t,routingRule:"orchestration:explicit_codex",model:i})}if(o==="cursor"||o==="provider:cursor"){let u=n.bindings.cursor;if(u.ready)return k({providerId:"cursor",binding:u,riskClass:t,routingRule:"orchestration:explicit_cursor",model:i})}if(o==="claude"||o==="provider:claude"){let u=n.bindings.claude;if(u.ready)return k({providerId:"claude",binding:u,riskClass:t,routingRule:"orchestration:explicit_claude",model:i})}let l=se({inventory:n,riskClass:t});if(l)return k({providerId:l.providerId,binding:l.binding,riskClass:t,routingRule:`orchestration:cost_aware_${l.providerId}`,model:i,escalatedFrom:l.escalatedFrom,escalatedReason:l.escalatedReason});let c=n.bindings.codex;return k({providerId:s,binding:n.bindings[s],riskClass:t,routingRule:c.ready?"orchestration:inventory_empty_default_cursor":"orchestration:codex_unavailable_default_cursor",model:i,...c.ready?{}:{escalatedFrom:"codex",escalatedReason:c.note??"codex oauth not bound"}})}G();d();var Ot="kynver",At=["agent_os_context_envelope","agent_os_search_memory","agent_os_search_skills","agent_os_get_skill","agent_os_progress_note"],wt=At.map(e=>`mcp__${Ot}__${e}`);var U="claude-sonnet-4-6",w="claude-opus-4-8";d();d();var sl=process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.4";function It(){return process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.4"}var L=It();d();var pe="openai-compatible",xl=600*1e3;var dr="claude-sonnet-4-6",H="composer-2.5";function f(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function Nt(e){if(!e)return;let r=f(e,"workerModelOverride")||f(e,"modelOverride");return r||`${f(e,"title")}
4
4
  ${f(e,"description")}
5
- ${f(e,"executorRef")}`.match(/\[(?:worker-)?model:\s*([^\]\n]+)\]/i)?.[1]?.trim()||void 0}function ur(e){return e.toLowerCase()}function j(e=S()){let r=e.defaultModel?.trim();if(r)return r;let t=process.env.KYNVER_DEFAULT_MODEL?.trim();return t||dr}function F(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":"cursor"}function Nt(e,r){let t=e.trim().toLowerCase(),n=r?.trim();return t==="cursor"?{model:H,provider:"cursor",rule:n&&n!=="cursor"?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:t==="claude"||t==="anthropic"?{model:U,provider:"claude",rule:n&&n!=="claude"?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:null}function cr(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 Kt=new Set(["report_reviewer","deep_reviewer","plan_reviewer"]);function pr(e,r,t){return Kt.has(e)?w:r.includes("review")||/^review[\s:]/.test(t)||t.includes("critique")?w:U}function mr(e){let r=ur(f(e,"executorRef")),t=f(e,"title").toLowerCase(),n=f(e,"priority")||"normal",o=ur(f(e,"roleLane"));if(r.includes("provider:claude")||r.startsWith("claude:")){let s=pr(o,r,t);return{provider:"claude",model:s,rule:s===w?"factory:claude_review":"factory:claude_implementation"}}if(r.includes("provider:codex")||r.startsWith("codex:"))return{provider:"codex",model:L,rule:"lane:codex_orchestration"};if(r.includes("provider:openai")||r.startsWith("openai-compatible:")){let s=h(f(e,"executorRef"));return{provider:pe,...s?.model?{model:s.model}:{},rule:"lane:openai_compatible"}}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:L,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 cr(r,t)||o==="deep_reviewer"?{provider:"cursor",rule:"lane:deep_review"}:{provider:"cursor",rule:"lane:review"};if(cr(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 i=j();return{model:i,provider:F(i),rule:"default:global"}}function Bt(e){return e?h(f(e,"executorRef")):null}function Dt(e){let r,t=Bt(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 l=e.explicitModel.trim(),c=Nt(l,e.explicitProvider);c?r=c:r={model:l,provider:e.explicitProvider?.trim()||F(l),rule:"explicit:cli",requestedModel:l}}else if(n)r={model:n,provider:o||F(n),rule:t?.rule??"executor_ref:model",requestedModel:n};else if(e.task&&$(e.task)){let l=It(e.task),c,u;if(l)c=l,u="task:provider_override";else{let g=typeof e.task.roleLane=="string"?e.task.roleLane.toLowerCase():"",me=typeof e.task.executorRef=="string"?e.task.executorRef.toLowerCase():"",hr=typeof e.task.title=="string"?e.task.title.toLowerCase():"";c=pr(g,me,hr),u=c===w?"factory:claude_review":"factory:claude_implementation"}r={model:c,provider:"claude",rule:u,requestedModel:c}}else if(e.task&&Object.keys(e.task).length>0){let l=mr(e.task);r={...l,requestedModel:l.model}}else{let l=j();r={model:l,provider:e.explicitProvider?.trim()||F(l),rule:"default:global",requestedModel:l}}let i=fr({routing:r,task:e.task,explicitProvider:e.explicitProvider,explicitProviderIsOperatorOverride:e.explicitProviderIsOperatorOverride});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"||b(i.provider)&&(e.explicitProviderIsOperatorOverride||$(e.task))||i.provider===pe)return i;let s=lr({task:e.task,explicitProvider:e.explicitProvider??i.provider,explicitModel:i.model,inventory:e.orchestrationInventory??void 0});return{provider:s.provider,model:s.provider==="codex"?s.model??i.model??L:i.model,rule:s.rule,requestedModel:i.requestedModel,orchestrationAudit:s.audit}}function Tt(e,r,t){return e||r||t||j()||U}var ce="cursor";var Mt=new Set(["claude","opus","anthropic"]),Wt=[/\[worker-provider:\s*claude\]/i,/\[use-claude-worker\]/i,/\[operator-worker-provider:\s*claude\]/i];function P(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function b(e){if(!e?.trim())return!1;let r=e.trim().toLowerCase();return Mt.has(r)?!0:r.includes("claude")||r.includes("opus")}function $(e){if(!e)return!1;let r=e.workerProviderOverride;if(typeof r=="string"&&b(r))return!0;let t=P(e,"executorRef").toLowerCase();if(t==="provider:claude"||t.startsWith("provider:claude:")||t.includes("claude-worker-override")||t.includes("operator-claude"))return!0;let n=h(P(e,"executorRef"));if(n?.provider&&b(n.provider)||n?.model&&b(Ut(n.model)))return!0;let o=P(e,"description");if(Wt.some(s=>s.test(o)))return!0;let i=P(e,"title");return!!/\[use-claude-worker\]/i.test(i)}function Ut(e){let r=e.trim().toLowerCase();return/^claude[-_]/.test(r)||/^(?:opus|sonnet|haiku)\b/.test(r)?"claude":r}function Lt(e,r){return{provider:ce,model:H,rule:`policy:cursor_default${r}`,requestedModel:e}}var Ft=["explicit:","executor_ref:","factory:","task:"];function $t(e){return Ft.some(r=>e.startsWith(r))}function Ht(e){if(!e)return!1;let r=e.workerProviderOverride;return typeof r=="string"&&r.trim()||h(P(e,"executorRef"))?.provider?!0:$(e)}function fr(e){let{routing:r,task:t}=e,n=e.explicitProvider?.trim().toLowerCase();if(e.explicitProviderIsOperatorOverride&&b(n))return{...r,provider:"claude",rule:r.rule.startsWith("explicit:")?r.rule:"explicit:operator_provider"};if(n||$t(r.rule)||Ht(t)||!b(r.provider))return r;let o=r.rule&&r.rule!=="default:global"?`:${r.rule.replace(/:/g,"_")}`:"";return Lt(r.model,o)}function jt(e){let r=e?.executorRef;return typeof r=="string"?r.trim():""}function gr(e){return e?.trim()||void 0}function Yt(e){let r=jt(e.task),t=h(r),n=e.explicitProvider?.trim().toLowerCase(),o=gr(e.explicitModel??void 0),i=n||t?.provider,s=o||t?.model,l=n||o?"cli":t?.rule??"none";if(!i&&!s)return{ok:!0};!i&&s&&(/^claude[-_]/i.test(s)||/^(?:opus|sonnet|haiku)\b/i.test(s))&&(i="claude");let c=e.routing.provider,u=gr(e.routing.model),g={provider:c,model:u,rule:e.routing.rule};return i&&i!=="cursor"||r&&V(r)||n&&n!=="cursor"?c==="cursor"?{ok:!1,error:`model_routing_mismatch: requested ${i??"non-cursor"}${s?` model=${s}`:""} (${l}) but routing resolved to cursor (${e.routing.rule})`,requested:{provider:i,model:s,source:l},resolved:g}:s&&u&&s!==u&&!b(c)?{ok:!1,error:`model_routing_mismatch: requested model=${s} (${l}) but routing resolved model=${u} (${e.routing.rule})`,requested:{provider:i,model:s,source:l},resolved:g}:{ok:!0,requested:{provider:i,model:s,source:l},resolved:g}:{ok:!0,resolved:g}}export{H as CURSOR_DEFAULT_MODEL,dr as GLOBAL_DEFAULT_MODEL,Yt as assessDispatchModelGuard,V as executorRefRequestsNonCursorWorker,mr as inferModelRoutingFromTask,h as parseExecutorRefRoutingIntent,j as resolveGlobalDefaultModel,Tt as resolveModelFallback,Dt as resolveWorkerLaunch};
5
+ ${f(e,"executorRef")}`.match(/\[(?:worker-)?model:\s*([^\]\n]+)\]/i)?.[1]?.trim()||void 0}function ur(e){return e.toLowerCase()}function j(e=S()){let r=e.defaultModel?.trim();if(r)return r;let t=process.env.KYNVER_DEFAULT_MODEL?.trim();return t||dr}function F(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":"cursor"}function Kt(e,r){let t=e.trim().toLowerCase(),n=r?.trim();return t==="cursor"?{model:H,provider:"cursor",rule:n&&n!=="cursor"?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:t==="claude"||t==="anthropic"?{model:U,provider:"claude",rule:n&&n!=="claude"?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:null}function cr(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 Bt=new Set(["report_reviewer","deep_reviewer","plan_reviewer"]);function pr(e,r,t){return Bt.has(e)?w:r.includes("review")||/^review[\s:]/.test(t)||t.includes("critique")?w:U}function mr(e){let r=ur(f(e,"executorRef")),t=f(e,"title").toLowerCase(),n=f(e,"priority")||"normal",o=ur(f(e,"roleLane"));if(r.includes("provider:claude")||r.startsWith("claude:")){let s=pr(o,r,t);return{provider:"claude",model:s,rule:s===w?"factory:claude_review":"factory:claude_implementation"}}if(r.includes("provider:codex")||r.startsWith("codex:"))return{provider:"codex",model:L,rule:"lane:codex_orchestration"};if(r.includes("provider:openai")||r.startsWith("openai-compatible:")){let s=h(f(e,"executorRef"));return{provider:pe,...s?.model?{model:s.model}:{},rule:"lane:openai_compatible"}}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:L,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 cr(r,t)||o==="deep_reviewer"?{provider:"cursor",rule:"lane:deep_review"}:{provider:"cursor",rule:"lane:review"};if(cr(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 i=j();return{model:i,provider:F(i),rule:"default:global"}}function Dt(e){return e?h(f(e,"executorRef")):null}function Tt(e){let r,t=Dt(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 l=e.explicitModel.trim(),c=Kt(l,e.explicitProvider);c?r=c:r={model:l,provider:e.explicitProvider?.trim()||F(l),rule:"explicit:cli",requestedModel:l}}else if(n)r={model:n,provider:o||F(n),rule:t?.rule??"executor_ref:model",requestedModel:n};else if(e.task&&$(e.task)){let l=Nt(e.task),c,u;if(l)c=l,u="task:provider_override";else{let g=typeof e.task.roleLane=="string"?e.task.roleLane.toLowerCase():"",me=typeof e.task.executorRef=="string"?e.task.executorRef.toLowerCase():"",hr=typeof e.task.title=="string"?e.task.title.toLowerCase():"";c=pr(g,me,hr),u=c===w?"factory:claude_review":"factory:claude_implementation"}r={model:c,provider:"claude",rule:u,requestedModel:c}}else if(e.task&&Object.keys(e.task).length>0){let l=mr(e.task);r={...l,requestedModel:l.model}}else{let l=j();r={model:l,provider:e.explicitProvider?.trim()||F(l),rule:"default:global",requestedModel:l}}let i=fr({routing:r,task:e.task,explicitProvider:e.explicitProvider,explicitProviderIsOperatorOverride:e.explicitProviderIsOperatorOverride});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"||b(i.provider)&&(e.explicitProviderIsOperatorOverride||$(e.task))||i.provider===pe)return i;let s=lr({task:e.task,explicitProvider:e.explicitProvider??i.provider,explicitModel:i.model,inventory:e.orchestrationInventory??void 0});return{provider:s.provider,model:s.provider==="codex"?s.model??i.model??L:i.model,rule:s.rule,requestedModel:i.requestedModel,orchestrationAudit:s.audit}}function Mt(e,r,t){return e||r||t||j()||U}var ce="cursor";var Wt=new Set(["claude","opus","anthropic"]),Ut=[/\[worker-provider:\s*claude\]/i,/\[use-claude-worker\]/i,/\[operator-worker-provider:\s*claude\]/i];function P(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function b(e){if(!e?.trim())return!1;let r=e.trim().toLowerCase();return Wt.has(r)?!0:r.includes("claude")||r.includes("opus")}function $(e){if(!e)return!1;let r=e.workerProviderOverride;if(typeof r=="string"&&b(r))return!0;let t=P(e,"executorRef").toLowerCase();if(t==="provider:claude"||t.startsWith("provider:claude:")||t.includes("claude-worker-override")||t.includes("operator-claude"))return!0;let n=h(P(e,"executorRef"));if(n?.provider&&b(n.provider)||n?.model&&b(Lt(n.model)))return!0;let o=P(e,"description");if(Ut.some(s=>s.test(o)))return!0;let i=P(e,"title");return!!/\[use-claude-worker\]/i.test(i)}function Lt(e){let r=e.trim().toLowerCase();return/^claude[-_]/.test(r)||/^(?:opus|sonnet|haiku)\b/.test(r)?"claude":r}function Ft(e,r){return{provider:ce,model:H,rule:`policy:cursor_default${r}`,requestedModel:e}}var $t=["explicit:","executor_ref:","factory:","task:"];function Ht(e){return $t.some(r=>e.startsWith(r))}function jt(e){if(!e)return!1;let r=e.workerProviderOverride;return typeof r=="string"&&r.trim()||h(P(e,"executorRef"))?.provider?!0:$(e)}function fr(e){let{routing:r,task:t}=e,n=e.explicitProvider?.trim().toLowerCase();if(e.explicitProviderIsOperatorOverride&&b(n))return{...r,provider:"claude",rule:r.rule.startsWith("explicit:")?r.rule:"explicit:operator_provider"};if(n||Ht(r.rule)||jt(t)||!b(r.provider))return r;let o=r.rule&&r.rule!=="default:global"?`:${r.rule.replace(/:/g,"_")}`:"";return Ft(r.model,o)}function Yt(e){let r=e?.executorRef;return typeof r=="string"?r.trim():""}function gr(e){return e?.trim()||void 0}function Vt(e){let r=Yt(e.task),t=h(r),n=e.explicitProvider?.trim().toLowerCase(),o=gr(e.explicitModel??void 0),i=n||t?.provider,s=o||t?.model,l=n||o?"cli":t?.rule??"none";if(!i&&!s)return{ok:!0};!i&&s&&(/^claude[-_]/i.test(s)||/^(?:opus|sonnet|haiku)\b/i.test(s))&&(i="claude");let c=e.routing.provider,u=gr(e.routing.model),g={provider:c,model:u,rule:e.routing.rule};return i&&i!=="cursor"||r&&V(r)||n&&n!=="cursor"?c==="cursor"?{ok:!1,error:`model_routing_mismatch: requested ${i??"non-cursor"}${s?` model=${s}`:""} (${l}) but routing resolved to cursor (${e.routing.rule})`,requested:{provider:i,model:s,source:l},resolved:g}:s&&u&&s!==u&&!b(c)?{ok:!1,error:`model_routing_mismatch: requested model=${s} (${l}) but routing resolved model=${u} (${e.routing.rule})`,requested:{provider:i,model:s,source:l},resolved:g}:{ok:!0,requested:{provider:i,model:s,source:l},resolved:g}:{ok:!0,resolved:g}}export{H as CURSOR_DEFAULT_MODEL,dr as GLOBAL_DEFAULT_MODEL,Vt as assessDispatchModelGuard,V as executorRefRequestsNonCursorWorker,mr as inferModelRoutingFromTask,h as parseExecutorRefRoutingIntent,j as resolveGlobalDefaultModel,Mt as resolveModelFallback,Tt as resolveWorkerLaunch};
@@ -1,8 +1,8 @@
1
- var l=(e,r,n)=>()=>{if(n)throw n[0];try{return e&&(r=e(e=0)),r}catch(t){throw n=[t],t}};function Y(e){let r=e.trim();if(!r.startsWith("{"))return null;try{let n=JSON.parse(r);if(n&&typeof n=="object"&&!Array.isArray(n))return n}catch{return null}return null}function de(e){let r=e.trim();if(!r)return null;let n=Y(r);if(n)return n;let t=[],o=/```(?:json)?\s*([\s\S]*?)```/gi,s;for(;(s=o.exec(r))!==null;){let u=Y(s[1]??"");u&&t.push(u)}let i=r.indexOf("{"),a=r.lastIndexOf("}");if(i>=0&&a>i){let u=Y(r.slice(i,a+1));u&&t.push(u)}return t.length>0?t[t.length-1]:null}function me(e){let r=e.finalResult??e.final_result;if(r!=null)return typeof r=="string"?de(r)??(r.trim()||null):r;let n=typeof e.summary=="string"?e.summary.trim():"";if(!n)return null;let t=de(n);return t||n}var fe=l(()=>{"use strict"});import{existsSync as Tr,mkdirSync as lt,readFileSync as Kr,readdirSync as ut,renameSync as ct,rmSync as dt,statSync as pe,writeFileSync as mt}from"node:fs";function ge(e){console.error(e),process.exit(1)}function V(e){return process.platform!=="win32"?e:{windowsHide:!0,...e}}function O(e){try{return JSON.parse(e)}catch{return null}}function w(e){try{return pe(e).size}catch{return 0}}function I(e){try{return pe(e).mtime.toISOString()}catch{return null}}function he(e,r){return Tr(e)?Kr(e,"utf8").split(`
1
+ var l=(e,r,n)=>()=>{if(n)throw n[0];try{return e&&(r=e(e=0)),r}catch(t){throw n=[t],t}};function Y(e){let r=e.trim();if(!r.startsWith("{"))return null;try{let n=JSON.parse(r);if(n&&typeof n=="object"&&!Array.isArray(n))return n}catch{return null}return null}function me(e){let r=e.trim();if(!r)return null;let n=Y(r);if(n)return n;let t=[],o=/```(?:json)?\s*([\s\S]*?)```/gi,s;for(;(s=o.exec(r))!==null;){let u=Y(s[1]??"");u&&t.push(u)}let i=r.indexOf("{"),a=r.lastIndexOf("}");if(i>=0&&a>i){let u=Y(r.slice(i,a+1));u&&t.push(u)}return t.length>0?t[t.length-1]:null}function fe(e){let r=e.finalResult??e.final_result;if(r!=null)return typeof r=="string"?me(r)??(r.trim()||null):r;let n=typeof e.summary=="string"?e.summary.trim():"";if(!n)return null;let t=me(n);return t||n}var pe=l(()=>{"use strict"});import{existsSync as Tr,mkdirSync as lt,readFileSync as Kr,readdirSync as ut,renameSync as ct,rmSync as dt,statSync as ge,writeFileSync as mt}from"node:fs";function V(e){console.error(e),process.exit(1)}function G(e){return process.platform!=="win32"?e:{windowsHide:!0,...e}}function O(e){try{return JSON.parse(e)}catch{return null}}function w(e){try{return ge(e).size}catch{return 0}}function I(e){try{return ge(e).mtime.toISOString()}catch{return null}}function he(e,r){return Tr(e)?Kr(e,"utf8").split(`
2
2
  `).slice(-r).join(`
3
- `):""}function P(e){if(!e)return!1;try{return process.kill(e,0),!0}catch{return!1}}function ye(e){let r=null,n=-1/0;for(let t of e){if(!t)continue;let o=Date.parse(t);Number.isFinite(o)&&o>n&&(n=o,r=t)}return r}function G(e){return Math.max(0,Math.round((Date.now()-e)/1e3))}var p=l(()=>{"use strict"});import{existsSync as Ur,readFileSync as Br}from"node:fs";function be(e){return e==="complete"}function ke(e){return be(e.lastHeartbeatPhase)?e.terminalFinalResult!==void 0&&e.terminalFinalResult!==null?e.terminalFinalResult:e.lastHeartbeatSummary?.trim()||"completed":null}function Re(e){let r={heartbeatCount:0,lastHeartbeatAt:null,lastHeartbeatPhase:null,lastHeartbeatSummary:null,terminalFinalResult:null,heartbeatBlocker:null,timestampAnomalies:[],lastBoxResourceSnapshot:null,lastPrEvidence:[]};if(!Ur(e))return r;let n=Date.now()+Dr,t=new Date(n).toISOString(),o=Br(e,"utf8").split(`
4
- `).filter(Boolean);for(let s of o){let i=O(s);if(!i||typeof i!="object"||Array.isArray(i))continue;let a=i;if(r.heartbeatCount++,a.ts){let u=String(a.ts),m=Date.parse(u);Number.isFinite(m)&&m>n?r.timestampAnomalies.push({kind:"future_heartbeat_timestamp",observedAt:u,clampedTo:t}):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)),be(r.lastHeartbeatPhase)&&(r.terminalFinalResult=me(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 Dr,xe=l(()=>{"use strict";fe();p();Dr=6e4});function _e(e){return e?(e.split("/").pop()??e).replace(/\.exe$/i,"").toLowerCase():null}function N(e){if(!e)return[];let r=[],n="",t,o=!1;for(let s of e){if(o){n+=s,o=!1;continue}if(s==="\\"){o=!0;continue}if(t){s===t?t=void 0:n+=s;continue}if(s==='"'||s==="'"){t=s;continue}if(/\s/.test(s)){n&&(r.push(n),n="");continue}n+=s}return n&&r.push(n),r}function ve(e){let r=_e(e[0]);return!!(r&&Mr.has(r))}function Hr(e){let r=e.trim();return r.includes("/")?r.split("/").pop()??r:r}function Lr(e){if(!e||e.includes("*"))return null;let r=Hr(e);return!r||r.includes("/")?null:/\.(?:json|md|mjs|cjs|js|ts|tsx|yaml|yml)$/iu.test(r)?r:null}function Ee(e){return!e||e.includes("/")||e.includes("*")?!1:/\.(?:json|md|mjs|cjs|js|ts|tsx|yaml|yml)$/iu.test(e)}function z(e){if(!e)return!1;let r=e.trim();return r.startsWith("!")&&!r.includes("/")&&!r.endsWith("/**")}function $r(e){if(!e.startsWith("--glob="))return e;let r=e.slice(7);return r.startsWith("!")&&!r.includes("/")&&!r.endsWith("/**")?`--glob=${r}/**`:e}function jr(e){let r=[];for(let n=1;n<e.length;n+=1){let t=e[n];if(t){if(t==="--"){r.push(...e.slice(n+1));break}if(t.startsWith("-")){if(t.includes("="))continue;Se.has(t)&&(n+=1);continue}r.push(t)}}return r}function Yr(e){let r=!1,n=e.map((o,s)=>{let i=$r(o),a=e[s-1];return a&&Se.has(a)&&o.startsWith("!")&&!o.includes("/")&&!o.endsWith("/**")&&(i=`${o}/**`),i!==o&&(r=!0),i}),t=jr(n);if(t.length===2){let[o,s]=t;if(z(s))return{argv:[n[0]??"rg",o,"-g",`${s}/**`,"."],changed:!0};let i=Lr(s);if(i)return{argv:[n[0]??"rg","-g",i,o,"."],changed:!0}}return r&&t.length===1?{argv:[...n,"."],changed:!0}:{argv:n,changed:r}}function Ce(e){for(let r=1;r<e.length;r+=1){let n=e[r];if(n&&(n==="-c"||n==="-lc"||n==="-cl"||/^-[a-zA-Z]*c[a-zA-Z]*$/u.test(n)))return r+1}return-1}function W(e){let r=e.trim();if(!r)return{command:r,wrapped:!1};let n=N(r);if(!n.length)return{command:r,wrapped:!1};let t=_e(n[0]);if(!t||!Fr.has(t))return{command:r,wrapped:!1};let o=Ce(n);if(o<0||o>=n.length)return{command:r,wrapped:!1};let s=n.slice(o).join(" ").trim();return s?{command:s,wrapped:!0}:{command:r,wrapped:!1}}function Vr(e,r){let n=e.trim(),t=N(n),o=Ce(t);if(o<0)return r;let s=t.slice(0,o).join(" "),i=r.includes("'")?`"${r.replace(/"/g,'\\"')}"`:`'${r}'`;return`${s} ${i}`}function Gr(e){let r=e.trim(),n=W(r),t=N(n.command);if(!t.length||!ve(t))return{segment:r,changed:!1};let o=Yr(t);if(!o.changed)return{segment:r,changed:!1};let s=o.argv.join(" ");return n.wrapped?{segment:Vr(r,s),changed:!0}:{segment:s,changed:!0}}function J(e){let r=e.trim();if(!r)return{command:r,changed:!1};let n=r.includes("&&")?" && ":r.includes("||")?" || ":"; ",t=r.split(/\s*(?:&&|\|\||;)\s*/u),o=!1,s=t.map(i=>{let a=Gr(i);return a.changed&&(o=!0),a.segment});return o?{command:s.join(n),changed:!0}:{command:r,changed:!1}}function Ae(e){let r=W(e).command,n=N(r.trim());return n.length&&ve(n)?!0:/\b(rg|ripgrep)\b/i.test(r)}function Oe(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 n=e.match(/^search\s+"(.+)"\s+in\s+(.+)$/iu);return n?{pattern:n[1],target:n[2]?.trim()}:{}}function zr(e){let{pattern:r,target:n}=Oe(e);return r?z(n)?{kind:"rg_exclude_syntax",pattern:r,target:n}:Ee(n)?{kind:"bad_scope",pattern:r,target:n}:{kind:"not_repo_search",pattern:r,target:n}:{kind:"not_repo_search"}}function Jr(e){let{pattern:r,target:n}=Oe(e);if(!r)return null;if(z(n)){let t=`${n.trim()}/**`;return{command:`rg "${r}" -g '${t}' .`,changed:!0}}return n&&Ee(n)?{command:`rg -g ${n} "${r}" .`,changed:!0}:null}function qr(e){if(e.kind==="bad_scope"&&e.pattern?.includes("agent-os-land-pr")&&e.target==="package.json")return"Search package.json with a glob from the repo root: `rg -g package.json agent-os-land-pr .` \u2014 or run `node scripts/agent-os-land-pr.mjs <pr-url>` directly.";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 Xr(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 q(e){let r=e.meta?.trim()||(e.command?Xr(e.command):null)||null;if(r){let n=zr(r),t=qr(n);if(t)return t;let o=Jr(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 n=J(e.command);if(n.changed)return`Ripgrep scope may be invalid. Retry with: \`${n.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 Mr,Fr,Se,we=l(()=>{"use strict";Mr=new Set(["rg","ripgrep","grep"]),Fr=new Set(["bash","sh","dash","zsh"]),Se=new Set(["-e","--regexp","-f","--file","-m","--max-count","-A","--after-context","-B","--before-context","-C","--context","-g","--glob","--iglob"])});function v(e,r=200){let n=e.replace(/\s+/g," ").trim();return n.length>r?`${n.slice(0,r-1)}\u2026`:n}function en(e){let r=e.trim();if(!r)return null;if(r.startsWith("{"))try{return JSON.parse(r)}catch{}let n=r.indexOf("{"),t=r.lastIndexOf("}");if(n>=0&&t>n)try{return JSON.parse(r.slice(n,t+1))}catch{return null}return null}function E(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function rn(e){let r=e.metadata;if(!E(r))return null;let n=r.vulnerabilities;if(!E(n))return null;let t=s=>typeof n[s]=="number"?n[s]:0,o={info:t("info"),low:t("low"),moderate:t("moderate"),high:t("high"),critical:t("critical"),total:t("total")};return typeof n.total!="number"&&!o.critical&&!o.high&&!o.moderate&&!o.low&&!o.info?null:o}function nn(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 n=r.length?r.join(", "):"see report";return`npm audit: ${e.total} vulnerabilit${e.total===1?"y":"ies"} (${n}) \u2014 remediation required`}function tn(e,r){let n=e.error;if(E(n)){let s=typeof n.summary=="string"?n.summary.trim():"",i=typeof n.code=="string"?n.code.trim():"";if(s)return i?`${i}: ${s}`:s;if(i)return i}let t=typeof e.message=="string"?e.message.trim():"";if(t)return t;let o=r.trim();return o?v(o.split(`
3
+ `):""}function P(e){if(!e)return!1;try{return process.kill(e,0),!0}catch{return!1}}function ye(e){let r=null,n=-1/0;for(let t of e){if(!t)continue;let o=Date.parse(t);Number.isFinite(o)&&o>n&&(n=o,r=t)}return r}function z(e){return Math.max(0,Math.round((Date.now()-e)/1e3))}var p=l(()=>{"use strict"});import{existsSync as Ur,readFileSync as Br}from"node:fs";function be(e){return e==="complete"}function ke(e){return be(e.lastHeartbeatPhase)?e.terminalFinalResult!==void 0&&e.terminalFinalResult!==null?e.terminalFinalResult:e.lastHeartbeatSummary?.trim()||"completed":null}function Re(e){let r={heartbeatCount:0,lastHeartbeatAt:null,lastHeartbeatPhase:null,lastHeartbeatSummary:null,terminalFinalResult:null,heartbeatBlocker:null,timestampAnomalies:[],lastBoxResourceSnapshot:null,lastPrEvidence:[]};if(!Ur(e))return r;let n=Date.now()+Dr,t=new Date(n).toISOString(),o=Br(e,"utf8").split(`
4
+ `).filter(Boolean);for(let s of o){let i=O(s);if(!i||typeof i!="object"||Array.isArray(i))continue;let a=i;if(r.heartbeatCount++,a.ts){let u=String(a.ts),m=Date.parse(u);Number.isFinite(m)&&m>n?r.timestampAnomalies.push({kind:"future_heartbeat_timestamp",observedAt:u,clampedTo:t}):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)),be(r.lastHeartbeatPhase)&&(r.terminalFinalResult=fe(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 Dr,xe=l(()=>{"use strict";pe();p();Dr=6e4});function _e(e){return e?(e.split("/").pop()??e).replace(/\.exe$/i,"").toLowerCase():null}function N(e){if(!e)return[];let r=[],n="",t,o=!1;for(let s of e){if(o){n+=s,o=!1;continue}if(s==="\\"){o=!0;continue}if(t){s===t?t=void 0:n+=s;continue}if(s==='"'||s==="'"){t=s;continue}if(/\s/.test(s)){n&&(r.push(n),n="");continue}n+=s}return n&&r.push(n),r}function ve(e){let r=_e(e[0]);return!!(r&&Mr.has(r))}function Hr(e){let r=e.trim();return r.includes("/")?r.split("/").pop()??r:r}function $r(e){if(!e||e.includes("*"))return null;let r=Hr(e);return!r||r.includes("/")?null:/\.(?:json|md|mjs|cjs|js|ts|tsx|yaml|yml)$/iu.test(r)?r:null}function Ee(e){return!e||e.includes("/")||e.includes("*")?!1:/\.(?:json|md|mjs|cjs|js|ts|tsx|yaml|yml)$/iu.test(e)}function J(e){if(!e)return!1;let r=e.trim();return r.startsWith("!")&&!r.includes("/")&&!r.endsWith("/**")}function Lr(e){if(!e.startsWith("--glob="))return e;let r=e.slice(7);return r.startsWith("!")&&!r.includes("/")&&!r.endsWith("/**")?`--glob=${r}/**`:e}function jr(e){let r=[];for(let n=1;n<e.length;n+=1){let t=e[n];if(t){if(t==="--"){r.push(...e.slice(n+1));break}if(t.startsWith("-")){if(t.includes("="))continue;Se.has(t)&&(n+=1);continue}r.push(t)}}return r}function Yr(e){let r=!1,n=e.map((o,s)=>{let i=Lr(o),a=e[s-1];return a&&Se.has(a)&&o.startsWith("!")&&!o.includes("/")&&!o.endsWith("/**")&&(i=`${o}/**`),i!==o&&(r=!0),i}),t=jr(n);if(t.length===2){let[o,s]=t;if(J(s))return{argv:[n[0]??"rg",o,"-g",`${s}/**`,"."],changed:!0};let i=$r(s);if(i)return{argv:[n[0]??"rg","-g",i,o,"."],changed:!0}}return r&&t.length===1?{argv:[...n,"."],changed:!0}:{argv:n,changed:r}}function Ce(e){for(let r=1;r<e.length;r+=1){let n=e[r];if(n&&(n==="-c"||n==="-lc"||n==="-cl"||/^-[a-zA-Z]*c[a-zA-Z]*$/u.test(n)))return r+1}return-1}function W(e){let r=e.trim();if(!r)return{command:r,wrapped:!1};let n=N(r);if(!n.length)return{command:r,wrapped:!1};let t=_e(n[0]);if(!t||!Fr.has(t))return{command:r,wrapped:!1};let o=Ce(n);if(o<0||o>=n.length)return{command:r,wrapped:!1};let s=n.slice(o).join(" ").trim();return s?{command:s,wrapped:!0}:{command:r,wrapped:!1}}function Vr(e,r){let n=e.trim(),t=N(n),o=Ce(t);if(o<0)return r;let s=t.slice(0,o).join(" "),i=r.includes("'")?`"${r.replace(/"/g,'\\"')}"`:`'${r}'`;return`${s} ${i}`}function Gr(e){let r=e.trim(),n=W(r),t=N(n.command);if(!t.length||!ve(t))return{segment:r,changed:!1};let o=Yr(t);if(!o.changed)return{segment:r,changed:!1};let s=o.argv.join(" ");return n.wrapped?{segment:Vr(r,s),changed:!0}:{segment:s,changed:!0}}function q(e){let r=e.trim();if(!r)return{command:r,changed:!1};let n=r.includes("&&")?" && ":r.includes("||")?" || ":"; ",t=r.split(/\s*(?:&&|\|\||;)\s*/u),o=!1,s=t.map(i=>{let a=Gr(i);return a.changed&&(o=!0),a.segment});return o?{command:s.join(n),changed:!0}:{command:r,changed:!1}}function Ae(e){let r=W(e).command,n=N(r.trim());return n.length&&ve(n)?!0:/\b(rg|ripgrep)\b/i.test(r)}function Oe(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 n=e.match(/^search\s+"(.+)"\s+in\s+(.+)$/iu);return n?{pattern:n[1],target:n[2]?.trim()}:{}}function zr(e){let{pattern:r,target:n}=Oe(e);return r?J(n)?{kind:"rg_exclude_syntax",pattern:r,target:n}:Ee(n)?{kind:"bad_scope",pattern:r,target:n}:{kind:"not_repo_search",pattern:r,target:n}:{kind:"not_repo_search"}}function Jr(e){let{pattern:r,target:n}=Oe(e);if(!r)return null;if(J(n)){let t=`${n.trim()}/**`;return{command:`rg "${r}" -g '${t}' .`,changed:!0}}return n&&Ee(n)?{command:`rg -g ${n} "${r}" .`,changed:!0}:null}function qr(e){if(e.kind==="bad_scope"&&e.pattern?.includes("agent-os-land-pr")&&e.target==="package.json")return"Search package.json with a glob from the repo root: `rg -g package.json agent-os-land-pr .` \u2014 or run `node scripts/agent-os-land-pr.mjs <pr-url>` directly.";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 Xr(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 X(e){let r=e.meta?.trim()||(e.command?Xr(e.command):null)||null;if(r){let n=zr(r),t=qr(n);if(t)return t;let o=Jr(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 n=q(e.command);if(n.changed)return`Ripgrep scope may be invalid. Retry with: \`${n.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 Mr,Fr,Se,we=l(()=>{"use strict";Mr=new Set(["rg","ripgrep","grep"]),Fr=new Set(["bash","sh","dash","zsh"]),Se=new Set(["-e","--regexp","-f","--file","-m","--max-count","-A","--after-context","-B","--before-context","-C","--context","-g","--glob","--iglob"])});function v(e,r=200){let n=e.replace(/\s+/g," ").trim();return n.length>r?`${n.slice(0,r-1)}\u2026`:n}function en(e){let r=e.trim();if(!r)return null;if(r.startsWith("{"))try{return JSON.parse(r)}catch{}let n=r.indexOf("{"),t=r.lastIndexOf("}");if(n>=0&&t>n)try{return JSON.parse(r.slice(n,t+1))}catch{return null}return null}function E(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function rn(e){let r=e.metadata;if(!E(r))return null;let n=r.vulnerabilities;if(!E(n))return null;let t=s=>typeof n[s]=="number"?n[s]:0,o={info:t("info"),low:t("low"),moderate:t("moderate"),high:t("high"),critical:t("critical"),total:t("total")};return typeof n.total!="number"&&!o.critical&&!o.high&&!o.moderate&&!o.low&&!o.info?null:o}function nn(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 n=r.length?r.join(", "):"see report";return`npm audit: ${e.total} vulnerabilit${e.total===1?"y":"ies"} (${n}) \u2014 remediation required`}function tn(e,r){let n=e.error;if(E(n)){let s=typeof n.summary=="string"?n.summary.trim():"",i=typeof n.code=="string"?n.code.trim():"";if(s)return i?`${i}: ${s}`:s;if(i)return i}let t=typeof e.message=="string"?e.message.trim():"";if(t)return t;let o=r.trim();return o?v(o.split(`
5
5
  `).find(Boolean)??o,160):"npm audit failed"}function on(e){let r=`${e.stdout}
6
- ${e.stderr}`.trim(),n=en(r);if(!n||!E(n)){let o=v(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(E(n.error))return{kind:"command_failure",exitCode:e.exitCode,summary:`npm audit command failed: ${tn(n,e.stderr)}`};let t=rn(n);return t?e.exitCode===0&&t.total===0?{kind:"success",exitCode:0,summary:"npm audit: no vulnerabilities reported",audit:t}:{kind:"audit_findings",exitCode:e.exitCode,summary:nn(t),audit:t}:{kind:"command_failure",exitCode:e.exitCode,summary:"npm audit failed: JSON response missing vulnerability metadata",parseError:"missing_metadata"}}function sn(e){return Zr.test(e)}function an(e){let r=W(e).command;return Ie.test(e)||Ie.test(r)||Ae(e)}function ln(e){let r=q({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 t=(e.stderr||e.interleaved).trim();if(t&&Qr.test(t)){let i=v(t,160);return{kind:"command_failure",exitCode:1,summary:r??`ripgrep failed (exit 1): ${i}`}}let o=J(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 n=v(e.interleaved||e.stdout||e.stderr||`exit ${e.exitCode}`,180);return{kind:"command_failure",exitCode:e.exitCode,summary:r??`ripgrep failed (exit ${e.exitCode}): ${n}`}}function Pe(e){let r=e.stdout??"",n=e.stderr??"",t=e.interleavedOutput??"";if(sn(e.command)){let i=r.trim()||t.trim()||n.trim();return on({exitCode:e.exitCode,stdout:i,stderr:n})}if(an(e.command))return ln({command:e.command,exitCode:e.exitCode,stdout:r,stderr:n,interleaved:t});let o=q({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=v(t||r||n||`exit ${e.exitCode}`,180);return{kind:"command_failure",exitCode:e.exitCode,summary:`command failed (exit ${e.exitCode}): ${s}`}}var Zr,Ie,Qr,Ne=l(()=>{"use strict";we();Zr=/\bnpm\s+audit\b/i,Ie=/\b(rg|ripgrep)\b/i,Qr=/\b(error|invalid|unknown|panic|not found)\b/i});import{existsSync as un,readFileSync as cn}from"node:fs";function dn(e){let r=e.timestamp_ms;return e.timestamp||e.ts||(r?new Date(r).toISOString():void 0)}function mn(e){if(!e)return null;for(let r of Object.keys(e))if(r.endsWith("ToolCall")){let n=r.slice(0,-8);return n.length?n:r}return null}function fn(e,r){e.finalResult=r.result||r.subtype||r.terminal_reason||"completed",r.is_error&&(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 pn(e){let r=e.usage;return r&&typeof r=="object"&&!Array.isArray(r)?r:null}function gn(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 n=Object.keys(r)[0];if(n?.trim())return n.trim()}}function hn(e,r){let n=pn(r);if(!n)return;let t=R(n.input_tokens)??R(n.inputTokens)??R(n.prompt_tokens),o=R(n.output_tokens)??R(n.outputTokens)??R(n.completion_tokens);if(t===void 0&&o===void 0)return;let s=gn(r)??e.usage?.model;e.usage={...t!==void 0?{inputTokens:t}:{},...o!==void 0?{outputTokens:o}:{},...s?{model:s}:{}}}function yn(e){if(e.type!=="tool_call"||e.subtype!=="completed")return null;let n=(e.tool_call&&typeof e.tool_call=="object"&&!Array.isArray(e.tool_call)?e.tool_call:null)?.shellToolCall;if(!n||typeof n!="object"||Array.isArray(n))return null;let t=n,o=t.args,s=o&&typeof o=="object"&&!Array.isArray(o)&&typeof o.command=="string"?String(o.command):"",i=t.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,m=typeof u.exitCode=="number"?u.exitCode:0;return{command:s,exitCode:m,stdout:typeof u.stdout=="string"?u.stdout:"",stderr:typeof u.stderr=="string"?u.stderr:"",interleaved:typeof u.interleavedOutput=="string"?u.interleavedOutput:""}}function bn(e,r){r.kind==="success"||r.kind==="search_no_matches"||(e.lastShellOutcome=r)}function We(e){let r={firstEventAt:null,lastEventAt:null,currentTool:null,finalResult:null,error:null,lastShellOutcome:null,usage:null};if(!un(e))return r;let n=cn(e,"utf8").split(`
7
- `).filter(Boolean);for(let t of n){let o=O(t);if(!o)continue;let s=dn(o);if(s&&(r.firstEventAt||=s,r.lastEventAt=s),o.type==="stream_event"&&o.event&&typeof o.event=="object"&&o.event.type==="content_block_start"){let a=o.event.content_block;a?.type==="tool_use"&&(r.currentTool=String(a.name||"tool"))}if(o.type==="assistant"&&o.message&&typeof o.message=="object"){let a=o.message.content;if(Array.isArray(a)){let u=a.find(m=>m?.type==="tool_use");u&&(r.currentTool=String(u.name||r.currentTool))}}if(o.type==="tool_call"&&o.subtype==="started"){let a=o.tool_call&&typeof o.tool_call=="object"&&!Array.isArray(o.tool_call)?o.tool_call:void 0,u=mn(a);u&&(r.currentTool=u)}let i=yn(o);i&&bn(r,Pe({command:i.command,exitCode:i.exitCode,stdout:i.stdout,stderr:i.stderr,interleavedOutput:i.interleaved})),o.type==="result"&&fn(r,o),hn(r,o)}return r}var Te=l(()=>{"use strict";Ne();p()});function Rn(e,r=240){let n=e.replace(/\s+/g," ").trim();return n.length>r?`${n.slice(0,r-1)}\u2026`:n}function Ke(e){let r=(e??"").trim();if(!r)return null;for(let n of kn)if(n.test.test(r))return{blocked:!0,reason:`${n.label}: ${Rn(r)}`};return null}var kn,Ue=l(()=>{"use strict";kn=[{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 Be(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function xn(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 Sn(e){return!e?.checked||e.headIsAncestorOfBase!==!1?null:Be(e.head)}function _n(e,r,n){let t=["exited_with_changes_salvage"];if((e==="uncommitted"||e==="both")&&t.push(`${r} uncommitted change${r===1?"":"s"} with no final result`),(e==="committed_ahead"||e==="both")&&n){let o=n.length>12?n.slice(0,12):n;t.push(`commit ${o} ahead of base with no final result`)}return t.push("review worktree \u2014 commit, open a PR, or run a salvage worker before discarding"),t.join(": ")}function De(e){if(e.alive||xn(e.finalResult))return null;let r=(e.changedFiles??[]).filter(i=>i.trim()).length,n=Be(e.headCommit)??Sn(e.gitAncestry),t=r>0,o=!!n;if(!t&&!o)return{kind:"none",salvageable:!1,uncommittedCount:0,headCommit:null,attentionReason:"process exited without a final result"};let s=t&&o?"both":t?"uncommitted":"committed_ahead";return{kind:s,salvageable:!0,uncommittedCount:r,headCommit:n,attentionReason:_n(s,r,n)}}var Me=l(()=>{"use strict"});var x=l(()=>{"use strict"});var vn,wt,En,It,Fe=l(()=>{"use strict";vn=["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"],wt=new Set(vn),En=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY"],It=new Set(En)});import{spawnSync as Le}from"node:child_process";function Cn(e,r,n={}){let t=Le("git",r,V({cwd:e,encoding:"utf8"}));if(t.status!==0&&!n.allowFailure){let o=An(e,r,t);if(n.throwError)throw new Error(o);ge(o)}return t.stdout||""}function An(e,r,n){let t=typeof n.stderr=="string"&&n.stderr.trim()||typeof n.stdout=="string"&&n.stdout.trim()||n.error?.message||`exit ${n.status??"unknown"}`;return`git ${r.join(" ")} failed in ${e}: ${t}`}function $e(e){return Cn(e,["status","--short"],{allowFailure:!0}).split(`
8
- `).map(r=>r.trim()).filter(Boolean)}function T(e,r){try{let n=Le("git",r,V({cwd:e,encoding:"utf8"}));return{status:n.status,stdout:n.stdout||"",stderr:n.stderr||"",error:n.error?n.error.message:null}}catch(n){return{status:null,stdout:"",stderr:"",error:n.message}}}function He(e,r,n){let t=T(e,["merge-base","--is-ancestor",r,n]);return t.status===0?{isAncestor:!0,error:null}:t.status===1?{isAncestor:!1,error:null}:{isAncestor:null,error:t.error||t.stderr||t.stdout||`git exited ${t.status}`}}function je(e,r="origin/main"){let n=typeof r=="string"?{base:r}:r,t=n.baseCommit?.trim()||n.base?.trim()||"origin/main",o=n.baseCommit?.trim()||null;if(!e)return X(t,"missing worktree path");let s=T(e,["rev-parse","HEAD"]);if(s.status!==0)return X(t,s.error||s.stderr||s.stdout||"failed to resolve HEAD");let i;if(o)i=o;else{let f=T(e,["rev-parse",t]);if(f.status!==0)return X(t,f.error||f.stderr||f.stdout||`failed to resolve ${t}`,s.stdout.trim());i=f.stdout.trim()}let a=s.stdout.trim();if(a===i)return{checked:!0,base:t,head:a,baseHead:i,baseIsAncestorOfHead:!0,headIsAncestorOfBase:!0,relation:"synced"};let u=He(e,i,a),m=He(e,a,i),d=u.error||m.error||void 0;if(u.isAncestor==null||m.isAncestor==null)return{checked:!1,base:t,head:a,baseHead:i,baseIsAncestorOfHead:u.isAncestor,headIsAncestorOfBase:m.isAncestor,relation:"unknown",...d?{error:d}:{}};let c=u.isAncestor?"ahead":m.isAncestor?"merged":"diverged";return{checked:!0,base:t,head:a,baseHead:i,baseIsAncestorOfHead:u.isAncestor,headIsAncestorOfBase:m.isAncestor,relation:c,...d?{error:d}:{}}}function X(e,r,n=null){return{checked:!1,base:e,head:n,baseHead:null,baseIsAncestorOfHead:null,headIsAncestorOfBase:null,relation:"unknown",error:r}}var Q=l(()=>{"use strict";x();p();Fe()});function C(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function On(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 wn(e){if(C(e.headCommit)||C(e.prUrl)||C(e.artifactBundlePath)||C(e.patchPath))return!0;let r=e.gitAncestry;return!!(r?.checked&&r.headIsAncestorOfBase===!1&&C(r.head))}function Ye(e){return On(e.finalResult)?e.changedFiles.length===0?{blocked:!1}:wn(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 Ve(e){if(e.blocked)return e.detail??e.reason??"dirty_worktree_no_pr"}var Ge=l(()=>{"use strict"});function ee(e){let r=e.trim();if(!r.startsWith("{"))return null;try{let n=JSON.parse(r);if(n&&typeof n=="object"&&!Array.isArray(n))return n}catch{return null}return null}function ze(e){let r=e.targetPrReconciliation??e.target_pr_reconciliation??e.targetPrs??e.target_prs;return Array.isArray(r)?r.length:0}function K(e){let r=e.trim();if(!r)return null;let n=ee(r);if(n)return n;let t=[],o=/```(?:json)?\s*([\s\S]*?)```/gi,s;for(;(s=o.exec(r))!==null;){let d=ee(s[1]??"");d&&t.push(d)}let i=r.indexOf("{"),a=r.lastIndexOf("}");if(i>=0&&a>i){let d=ee(r.slice(i,a+1));d&&t.push(d)}if(t.length===0)return null;let u=t[t.length-1],m=ze(u);for(let d of t){let c=ze(d);c>m&&(u=d,m=c)}return u}var re=l(()=>{"use strict"});function Je(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 qe(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`${r[1].toLowerCase()}/pull/${r[2]}`:e.trim().toLowerCase()}function In(e){return new Set(e.map(r=>qe(Je(r)??r)).filter(Boolean))}function Xe(e,r,n){let t=Je(e)??e;if(!t)return"unrelated";let o=qe(t);return In(r).has(o)?"contract":n?(n.outcome==="skipped"||n.outcome==="blocked")&&n.reason?.trim()?"support":(n.outcome==="merged","unrelated"):"unrelated"}var Ze=l(()=>{"use strict"});function S(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function Pn(e){return e==null?!1:typeof e=="string"?e.trim().length>0:typeof e=="object"?Object.keys(e).length>0:!0}function b(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 U(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`${r[1].toLowerCase()}/pull/${r[2]}`:e.trim().toLowerCase()}function Qe(e){let r=null;if(typeof e=="string"){let o=K(e);o&&(r=o)}else e&&typeof e=="object"&&!Array.isArray(e)&&(r=e);if(!r)return[];let n=r.targetPrReconciliation??r.target_pr_reconciliation;if(!Array.isArray(n))return[];let t=[];for(let o of n){if(!o||typeof o!="object"||Array.isArray(o))continue;let s=o,i=b(String(s.prUrl??s.pr_url??"")),a=S(s.outcome);!i||a!=="merged"&&a!=="skipped"&&a!=="blocked"||t.push({prUrl:i,outcome:a,mergeCommit:S(s.mergeCommit??s.merge_commit),reason:S(s.reason)})}return t}function er(e,r){let n=[],t=b(S(e.prUrl)??"");if(t&&n.push(t),r&&typeof r=="object"&&!Array.isArray(r)){let o=r,s=b(String(o.prUrl??o.pr_url??""));s&&n.push(s)}return[...new Set(n)]}function rr(e){let{contract:r,snapshot:n}=e,t=e.finalResult??n.finalResult;if(!r.landingOnly&&r.targetPrUrls.length===0&&!r.repairEnforceOriginalPr)return{blocked:!1};if(!Pn(t))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?b(S(r.targetPrUrl)??"")??(r.targetPrUrls.length===1?b(r.targetPrUrls[0]):null):null;if(s){let c=er(n,t);if(!(t&&typeof t=="object"&&!Array.isArray(t)&&t.supersedesOriginalTargetPr===!0)){for(let y of c)if(y!==s)return{blocked:!0,reason:"duplicate_repair_pr",detail:`Repair worker opened or attached PR ${y} instead of canonical target ${s}`}}let h=Qe(t).find(y=>y.prUrl===s);if(!h||h.outcome!=="merged"&&!(h.reason?.trim()&&(h.outcome==="skipped"||h.outcome==="blocked")))return{blocked:!0,reason:"missing_repair_target_reconciliation",detail:`Repair worker must reconcile target PR ${s}`}}let i=Qe(t),a=new Map(i.map(c=>[U(c.prUrl),c])),u=new Set(r.targetPrUrls.map(c=>U(b(c)??c)).filter(Boolean)),m=er(n,t);if(r.landingOnly)for(let c of m){let f=a.get(U(c)),g=Xe(c,r.targetPrUrls,f);if(!(g==="contract"||g==="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 d=[];for(let c of r.targetPrUrls){let f=U(b(c)??c),g=a.get(f);if(!g){d.push(f);continue}g.outcome!=="merged"&&!g.reason?.trim()&&d.push(f)}return d.length>0?{blocked:!0,reason:d.every(c=>a.has(c))?"incomplete_target_pr_landing":"missing_target_pr_reconciliation",detail:`Target PR reconciliation incomplete: ${d.join(", ")}`}:{blocked:!1}}function nr(e){if(e.blocked)return e.detail??e.reason}var tr=l(()=>{"use strict";re();Ze()});function Wn(e){let r=Date.now();if(e.completionBlocker&&!or(e.completionBlocker))return{state:"blocked",reason:e.completionBlocker};if(e.finalResult){if(e.localOnly&&Kn(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=Ye(o);if(s.blocked){let i=Ve(s);return{state:"needs_attention",reason:s.reason?`landing blocked (${s.reason}): ${i}`:`landing blocked: ${i}`}}if(e.landingContract){let i=rr({contract:e.landingContract,snapshot:o,finalResult:e.finalResult}),a=nr(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(Tn(e))return{state:"done",reason:"empty abandoned worker record"};let o=Ke(e.error);if(o)return{state:"blocked",reason:o.reason};let s=De({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 n=e.startedAt?Date.parse(e.startedAt):NaN;if(!e.firstEventAt&&e.stdoutBytes===0&&e.heartbeatBytes===0&&Number.isFinite(n)&&r-n>Nn)return{state:"needs_attention",reason:`no first stream event ${G(n)}s after start`};let t=e.lastActivityAt?Date.parse(e.lastActivityAt):NaN;return Number.isFinite(t)&&r-t>B?{state:"stale",reason:`no log/event/heartbeat activity for ${G(t)}s`}:{state:"ok",reason:"recent activity"}}function or(e){let r=e?.trim();return r?/completion acknowledged but board not advanced/i.test(r)&&/task already terminal/i.test(r):!1}function Tn(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 Kn(e){let r=null;if(typeof e=="string"?r=K(e):e&&typeof e=="object"&&!Array.isArray(e)&&(r=e),!r)return!1;let n=r.targetPrReconciliation??r.target_pr_reconciliation;return Array.isArray(n)?n.some(t=>!t||typeof t!="object"||Array.isArray(t)?!1:String(t.outcome??"").trim()==="merged"):!1}function Un(e,r,n){let t=e.completionSnapshot?.finalResult;return e.completionAckSource==="local-pr-merged-reconcile"&&t!==void 0&&t!==null?t:r||(t??ke(n))}function sr(e,r={}){let n=We(e.stdoutPath),t=Re(e.heartbeatPath),o=typeof e.completionReportedAt=="string"&&e.completionReportedAt.trim().length>0,s=Un(e,n.finalResult,t),i=o?!1:P(e.pid),a=w(e.stdoutPath),u=w(e.stderrPath),m=w(e.heartbeatPath),d=$e(e.worktreePath),c=je(e.worktreePath,{base:r.base,baseCommit:r.baseCommit}),f=ye([n.lastEventAt,t.lastHeartbeatAt,I(e.stdoutPath),I(e.stderrPath),I(e.heartbeatPath)]),g=n.error||!i&&!s&&he(e.stderrPath,10).trim()||void 0,h=typeof e.completionBlocker=="string"&&e.completionBlocker.trim()?e.completionBlocker.trim():null,y=or(h)?null:h,Nr=e.repairTargetPrUrl?{landingOnly:!1,targetPrUrls:[e.repairTargetPrUrl],targetPrUrl:e.repairTargetPrUrl,repairEnforceOriginalPr:!0}:null,j=Wn({alive:i,finalResult:s,firstEventAt:n.firstEventAt,stdoutBytes:a,stderrBytes:u,heartbeatBytes:m,lastActivityAt:f,heartbeatBlocker:t.heartbeatBlocker,startedAt:e.startedAt,error:g,changedFiles:d,gitAncestry:c,completionBlocker:y,landingContract:Nr,prUrl:e.repairTargetPrUrl??e.taskPrUrl??null,localOnly:e.localOnly===!0,taskId:e.taskId??null,agentOsId:e.agentOsId??null,reconcileReason:e.reconcileReason??null}),Wr=y||j.state==="blocked"?"blocked":o||j.state==="done"?"done":s?"exited":i?"running":"exited";return{runId:e.runId,worker:e.name,pid:e.pid,alive:i,status:Wr,attention:j,branch:e.branch,worktreePath:e.worktreePath,ownedPaths:e.ownedPaths,stdoutBytes:a,stderrBytes:u,heartbeatBytes:m,firstEventAt:n.firstEventAt,lastEventAt:n.lastEventAt,lastActivityAt:f,currentTool:o?null:n.currentTool,heartbeatCount:t.heartbeatCount,lastHeartbeatAt:t.lastHeartbeatAt,lastHeartbeatPhase:t.lastHeartbeatPhase,lastHeartbeatSummary:t.lastHeartbeatSummary,heartbeatBlocker:t.heartbeatBlocker,timestampAnomalies:t.timestampAnomalies,finalResult:s,error:g,changedFiles:d,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:n.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 ir(e){return!!(e.finalResult||e.alive===!1||e.status==="exited"||e.status==="done")}function ar(e){return e.finalResult?e.attention.state==="needs_attention"||e.attention.state==="blocked":!1}var Nn,B,A=l(()=>{"use strict";xe();Te();Ue();Me();Q();Ge();tr();re();p();Nn=18e4,B=6e5});var ne=l(()=>{"use strict";Q();x()});var k=l(()=>{"use strict"});var D=l(()=>{"use strict"});var dr=l(()=>{"use strict"});var fo,po,te=l(()=>{"use strict";fo=25*1024*1024*1024,po=12*1024*1024*1024});var ko,Ro,mr=l(()=>{"use strict";te();ko=5*1024*1024*1024,Ro=10*1024*1024*1024});var Co,Ao,oe=l(()=>{"use strict";mr();te();Co=30*1024*1024*1024,Ao=15*1024*1024*1024});var fr=l(()=>{"use strict";M();p()});var pr=l(()=>{"use strict";A()});var Ln,$n,yr=l(()=>{"use strict";dr();_();k();D();F();oe();M();fr();pr();p();Ln=500*1024*1024,$n=4*1024*1024*1024});var F=l(()=>{"use strict";yr()});import{homedir as Yn}from"node:os";import Vn from"node:path";var br,ae=l(()=>{"use strict";br=Vn.join(Yn(),".kynver",".env")});var kr=l(()=>{"use strict"});var Rr=l(()=>{"use strict";kr()});var xr=l(()=>{"use strict"});var le=l(()=>{"use strict";Rr();xr()});var Sr=l(()=>{"use strict"});var _r=l(()=>{"use strict";Sr()});var H=l(()=>{"use strict";ae();x();_();le();_r()});var vr=l(()=>{"use strict";k();k()});var Er=l(()=>{"use strict";ae();le();H()});var Cr=l(()=>{"use strict";p()});import Xn from"node:path";var Gs,ue=l(()=>{"use strict";x();Cr();Gs=Xn.join(".openclaw","harness")});var $=l(()=>{"use strict";_();k();D();F();ue()});var Or=l(()=>{"use strict";ne();k();vr();_();H();Er();p();$()});import{homedir as tt,totalmem as bi}from"node:os";import ce from"node:path";var wr,Ii,Pi,Ni,Wi,_=l(()=>{"use strict";ne();x();p();k();D();F();oe();H();Or();$();wr=ce.join(tt(),".kynver"),Ii=ce.join(wr,"config.json"),Pi=ce.join(wr,"credentials"),Ni=500*1024*1024,Wi=4*1024*1024*1024});var Ir=l(()=>{"use strict";_();ue();$();p()});var M=l(()=>{"use strict";Ir();p()});A();var lr="kynver-harness:",Bn="@runner:";function ur(e){return e?.trim()?e.trim():null}function Dn(e){let r=ur(e);if(!r?.startsWith(lr))return null;let n=r.slice(lr.length),t=n.indexOf(Bn);return t>=0?n.slice(0,t).trim()||null:n.trim()||null}function cr(e,r){let n=ur(r);return n?Dn(e)===n:!1}A();p();function Mn(e){let{worker:r,status:n,taskLease:t}=e,o=t?.leaseOwner??null;if(r.dispatched&&t){if(t.status==="running"&&o&&!cr(o,r.runId))return{health:"orphaned",reason:`task lease held by ${o}, expected harness run ${r.runId}`};let i=r.leaseToken?.trim()??"",a=t.leaseToken?.trim()??"";if(t.status==="running"&&i&&a&&i!==a)return{health:"orphaned",reason:"task leaseToken superseded on board \u2014 completion replay would fail"};if(t.status==="running"&&!n.alive&&!n.finalResult)return{health:"orphaned",reason:"board task running but worker process is not alive"}}if(r.status==="running"&&!n.alive&&!n.finalResult)return{health:"orphaned",reason:"worker.json still running but process is dead"};if(n.attention.state==="stale")return{health:"stale",reason:n.attention.reason};let s=n.lastHeartbeatAt?Date.parse(n.lastHeartbeatAt):NaN;return n.alive&&Number.isFinite(s)&&Date.now()-s>B?{health:"stale",reason:`heartbeat older than ${Math.floor(B/1e3)}s`}:n.alive&&r.pid&&!P(r.pid)?{health:"orphaned",reason:"pid recorded but process is not alive"}:t?.status==="running"&&!n.alive&&n.finalResult?{health:"healthy",reason:"finished worker awaiting completion replay"}:{health:"healthy",reason:n.attention.reason||"worker within expected lifecycle bounds"}}M();function Pr(e){return!!e.completionReportedAt?.trim()}A();function ot(e){let{worker:r,status:n}=e,t=[];r.localOnly&&t.push("local-only worker (no board linkage)"),(!r.agentOsId||!r.taskId)&&t.push("missing agentOsId/taskId linkage"),Pr(r)&&t.push("completion already acknowledged"),r.completionBlocker&&t.push(r.completionBlocker),n.heartbeatBlocker&&n.alive&&t.push(`worker heartbeat blocker: ${n.heartbeatBlocker}`),n.attention.state==="blocked"&&t.push(n.attention.reason||"worker attention blocked"),ar(n)&&t.push(n.attention.reason||"landing gate blocked");let o=ir(n),s;return o?n.finalResult?s="final_result":n.alive?s="terminal_status":s="process_exited":t.push("worker has not reached a terminal condition"),{eligible:o&&t.length===0,terminalVerified:o,terminalReason:s,blockers:t}}export{ot as assessAutoCompleteEligibility,Mn as classifyWorkerHealth,sr as computeWorkerStatus};
6
+ ${e.stderr}`.trim(),n=en(r);if(!n||!E(n)){let o=v(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(E(n.error))return{kind:"command_failure",exitCode:e.exitCode,summary:`npm audit command failed: ${tn(n,e.stderr)}`};let t=rn(n);return t?e.exitCode===0&&t.total===0?{kind:"success",exitCode:0,summary:"npm audit: no vulnerabilities reported",audit:t}:{kind:"audit_findings",exitCode:e.exitCode,summary:nn(t),audit:t}:{kind:"command_failure",exitCode:e.exitCode,summary:"npm audit failed: JSON response missing vulnerability metadata",parseError:"missing_metadata"}}function sn(e){return Zr.test(e)}function an(e){let r=W(e).command;return Ie.test(e)||Ie.test(r)||Ae(e)}function ln(e){let r=X({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 t=(e.stderr||e.interleaved).trim();if(t&&Qr.test(t)){let i=v(t,160);return{kind:"command_failure",exitCode:1,summary:r??`ripgrep failed (exit 1): ${i}`}}let o=q(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 n=v(e.interleaved||e.stdout||e.stderr||`exit ${e.exitCode}`,180);return{kind:"command_failure",exitCode:e.exitCode,summary:r??`ripgrep failed (exit ${e.exitCode}): ${n}`}}function Pe(e){let r=e.stdout??"",n=e.stderr??"",t=e.interleavedOutput??"";if(sn(e.command)){let i=r.trim()||t.trim()||n.trim();return on({exitCode:e.exitCode,stdout:i,stderr:n})}if(an(e.command))return ln({command:e.command,exitCode:e.exitCode,stdout:r,stderr:n,interleaved:t});let o=X({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=v(t||r||n||`exit ${e.exitCode}`,180);return{kind:"command_failure",exitCode:e.exitCode,summary:`command failed (exit ${e.exitCode}): ${s}`}}var Zr,Ie,Qr,Ne=l(()=>{"use strict";we();Zr=/\bnpm\s+audit\b/i,Ie=/\b(rg|ripgrep)\b/i,Qr=/\b(error|invalid|unknown|panic|not found)\b/i});import{existsSync as un,readFileSync as cn}from"node:fs";function dn(e){let r=e.timestamp_ms;return e.timestamp||e.ts||(r?new Date(r).toISOString():void 0)}function mn(e){if(!e)return null;for(let r of Object.keys(e))if(r.endsWith("ToolCall")){let n=r.slice(0,-8);return n.length?n:r}return null}function fn(e,r){e.finalResult=r.result||r.subtype||r.terminal_reason||"completed",r.is_error&&(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 pn(e){let r=e.usage;return r&&typeof r=="object"&&!Array.isArray(r)?r:null}function gn(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 n=Object.keys(r)[0];if(n?.trim())return n.trim()}}function hn(e,r){let n=pn(r);if(!n)return;let t=R(n.input_tokens)??R(n.inputTokens)??R(n.prompt_tokens),o=R(n.output_tokens)??R(n.outputTokens)??R(n.completion_tokens);if(t===void 0&&o===void 0)return;let s=gn(r)??e.usage?.model;e.usage={...t!==void 0?{inputTokens:t}:{},...o!==void 0?{outputTokens:o}:{},...s?{model:s}:{}}}function yn(e){if(e.type!=="tool_call"||e.subtype!=="completed")return null;let n=(e.tool_call&&typeof e.tool_call=="object"&&!Array.isArray(e.tool_call)?e.tool_call:null)?.shellToolCall;if(!n||typeof n!="object"||Array.isArray(n))return null;let t=n,o=t.args,s=o&&typeof o=="object"&&!Array.isArray(o)&&typeof o.command=="string"?String(o.command):"",i=t.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,m=typeof u.exitCode=="number"?u.exitCode:0;return{command:s,exitCode:m,stdout:typeof u.stdout=="string"?u.stdout:"",stderr:typeof u.stderr=="string"?u.stderr:"",interleaved:typeof u.interleavedOutput=="string"?u.interleavedOutput:""}}function bn(e,r){r.kind==="success"||r.kind==="search_no_matches"||(e.lastShellOutcome=r)}function We(e){let r={firstEventAt:null,lastEventAt:null,currentTool:null,finalResult:null,error:null,lastShellOutcome:null,usage:null};if(!un(e))return r;let n=cn(e,"utf8").split(`
7
+ `).filter(Boolean);for(let t of n){let o=O(t);if(!o)continue;let s=dn(o);if(s&&(r.firstEventAt||=s,r.lastEventAt=s),o.type==="stream_event"&&o.event&&typeof o.event=="object"&&o.event.type==="content_block_start"){let a=o.event.content_block;a?.type==="tool_use"&&(r.currentTool=String(a.name||"tool"))}if(o.type==="assistant"&&o.message&&typeof o.message=="object"){let a=o.message.content;if(Array.isArray(a)){let u=a.find(m=>m?.type==="tool_use");u&&(r.currentTool=String(u.name||r.currentTool))}}if(o.type==="tool_call"&&o.subtype==="started"){let a=o.tool_call&&typeof o.tool_call=="object"&&!Array.isArray(o.tool_call)?o.tool_call:void 0,u=mn(a);u&&(r.currentTool=u)}let i=yn(o);i&&bn(r,Pe({command:i.command,exitCode:i.exitCode,stdout:i.stdout,stderr:i.stderr,interleavedOutput:i.interleaved})),o.type==="result"&&fn(r,o),hn(r,o)}return r}var Te=l(()=>{"use strict";Ne();p()});function Rn(e,r=240){let n=e.replace(/\s+/g," ").trim();return n.length>r?`${n.slice(0,r-1)}\u2026`:n}function Ke(e){let r=(e??"").trim();if(!r)return null;for(let n of kn)if(n.test.test(r))return{blocked:!0,reason:`${n.label}: ${Rn(r)}`};return null}var kn,Ue=l(()=>{"use strict";kn=[{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 Be(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function xn(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 Sn(e){return!e?.checked||e.headIsAncestorOfBase!==!1?null:Be(e.head)}function _n(e,r,n){let t=["exited_with_changes_salvage"];if((e==="uncommitted"||e==="both")&&t.push(`${r} uncommitted change${r===1?"":"s"} with no final result`),(e==="committed_ahead"||e==="both")&&n){let o=n.length>12?n.slice(0,12):n;t.push(`commit ${o} ahead of base with no final result`)}return t.push("review worktree \u2014 commit, open a PR, or run a salvage worker before discarding"),t.join(": ")}function De(e){if(e.alive||xn(e.finalResult))return null;let r=(e.changedFiles??[]).filter(i=>i.trim()).length,n=Be(e.headCommit)??Sn(e.gitAncestry),t=r>0,o=!!n;if(!t&&!o)return{kind:"none",salvageable:!1,uncommittedCount:0,headCommit:null,attentionReason:"process exited without a final result"};let s=t&&o?"both":t?"uncommitted":"committed_ahead";return{kind:s,salvageable:!0,uncommittedCount:r,headCommit:n,attentionReason:_n(s,r,n)}}var Me=l(()=>{"use strict"});var x=l(()=>{"use strict"});var vn,wt,En,It,Fe=l(()=>{"use strict";vn=["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"],wt=new Set(vn),En=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY"],It=new Set(En)});import{spawnSync as $e}from"node:child_process";function Cn(e,r,n={}){let t=$e("git",r,G({cwd:e,encoding:"utf8"}));if(t.status!==0&&!n.allowFailure){let o=An(e,r,t);if(n.throwError)throw new Error(o);V(o)}return t.stdout||""}function An(e,r,n){let t=typeof n.stderr=="string"&&n.stderr.trim()||typeof n.stdout=="string"&&n.stdout.trim()||n.error?.message||`exit ${n.status??"unknown"}`;return`git ${r.join(" ")} failed in ${e}: ${t}`}function Le(e){return Cn(e,["status","--short"],{allowFailure:!0}).split(`
8
+ `).map(r=>r.trim()).filter(Boolean)}function T(e,r){try{let n=$e("git",r,G({cwd:e,encoding:"utf8"}));return{status:n.status,stdout:n.stdout||"",stderr:n.stderr||"",error:n.error?n.error.message:null}}catch(n){return{status:null,stdout:"",stderr:"",error:n.message}}}function He(e,r,n){let t=T(e,["merge-base","--is-ancestor",r,n]);return t.status===0?{isAncestor:!0,error:null}:t.status===1?{isAncestor:!1,error:null}:{isAncestor:null,error:t.error||t.stderr||t.stdout||`git exited ${t.status}`}}function je(e,r="origin/main"){let n=typeof r=="string"?{base:r}:r,t=n.baseCommit?.trim()||n.base?.trim()||"origin/main",o=n.baseCommit?.trim()||null;if(!e)return Z(t,"missing worktree path");let s=T(e,["rev-parse","HEAD"]);if(s.status!==0)return Z(t,s.error||s.stderr||s.stdout||"failed to resolve HEAD");let i;if(o)i=o;else{let f=T(e,["rev-parse",t]);if(f.status!==0)return Z(t,f.error||f.stderr||f.stdout||`failed to resolve ${t}`,s.stdout.trim());i=f.stdout.trim()}let a=s.stdout.trim();if(a===i)return{checked:!0,base:t,head:a,baseHead:i,baseIsAncestorOfHead:!0,headIsAncestorOfBase:!0,relation:"synced"};let u=He(e,i,a),m=He(e,a,i),d=u.error||m.error||void 0;if(u.isAncestor==null||m.isAncestor==null)return{checked:!1,base:t,head:a,baseHead:i,baseIsAncestorOfHead:u.isAncestor,headIsAncestorOfBase:m.isAncestor,relation:"unknown",...d?{error:d}:{}};let c=u.isAncestor?"ahead":m.isAncestor?"merged":"diverged";return{checked:!0,base:t,head:a,baseHead:i,baseIsAncestorOfHead:u.isAncestor,headIsAncestorOfBase:m.isAncestor,relation:c,...d?{error:d}:{}}}function Z(e,r,n=null){return{checked:!1,base:e,head:n,baseHead:null,baseIsAncestorOfHead:null,headIsAncestorOfBase:null,relation:"unknown",error:r}}var ee=l(()=>{"use strict";x();p();Fe()});function C(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function On(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 wn(e){if(C(e.headCommit)||C(e.prUrl)||C(e.artifactBundlePath)||C(e.patchPath))return!0;let r=e.gitAncestry;return!!(r?.checked&&r.headIsAncestorOfBase===!1&&C(r.head))}function Ye(e){return On(e.finalResult)?e.changedFiles.length===0?{blocked:!1}:wn(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 Ve(e){if(e.blocked)return e.detail??e.reason??"dirty_worktree_no_pr"}var Ge=l(()=>{"use strict"});function re(e){let r=e.trim();if(!r.startsWith("{"))return null;try{let n=JSON.parse(r);if(n&&typeof n=="object"&&!Array.isArray(n))return n}catch{return null}return null}function ze(e){let r=e.targetPrReconciliation??e.target_pr_reconciliation??e.targetPrs??e.target_prs;return Array.isArray(r)?r.length:0}function K(e){let r=e.trim();if(!r)return null;let n=re(r);if(n)return n;let t=[],o=/```(?:json)?\s*([\s\S]*?)```/gi,s;for(;(s=o.exec(r))!==null;){let d=re(s[1]??"");d&&t.push(d)}let i=r.indexOf("{"),a=r.lastIndexOf("}");if(i>=0&&a>i){let d=re(r.slice(i,a+1));d&&t.push(d)}if(t.length===0)return null;let u=t[t.length-1],m=ze(u);for(let d of t){let c=ze(d);c>m&&(u=d,m=c)}return u}var ne=l(()=>{"use strict"});function Je(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 qe(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`${r[1].toLowerCase()}/pull/${r[2]}`:e.trim().toLowerCase()}function In(e){return new Set(e.map(r=>qe(Je(r)??r)).filter(Boolean))}function Xe(e,r,n){let t=Je(e)??e;if(!t)return"unrelated";let o=qe(t);return In(r).has(o)?"contract":n?(n.outcome==="skipped"||n.outcome==="blocked")&&n.reason?.trim()?"support":(n.outcome==="merged","unrelated"):"unrelated"}var Ze=l(()=>{"use strict"});function S(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function Pn(e){return e==null?!1:typeof e=="string"?e.trim().length>0:typeof e=="object"?Object.keys(e).length>0:!0}function b(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 U(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`${r[1].toLowerCase()}/pull/${r[2]}`:e.trim().toLowerCase()}function Qe(e){let r=null;if(typeof e=="string"){let o=K(e);o&&(r=o)}else e&&typeof e=="object"&&!Array.isArray(e)&&(r=e);if(!r)return[];let n=r.targetPrReconciliation??r.target_pr_reconciliation;if(!Array.isArray(n))return[];let t=[];for(let o of n){if(!o||typeof o!="object"||Array.isArray(o))continue;let s=o,i=b(String(s.prUrl??s.pr_url??"")),a=S(s.outcome);!i||a!=="merged"&&a!=="skipped"&&a!=="blocked"||t.push({prUrl:i,outcome:a,mergeCommit:S(s.mergeCommit??s.merge_commit),reason:S(s.reason)})}return t}function er(e,r){let n=[],t=b(S(e.prUrl)??"");if(t&&n.push(t),r&&typeof r=="object"&&!Array.isArray(r)){let o=r,s=b(String(o.prUrl??o.pr_url??""));s&&n.push(s)}return[...new Set(n)]}function rr(e){let{contract:r,snapshot:n}=e,t=e.finalResult??n.finalResult;if(!r.landingOnly&&r.targetPrUrls.length===0&&!r.repairEnforceOriginalPr)return{blocked:!1};if(!Pn(t))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?b(S(r.targetPrUrl)??"")??(r.targetPrUrls.length===1?b(r.targetPrUrls[0]):null):null;if(s){let c=er(n,t);if(!(t&&typeof t=="object"&&!Array.isArray(t)&&t.supersedesOriginalTargetPr===!0)){for(let y of c)if(y!==s)return{blocked:!0,reason:"duplicate_repair_pr",detail:`Repair worker opened or attached PR ${y} instead of canonical target ${s}`}}let h=Qe(t).find(y=>y.prUrl===s);if(!h||h.outcome!=="merged"&&!(h.reason?.trim()&&(h.outcome==="skipped"||h.outcome==="blocked")))return{blocked:!0,reason:"missing_repair_target_reconciliation",detail:`Repair worker must reconcile target PR ${s}`}}let i=Qe(t),a=new Map(i.map(c=>[U(c.prUrl),c])),u=new Set(r.targetPrUrls.map(c=>U(b(c)??c)).filter(Boolean)),m=er(n,t);if(r.landingOnly)for(let c of m){let f=a.get(U(c)),g=Xe(c,r.targetPrUrls,f);if(!(g==="contract"||g==="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 d=[];for(let c of r.targetPrUrls){let f=U(b(c)??c),g=a.get(f);if(!g){d.push(f);continue}g.outcome!=="merged"&&!g.reason?.trim()&&d.push(f)}return d.length>0?{blocked:!0,reason:d.every(c=>a.has(c))?"incomplete_target_pr_landing":"missing_target_pr_reconciliation",detail:`Target PR reconciliation incomplete: ${d.join(", ")}`}:{blocked:!1}}function nr(e){if(e.blocked)return e.detail??e.reason}var tr=l(()=>{"use strict";ne();Ze()});function Wn(e){let r=Date.now();if(e.completionBlocker&&!or(e.completionBlocker))return{state:"blocked",reason:e.completionBlocker};if(e.finalResult){if(e.localOnly&&Kn(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=Ye(o);if(s.blocked){let i=Ve(s);return{state:"needs_attention",reason:s.reason?`landing blocked (${s.reason}): ${i}`:`landing blocked: ${i}`}}if(e.landingContract){let i=rr({contract:e.landingContract,snapshot:o,finalResult:e.finalResult}),a=nr(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(Tn(e))return{state:"done",reason:"empty abandoned worker record"};let o=Ke(e.error);if(o)return{state:"blocked",reason:o.reason};let s=De({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 n=e.startedAt?Date.parse(e.startedAt):NaN;if(!e.firstEventAt&&e.stdoutBytes===0&&e.heartbeatBytes===0&&Number.isFinite(n)&&r-n>Nn)return{state:"needs_attention",reason:`no first stream event ${z(n)}s after start`};let t=e.lastActivityAt?Date.parse(e.lastActivityAt):NaN;return Number.isFinite(t)&&r-t>B?{state:"stale",reason:`no log/event/heartbeat activity for ${z(t)}s`}:{state:"ok",reason:"recent activity"}}function or(e){let r=e?.trim();return r?/completion acknowledged but board not advanced/i.test(r)&&/task already terminal/i.test(r):!1}function Tn(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 Kn(e){let r=null;if(typeof e=="string"?r=K(e):e&&typeof e=="object"&&!Array.isArray(e)&&(r=e),!r)return!1;let n=r.targetPrReconciliation??r.target_pr_reconciliation;return Array.isArray(n)?n.some(t=>!t||typeof t!="object"||Array.isArray(t)?!1:String(t.outcome??"").trim()==="merged"):!1}function Un(e,r,n){let t=e.completionSnapshot?.finalResult;return e.completionAckSource==="local-pr-merged-reconcile"&&t!==void 0&&t!==null?t:r||(t??ke(n))}function sr(e,r={}){let n=We(e.stdoutPath),t=Re(e.heartbeatPath),o=typeof e.completionReportedAt=="string"&&e.completionReportedAt.trim().length>0,s=Un(e,n.finalResult,t),i=o?!1:P(e.pid),a=w(e.stdoutPath),u=w(e.stderrPath),m=w(e.heartbeatPath),d=Le(e.worktreePath),c=je(e.worktreePath,{base:r.base,baseCommit:r.baseCommit}),f=ye([n.lastEventAt,t.lastHeartbeatAt,I(e.stdoutPath),I(e.stderrPath),I(e.heartbeatPath)]),g=n.error||!i&&!s&&he(e.stderrPath,10).trim()||void 0,h=typeof e.completionBlocker=="string"&&e.completionBlocker.trim()?e.completionBlocker.trim():null,y=or(h)?null:h,Nr=e.repairTargetPrUrl?{landingOnly:!1,targetPrUrls:[e.repairTargetPrUrl],targetPrUrl:e.repairTargetPrUrl,repairEnforceOriginalPr:!0}:null,j=Wn({alive:i,finalResult:s,firstEventAt:n.firstEventAt,stdoutBytes:a,stderrBytes:u,heartbeatBytes:m,lastActivityAt:f,heartbeatBlocker:t.heartbeatBlocker,startedAt:e.startedAt,error:g,changedFiles:d,gitAncestry:c,completionBlocker:y,landingContract:Nr,prUrl:e.repairTargetPrUrl??e.taskPrUrl??null,localOnly:e.localOnly===!0,taskId:e.taskId??null,agentOsId:e.agentOsId??null,reconcileReason:e.reconcileReason??null}),Wr=y||j.state==="blocked"?"blocked":o||j.state==="done"?"done":s?"exited":i?"running":"exited";return{runId:e.runId,worker:e.name,pid:e.pid,alive:i,status:Wr,attention:j,branch:e.branch,worktreePath:e.worktreePath,ownedPaths:e.ownedPaths,stdoutBytes:a,stderrBytes:u,heartbeatBytes:m,firstEventAt:n.firstEventAt,lastEventAt:n.lastEventAt,lastActivityAt:f,currentTool:o?null:n.currentTool,heartbeatCount:t.heartbeatCount,lastHeartbeatAt:t.lastHeartbeatAt,lastHeartbeatPhase:t.lastHeartbeatPhase,lastHeartbeatSummary:t.lastHeartbeatSummary,heartbeatBlocker:t.heartbeatBlocker,timestampAnomalies:t.timestampAnomalies,finalResult:s,error:g,changedFiles:d,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:n.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 ir(e){return!!(e.finalResult||e.alive===!1||e.status==="exited"||e.status==="done")}function ar(e){return e.finalResult?e.attention.state==="needs_attention"||e.attention.state==="blocked":!1}var Nn,B,A=l(()=>{"use strict";xe();Te();Ue();Me();ee();Ge();tr();ne();p();Nn=18e4,B=6e5});var te=l(()=>{"use strict";ee();x()});var k=l(()=>{"use strict"});var D=l(()=>{"use strict"});var dr=l(()=>{"use strict"});var fo,po,oe=l(()=>{"use strict";fo=25*1024*1024*1024,po=12*1024*1024*1024});var ko,Ro,mr=l(()=>{"use strict";oe();ko=5*1024*1024*1024,Ro=10*1024*1024*1024});var Co,Ao,se=l(()=>{"use strict";mr();oe();Co=30*1024*1024*1024,Ao=15*1024*1024*1024});var fr=l(()=>{"use strict";M();p()});var pr=l(()=>{"use strict";A()});var $n,Ln,yr=l(()=>{"use strict";dr();_();k();D();F();se();M();fr();pr();p();$n=500*1024*1024,Ln=4*1024*1024*1024});var F=l(()=>{"use strict";yr()});import{homedir as Yn}from"node:os";import Vn from"node:path";var br,le=l(()=>{"use strict";br=Vn.join(Yn(),".kynver",".env")});var kr=l(()=>{"use strict"});var Rr=l(()=>{"use strict";kr()});var xr=l(()=>{"use strict"});var ue=l(()=>{"use strict";Rr();xr()});var Sr=l(()=>{"use strict"});var _r=l(()=>{"use strict";Sr()});var H=l(()=>{"use strict";le();x();_();ue();_r()});var vr=l(()=>{"use strict";k();k()});var Er=l(()=>{"use strict";le();ue();H()});var Cr=l(()=>{"use strict";p()});import Xn from"node:path";var Gs,ce=l(()=>{"use strict";x();Cr();Gs=Xn.join(".openclaw","harness")});var L=l(()=>{"use strict";_();k();D();F();ce()});var Or=l(()=>{"use strict";te();k();vr();_();H();Er();p();L()});import{homedir as tt,totalmem as bi}from"node:os";import de from"node:path";var wr,Ii,Pi,Ni,Wi,_=l(()=>{"use strict";te();x();p();k();D();F();se();H();Or();L();wr=de.join(tt(),".kynver"),Ii=de.join(wr,"config.json"),Pi=de.join(wr,"credentials"),Ni=500*1024*1024,Wi=4*1024*1024*1024});var Ir=l(()=>{"use strict";_();ce();L();p()});var M=l(()=>{"use strict";Ir();p()});A();var lr="kynver-harness:",Bn="@runner:";function ur(e){return e?.trim()?e.trim():null}function Dn(e){let r=ur(e);if(!r?.startsWith(lr))return null;let n=r.slice(lr.length),t=n.indexOf(Bn);return t>=0?n.slice(0,t).trim()||null:n.trim()||null}function cr(e,r){let n=ur(r);return n?Dn(e)===n:!1}A();p();function Mn(e){let{worker:r,status:n,taskLease:t}=e,o=t?.leaseOwner??null;if(r.dispatched&&t){if(t.status==="running"&&o&&!cr(o,r.runId))return{health:"orphaned",reason:`task lease held by ${o}, expected harness run ${r.runId}`};let i=r.leaseToken?.trim()??"",a=t.leaseToken?.trim()??"";if(t.status==="running"&&i&&a&&i!==a)return{health:"orphaned",reason:"task leaseToken superseded on board \u2014 completion replay would fail"};if(t.status==="running"&&!n.alive&&!n.finalResult)return{health:"orphaned",reason:"board task running but worker process is not alive"}}if(r.status==="running"&&!n.alive&&!n.finalResult)return{health:"orphaned",reason:"worker.json still running but process is dead"};if(n.attention.state==="stale")return{health:"stale",reason:n.attention.reason};let s=n.lastHeartbeatAt?Date.parse(n.lastHeartbeatAt):NaN;return n.alive&&Number.isFinite(s)&&Date.now()-s>B?{health:"stale",reason:`heartbeat older than ${Math.floor(B/1e3)}s`}:n.alive&&r.pid&&!P(r.pid)?{health:"orphaned",reason:"pid recorded but process is not alive"}:t?.status==="running"&&!n.alive&&n.finalResult?{health:"healthy",reason:"finished worker awaiting completion replay"}:{health:"healthy",reason:n.attention.reason||"worker within expected lifecycle bounds"}}M();function Pr(e){return!!e.completionReportedAt?.trim()}A();function ot(e){let{worker:r,status:n}=e,t=[];r.localOnly&&t.push("local-only worker (no board linkage)"),(!r.agentOsId||!r.taskId)&&t.push("missing agentOsId/taskId linkage"),Pr(r)&&t.push("completion already acknowledged"),r.completionBlocker&&t.push(r.completionBlocker),n.heartbeatBlocker&&n.alive&&t.push(`worker heartbeat blocker: ${n.heartbeatBlocker}`),n.attention.state==="blocked"&&t.push(n.attention.reason||"worker attention blocked"),ar(n)&&t.push(n.attention.reason||"landing gate blocked");let o=ir(n),s;return o?n.finalResult?s="final_result":n.alive?s="terminal_status":s="process_exited":t.push("worker has not reached a terminal condition"),{eligible:o&&t.length===0,terminalVerified:o,terminalReason:s,blockers:t}}export{ot as assessAutoCompleteEligibility,Mn as classifyWorkerHealth,sr as computeWorkerStatus};
@@ -1,2 +1,2 @@
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 $(e){let r=e[br];return r?new Set(r.split(/[\s,]+/).map(t=>t.trim()).filter(Boolean)):new Set}function v(e,r={}){return fr.has(e)?!0:yr.has(e)||r.operatorAllow?.has(e)||vr.some(t=>e.endsWith(t))?!1:gr.some(t=>e.endsWith(t))}function pe(e){let r=$(e);return Object.keys(e).filter(t=>v(t,{operatorAllow:r})).sort()}function me(e){let r=$(e);return r.size===0?[]:Object.keys(e).filter(t=>r.has(t)&&!v(t,{operatorAllow:r})&&v(t)).sort()}function E(e){let r=$(e),t={...e};for(let n of Object.keys(t))v(n,{operatorAllow:r})&&delete t[n];return t}function Rr(e){let r=pe(e),t=me(e);return{forbiddenPresent:r,safe:r.length===0,...t.length?{operatorAllowedActive:t}:{}}}var mr,fr,gr,hr,yr,vr,br,C=o(()=>{"use strict";mr=["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"],fr=new Set(mr),gr=["_SECRET","_API_KEY","_KEK","_KEY","_TOKEN","_PASSWORD","_PASSPHRASE","_SALT"],hr=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY"],yr=new Set(hr),vr=["_PUBLIC_KEY"],br="KYNVER_WORKER_ENV_ALLOW"});var g=o(()=>{"use strict"});function Y(e){if(!e)return!1;try{return process.kill(e,0),!0}catch{return!1}}var a=o(()=>{"use strict"});var z=o(()=>{"use strict";g();a();C()});var q=o(()=>{"use strict";z();g()});var d=o(()=>{"use strict"});var P=o(()=>{"use strict"});var be=o(()=>{"use strict"});var dn,pn,J=o(()=>{"use strict";dn=25*1024*1024*1024,pn=12*1024*1024*1024});var yn,vn,Re=o(()=>{"use strict";J();yn=5*1024*1024*1024,vn=10*1024*1024*1024});var Sn,En,X=o(()=>{"use strict";Re();J();Sn=30*1024*1024*1024,En=15*1024*1024*1024});var ke=o(()=>{"use strict";a()});import Kr from"node:path";var Dn,Q=o(()=>{"use strict";g();ke();Dn=Kr.join(".openclaw","harness")});var N=o(()=>{"use strict";p();d();P();T();Q()});var Ee=o(()=>{"use strict";p();Q();N();a()});var ee=o(()=>{"use strict";Ee();a()});var Ce=o(()=>{"use strict";ee();a()});var Oe=o(()=>{"use strict"});var Ae=o(()=>{"use strict";Oe();a()});var we=o(()=>{"use strict"});var Pe=o(()=>{"use strict";we()});var Ie=o(()=>{"use strict";Pe();a()});var Ne=o(()=>{"use strict"});var Te=o(()=>{"use strict"});var De=o(()=>{"use strict"});var re=o(()=>{"use strict"});var Ke=o(()=>{"use strict"});var We=o(()=>{"use strict";re();Ke()});var Be=o(()=>{"use strict";Ae();Ie();Ne();Te();z();De();We();re();a()});var Me=o(()=>{"use strict";Be()});var $r,jr,Ue=o(()=>{"use strict";be();p();d();P();T();X();ee();Ce();Me();a();$r=500*1024*1024,jr=4*1024*1024*1024});var T=o(()=>{"use strict";Ue()});import{homedir as Vr}from"node:os";import Yr from"node:path";var Le,te=o(()=>{"use strict";Le=Yr.join(Vr(),".kynver",".env")});var Fe=o(()=>{"use strict"});var He=o(()=>{"use strict";Fe()});var $e=o(()=>{"use strict"});var ne=o(()=>{"use strict";He();$e()});var je=o(()=>{"use strict"});var Ve=o(()=>{"use strict";je()});var K=o(()=>{"use strict";te();g();p();ne();Ve()});var Ye=o(()=>{"use strict";d();d()});var Ge=o(()=>{"use strict";te();ne();K()});var ze=o(()=>{"use strict";q();d();Ye();p();K();Ge();a();N()});import{homedir as et,totalmem as ws}from"node:os";import oe from"node:path";var qe,Fs,Hs,$s,js,p=o(()=>{"use strict";q();g();a();d();P();T();X();K();ze();N();qe=oe.join(et(),".kynver"),Fs=oe.join(qe,"config.json"),Hs=oe.join(qe,"credentials"),$s=500*1024*1024,js=4*1024*1024*1024});C();C();var j="KYNVER_NO_PROD_DB_CREDENTIALS",xr=["KYNVER_ENV_FILE"],kr=new Set(["1","true","yes","on"]);function ge(e){let r=e[j]?.trim().toLowerCase();return r!==void 0&&kr.has(r)}function f(e,r={}){let t=E(e);if(!r.reviewWorker)return t;let n={...t,[j]:"1"};for(let i of xr)delete n[i];return n}var fe=["DATABASE_URL","PRODUCTION_DATABASE_URL","KYNVER_PRODUCTION_DATABASE_URL"];function _r(e,r={}){let t=f(e,r),n=Object.keys(t).filter(c=>c.endsWith("_SECRET")||c.endsWith("_API_KEY")||fe.includes(c)),i=fe.every(c=>t[c]===void 0),s=r.reviewWorker?t.KYNVER_ENV_FILE===void 0:!0,l=ge(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 Sr="expert-lane-pr-review:",Er="plan-review-task",Cr="scheduledjob:",O=new Set(["lorentz","dalton","rhea","sentinel"]);function Or(e){if(!e)return null;let r=e.trim().toLowerCase();return r.length?r:null}function V(e){return/\b(deep[- ]?review|plan review|review .*plan|security review|red[- ]team|lb\d+|risk register|signoff|verification|evidence|prove|gate)\b/.test(e)}function Ar(e,r){return e.startsWith("factory:")?e.includes("lb")||V(r):!1}function wr(e){let r=(e.executorRef??"").toLowerCase(),t=(e.title??"").toLowerCase(),n=(e.description??"").toLowerCase(),i=`${t}
2
- ${n}`,s=Or(e.personaSlug);return!!(r.startsWith(Sr)||r===Er||r.startsWith("daemon-review:")||s&&O.has(s)&&(r.includes("evidence")||r.includes("validate")||r.includes("review")||Ar(r,i)||V(i))||r.startsWith(Cr)&&e.parentTaskId&&s&&O.has(s)||e.planId&&!e.parentTaskId&&s&&O.has(s)&&V(i)||t.includes("expert pr review")||e.parentTaskId&&(t.startsWith("review:")||t.includes("review required")||t.includes("runtime review"))&&s&&O.has(s))}var Pr=/^claude[-_]/i,Ir=/^(?:opus|sonnet|haiku)\b/i;function he(e){let r=e.trim();return Pr.test(r)||Ir.test(r)}function ye(e){let r=e.trim().toLowerCase();return r.startsWith("gpt-")||r.startsWith("gpt5")||r.includes("codex")}function ve(e){let r=e.trim().toLowerCase();return r.includes("composer")||r.includes("cursor")}function Nr(e){return ye(e)?"codex":he(e)?"claude":(ve(e),"cursor")}function Tr(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==="cursor"||n==="composer"?{provider:"cursor",model:i,rule:"executor_ref:provider_cursor"}:null:null}function Dr(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?he(n)||ye(n)||ve(n)?{lane:t,model:n,provider:Nr(n),rule:"executor_ref:harness_lane_model"}:{lane:t,rule:"executor_ref:harness_lane"}:{lane:t,rule:"executor_ref:harness_lane"}}function A(e){let r=typeof e=="string"?e.trim():"";return r?Tr(r)??Dr(r):null}p();a();var ot="kynver",it=["agent_os_context_envelope","agent_os_search_memory","agent_os_search_skills","agent_os_get_skill","agent_os_progress_note"],st=it.map(e=>`mcp__${ot}__${e}`);a();a();var La=process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.4";function lt(){return process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.4"}var ct=lt();a();var tl=600*1e3;var Qe="composer-2.5";var m="cursor",ut={anthropic:"claude",opus:"claude",openai:"openai-compatible",openai_compatible:"openai-compatible","openai-compat":"openai-compatible"};function er(e){let r=e.trim().toLowerCase();return ut[r]??r}var dt=new Set(["claude","opus","anthropic"]),pt=[/\[worker-provider:\s*claude\]/i,/\[use-claude-worker\]/i,/\[operator-worker-provider:\s*claude\]/i];function R(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function u(e){if(!e?.trim())return!1;let r=e.trim().toLowerCase();return dt.has(r)?!0:r.includes("claude")||r.includes("opus")}function ie(e){if(!e)return!1;let r=e.workerProviderOverride;if(typeof r=="string"&&u(r))return!0;let t=R(e,"executorRef").toLowerCase();if(t==="provider:claude"||t.startsWith("provider:claude:")||t.includes("claude-worker-override")||t.includes("operator-claude"))return!0;let n=A(R(e,"executorRef"));if(n?.provider&&u(n.provider)||n?.model&&u(mt(n.model)))return!0;let i=R(e,"description");if(pt.some(l=>l.test(i)))return!0;let s=R(e,"title");return!!/\[use-claude-worker\]/i.test(s)}function mt(e){let r=e.trim().toLowerCase();return/^claude[-_]/.test(r)||/^(?:opus|sonnet|haiku)\b/.test(r)?"claude":r}function ft(e,r){return{provider:m,model:Qe,rule:`policy:cursor_default${r}`,requestedModel:e}}var gt=["explicit:","executor_ref:","factory:","task:"];function ht(e){return gt.some(r=>e.startsWith(r))}function rr(e){if(!e)return!1;let r=e.workerProviderOverride;return typeof r=="string"&&r.trim()||A(R(e,"executorRef"))?.provider?!0:ie(e)}function Ze(e){let{routing:r,task:t}=e,n=e.explicitProvider?.trim().toLowerCase();if(e.explicitProviderIsOperatorOverride&&u(n))return{...r,provider:"claude",rule:r.rule.startsWith("explicit:")?r.rule:"explicit:operator_provider"};if(n||ht(r.rule)||rr(t)||!u(r.provider))return r;let i=r.rule&&r.rule!=="default:global"?`:${r.rule.replace(/:/g,"_")}`:"";return ft(r.model,i)}function yt(e,r=m){let t=e?.trim();return t?er(t):r}function vt(e){let r=[...new Set(e.map(t=>t.trim().toLowerCase()).filter(Boolean))];return r.includes(m)?[...new Set(r.map(t=>u(t)?m:t))]:r.every(t=>u(t))?[m]:r}var bt=/\b(npm run typecheck|tsc\b[^|&;]*--noEmit|node scripts\/verify-pr-local\.mjs|kynver (harness )?verify)\b/i,Rt=/\b(npm run build\b|next build\b)\b/i,xt=/\b(vercel (build|deploy|--prod))\b/i,kt=/\b(openai|anthropic|perplexity|voyage)\b.*\b(api|cli)\b|\b(paid|billable)[-_ ]?compute\b/i;function se(e){let r=e.trim();return r?kt.test(r)?{heavy:!0,commandClass:"paid_compute",reason:"paid external compute requires heavy-verification token and operator approval"}:xt.test(r)?{heavy:!0,commandClass:"vercel_verify",reason:"Vercel build/deploy verification requires heavy-verification token"}:Rt.test(r)?{heavy:!0,commandClass:"full_build",reason:"full app build requires heavy-verification token"}:bt.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 M="heavy_verification_token_required";import{spawnSync as Lt}from"node:child_process";a();import{closeSync as At,existsSync as k,mkdirSync as wt,openSync as Pt,readdirSync as ir,readFileSync as It,statSync as Nt,unlinkSync as sr,writeFileSync as Tt}from"node:fs";import ce from"node:path";import{mkdirSync as St}from"node:fs";import{tmpdir as Et}from"node:os";import U from"node:path";import{homedir as _t}from"node:os";import tr from"node:path";function nr(){let e=process.env.KYNVER_STATE_ROOT;return e?tr.resolve(e):tr.join(_t(),".kynver","state")}function Ct(){return!!(process.env.VERCEL||process.env.VERCEL_ENV||process.env.AWS_LAMBDA_FUNCTION_NAME||process.env.AWS_EXECUTION_ENV)}function Ot(){let e=process.env.KYNVER_HEAVY_VERIFICATION_STATE_ROOT;return e?U.resolve(e):Ct()?U.join(Et(),"kynver","state","heavy-verification"):U.join(nr(),"heavy-verification")}function ae(){return U.join(Ot(),"slots")}function x(){let e=ae();return St(e,{recursive:!0}),e}var _=120*6e4,or=1;function Dt(e,r){let t=Number(e);return!Number.isFinite(t)||t<=0?r:Math.floor(t)}function F(){let e=process.env.KYNVER_HEAVY_VERIFICATION_SKIP?.trim().toLowerCase();return e==="1"||e==="true"||e==="yes"}function L(){let e=process.env.KYNVER_HEAVY_VERIFICATION_MAX_CONCURRENT;return e?Dt(e,or):or}function Kt(e){return`slot-${e}`}function Wt(e,r=ae()){return ce.join(r,`${e}.json`)}function ue(e){if(!k(e))return null;try{let r=JSON.parse(It(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 ar(e,r=_){if(!e||!Y(e.pid))return!0;let t=Date.parse(e.acquiredAt);return Number.isNaN(t)?!0:Date.now()-t>r}function lr(e,r){let t=ue(e);if(t)return ar(t,r);if(!k(e))return!0;try{return Date.now()-Nt(e).mtimeMs>r}catch{return!0}}function Bt(e,r){if(lr(e,r))try{sr(e)}catch{}}function Mt(e){return wt(e,{recursive:!0}),e}function de(e={}){let r=Mt(e.slotsDir??x()),t=e.staleMs??_,n=0;for(let i of ir(r)){if(!i.endsWith(".json"))continue;let s=ce.join(r,i),l=k(s);Bt(s,t),l&&!k(s)&&(n+=1)}return n}function Ut(e={}){let r=e.slotsDir??x(),t=e.staleMs??_;de({slotsDir:r,staleMs:t});let n=[];for(let i of ir(r)){if(!i.endsWith(".json"))continue;let s=ue(ce.join(r,i));s&&!ar(s,t)&&n.push(s)}return n}function le(e={}){return Ut(e).length}function S(e,r={}){if(F())return{admitted:!0,slotId:null,activeSlots:0,maxSlots:L(),reason:null};let t=r.slotsDir??x(),n=r.staleMs??_,i=r.maxSlots??L();de({slotsDir:t,staleMs:n});for(let l=0;l<i;l+=1){let c=Kt(l),h=Wt(c,t),ur=ue(h);if(lr(h,n))try{sr(h)}catch{}else if(ur||k(h))continue;let dr={slotId:c,pid:process.pid,acquiredAt:new Date().toISOString(),command:e};try{let y=Pt(h,"wx");Tt(y,JSON.stringify(dr,null,2),"utf8"),At(y);let pr=le({slotsDir:t,staleMs:n});return{admitted:!0,slotId:c,activeSlots:pr,maxSlots:i,reason:null}}catch(y){if(y.code==="EEXIST")continue;throw y}}let s=le({slotsDir:t,staleMs:n});return{admitted:!1,slotId:null,activeSlots:s,maxSlots:i,reason:`heavy verification at capacity (${s}/${i} slots)`}}function H(e,r={}){if(F())return{admitted:!0,slotId:null,activeSlots:0,maxSlots:L(),reason:null};let t=r.slotsDir??x(),n=r.staleMs??_,i=r.maxSlots??L();de({slotsDir:t,staleMs:n});let s=le({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 Ft(e){e<=0||Lt(process.execPath,["-e",`const d=Date.now()+${Math.floor(e)};while(Date.now()<d);`],{stdio:"ignore"})}function cr(e,r,t=2e3,n={}){let i=Date.now()+Math.max(0,r),s=S(e,n);for(;!s.admitted&&Date.now()<i;)Ft(Math.min(t,i-Date.now())),s=S(e,n);return s}function Ht(e,r={}){let t=se(e);if(!t.heavy)return{allowed:!0,outcome:"allowed",commandClass:t.commandClass,reason:"command does not require heavy-verification token",verificationGate:{...H(e),slotId:null}};if(F())return{allowed:!0,outcome:"heavy_verification_skipped",commandClass:t.commandClass,reason:"KYNVER_HEAVY_VERIFICATION_SKIP bypasses gate",verificationGate:{...H(e),slotId:null}};let n=r.waitMs??0,i=n>0?cr(e,n,r.pollMs):S(e);return i.admitted?{allowed:!0,outcome:"allowed",commandClass:t.commandClass,reason:t.reason??"heavy-verification token acquired",verificationGate:i}:{allowed:!1,outcome:M,commandClass:t.commandClass,reason:t.reason??i.reason??M,verificationGate:i}}export{m as DEFAULT_WORKER_PROVIDER,M as HEAVY_VERIFICATION_TOKEN_REQUIRED,j as KYNVER_NO_PROD_DB_CREDENTIALS_ENV,_r as auditReviewWorkerCredentialScope,Rr as auditWorkerEnv,f as buildWorkerSpawnEnv,se as classifyHeavyShellCommand,Ze as enforceCursorWorkerProvider,Ht as gateWorkerShellCommand,u as isClaudeFamilyProvider,v as isForbiddenWorkerEnvKey,wr as isHarnessExpertReviewWorker,ge as isNoProdCredentialReviewEnvironment,pe as listForbiddenWorkerEnvKeys,me as listOperatorAllowedWorkerEnvKeys,er as normalizeWorkerProviderName,vt as preferCursorExecutor,yt as resolveConfiguredWorkerProvider,E as scrubWorkerEnv,ie as taskAllowsClaudeWorker,rr as taskExpressesWorkerProviderPreference};
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 $(e){let r=e[br];return r?new Set(r.split(/[\s,]+/).map(t=>t.trim()).filter(Boolean)):new Set}function v(e,r={}){return fr.has(e)?!0:yr.has(e)||r.operatorAllow?.has(e)||vr.some(t=>e.endsWith(t))?!1:gr.some(t=>e.endsWith(t))}function pe(e){let r=$(e);return Object.keys(e).filter(t=>v(t,{operatorAllow:r})).sort()}function me(e){let r=$(e);return r.size===0?[]:Object.keys(e).filter(t=>r.has(t)&&!v(t,{operatorAllow:r})&&v(t)).sort()}function E(e){let r=$(e),t={...e};for(let n of Object.keys(t))v(n,{operatorAllow:r})&&delete t[n];return t}function Rr(e){let r=pe(e),t=me(e);return{forbiddenPresent:r,safe:r.length===0,...t.length?{operatorAllowedActive:t}:{}}}var mr,fr,gr,hr,yr,vr,br,C=o(()=>{"use strict";mr=["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"],fr=new Set(mr),gr=["_SECRET","_API_KEY","_KEK","_KEY","_TOKEN","_PASSWORD","_PASSPHRASE","_SALT"],hr=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY"],yr=new Set(hr),vr=["_PUBLIC_KEY"],br="KYNVER_WORKER_ENV_ALLOW"});var g=o(()=>{"use strict"});function Y(e){if(!e)return!1;try{return process.kill(e,0),!0}catch{return!1}}var a=o(()=>{"use strict"});var z=o(()=>{"use strict";g();a();C()});var q=o(()=>{"use strict";z();g()});var d=o(()=>{"use strict"});var P=o(()=>{"use strict"});var be=o(()=>{"use strict"});var dn,pn,J=o(()=>{"use strict";dn=25*1024*1024*1024,pn=12*1024*1024*1024});var yn,vn,Re=o(()=>{"use strict";J();yn=5*1024*1024*1024,vn=10*1024*1024*1024});var Sn,En,X=o(()=>{"use strict";Re();J();Sn=30*1024*1024*1024,En=15*1024*1024*1024});var ke=o(()=>{"use strict";a()});import Wr from"node:path";var Dn,Q=o(()=>{"use strict";g();ke();Dn=Wr.join(".openclaw","harness")});var N=o(()=>{"use strict";p();d();P();T();Q()});var Ee=o(()=>{"use strict";p();Q();N();a()});var ee=o(()=>{"use strict";Ee();a()});var Ce=o(()=>{"use strict";ee();a()});var Oe=o(()=>{"use strict"});var Ae=o(()=>{"use strict";Oe();a()});var we=o(()=>{"use strict"});var Pe=o(()=>{"use strict";we()});var Ie=o(()=>{"use strict";Pe();a()});var Ne=o(()=>{"use strict"});var Te=o(()=>{"use strict"});var De=o(()=>{"use strict"});var re=o(()=>{"use strict"});var Ke=o(()=>{"use strict"});var We=o(()=>{"use strict";re();Ke()});var Be=o(()=>{"use strict";Ae();Ie();Ne();Te();z();De();We();re();a()});var Me=o(()=>{"use strict";Be()});var jr,Vr,Ue=o(()=>{"use strict";be();p();d();P();T();X();ee();Ce();Me();a();jr=500*1024*1024,Vr=4*1024*1024*1024});var T=o(()=>{"use strict";Ue()});import{homedir as Yr}from"node:os";import Gr from"node:path";var Le,te=o(()=>{"use strict";Le=Gr.join(Yr(),".kynver",".env")});var Fe=o(()=>{"use strict"});var He=o(()=>{"use strict";Fe()});var $e=o(()=>{"use strict"});var ne=o(()=>{"use strict";He();$e()});var je=o(()=>{"use strict"});var Ve=o(()=>{"use strict";je()});var K=o(()=>{"use strict";te();g();p();ne();Ve()});var Ye=o(()=>{"use strict";d();d()});var Ge=o(()=>{"use strict";te();ne();K()});var ze=o(()=>{"use strict";q();d();Ye();p();K();Ge();a();N()});import{homedir as rt,totalmem as ws}from"node:os";import oe from"node:path";var qe,Fs,Hs,$s,js,p=o(()=>{"use strict";q();g();a();d();P();T();X();K();ze();N();qe=oe.join(rt(),".kynver"),Fs=oe.join(qe,"config.json"),Hs=oe.join(qe,"credentials"),$s=500*1024*1024,js=4*1024*1024*1024});C();C();var j="KYNVER_NO_PROD_DB_CREDENTIALS",xr=["KYNVER_ENV_FILE"],kr=new Set(["1","true","yes","on"]);function ge(e){let r=e[j]?.trim().toLowerCase();return r!==void 0&&kr.has(r)}function f(e,r={}){let t=E(e);if(!r.reviewWorker)return t;let n={...t,[j]:"1"};for(let i of xr)delete n[i];return n}var fe=["DATABASE_URL","PRODUCTION_DATABASE_URL","KYNVER_PRODUCTION_DATABASE_URL"];function _r(e,r={}){let t=f(e,r),n=Object.keys(t).filter(c=>c.endsWith("_SECRET")||c.endsWith("_API_KEY")||fe.includes(c)),i=fe.every(c=>t[c]===void 0),s=r.reviewWorker?t.KYNVER_ENV_FILE===void 0:!0,l=ge(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 Sr="expert-lane-pr-review:",Er="plan-review-task",Cr="scheduledjob:",O=new Set(["lorentz","dalton","rhea","sentinel"]);function Or(e){if(!e)return null;let r=e.trim().toLowerCase();return r.length?r:null}function V(e){return/\b(deep[- ]?review|plan review|review .*plan|security review|red[- ]team|lb\d+|risk register|signoff|verification|evidence|prove|gate)\b/.test(e)}function Ar(e,r){return e.startsWith("factory:")?e.includes("lb")||V(r):!1}function wr(e){let r=(e.executorRef??"").toLowerCase(),t=(e.title??"").toLowerCase(),n=(e.description??"").toLowerCase(),i=`${t}
2
+ ${n}`,s=Or(e.personaSlug);return!!(r.startsWith(Sr)||r===Er||r.startsWith("daemon-review:")||s&&O.has(s)&&(r.includes("evidence")||r.includes("validate")||r.includes("review")||Ar(r,i)||V(i))||r.startsWith(Cr)&&e.parentTaskId&&s&&O.has(s)||e.planId&&!e.parentTaskId&&s&&O.has(s)&&V(i)||t.includes("expert pr review")||e.parentTaskId&&(t.startsWith("review:")||t.includes("review required")||t.includes("runtime review"))&&s&&O.has(s))}var Pr=/^claude[-_]/i,Ir=/^(?:opus|sonnet|haiku)\b/i;function he(e){let r=e.trim();return Pr.test(r)||Ir.test(r)}function ye(e){let r=e.trim().toLowerCase();return r.startsWith("gpt-")||r.startsWith("gpt5")||r.includes("codex")}function ve(e){let r=e.trim().toLowerCase();return r.includes("composer")||r.includes("cursor")}function Nr(e){return ye(e)?"codex":he(e)?"claude":(ve(e),"cursor")}function Tr(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==="cursor"||n==="composer"?{provider:"cursor",model:i,rule:"executor_ref:provider_cursor"}:null:null}function Dr(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?he(n)||ye(n)||ve(n)?{lane:t,model:n,provider:Nr(n),rule:"executor_ref:harness_lane_model"}:{lane:t,rule:"executor_ref:harness_lane"}:{lane:t,rule:"executor_ref:harness_lane"}}function A(e){let r=typeof e=="string"?e.trim():"";return r?Tr(r)??Dr(r):null}p();a();var it="kynver",st=["agent_os_context_envelope","agent_os_search_memory","agent_os_search_skills","agent_os_get_skill","agent_os_progress_note"],at=st.map(e=>`mcp__${it}__${e}`);a();a();var La=process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.4";function ct(){return process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.4"}var ut=ct();a();var tl=600*1e3;var Qe="composer-2.5";var m="cursor",dt={anthropic:"claude",opus:"claude",openai:"openai-compatible",openai_compatible:"openai-compatible","openai-compat":"openai-compatible"};function er(e){let r=e.trim().toLowerCase();return dt[r]??r}var pt=new Set(["claude","opus","anthropic"]),mt=[/\[worker-provider:\s*claude\]/i,/\[use-claude-worker\]/i,/\[operator-worker-provider:\s*claude\]/i];function R(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function u(e){if(!e?.trim())return!1;let r=e.trim().toLowerCase();return pt.has(r)?!0:r.includes("claude")||r.includes("opus")}function ie(e){if(!e)return!1;let r=e.workerProviderOverride;if(typeof r=="string"&&u(r))return!0;let t=R(e,"executorRef").toLowerCase();if(t==="provider:claude"||t.startsWith("provider:claude:")||t.includes("claude-worker-override")||t.includes("operator-claude"))return!0;let n=A(R(e,"executorRef"));if(n?.provider&&u(n.provider)||n?.model&&u(ft(n.model)))return!0;let i=R(e,"description");if(mt.some(l=>l.test(i)))return!0;let s=R(e,"title");return!!/\[use-claude-worker\]/i.test(s)}function ft(e){let r=e.trim().toLowerCase();return/^claude[-_]/.test(r)||/^(?:opus|sonnet|haiku)\b/.test(r)?"claude":r}function gt(e,r){return{provider:m,model:Qe,rule:`policy:cursor_default${r}`,requestedModel:e}}var ht=["explicit:","executor_ref:","factory:","task:"];function yt(e){return ht.some(r=>e.startsWith(r))}function rr(e){if(!e)return!1;let r=e.workerProviderOverride;return typeof r=="string"&&r.trim()||A(R(e,"executorRef"))?.provider?!0:ie(e)}function Ze(e){let{routing:r,task:t}=e,n=e.explicitProvider?.trim().toLowerCase();if(e.explicitProviderIsOperatorOverride&&u(n))return{...r,provider:"claude",rule:r.rule.startsWith("explicit:")?r.rule:"explicit:operator_provider"};if(n||yt(r.rule)||rr(t)||!u(r.provider))return r;let i=r.rule&&r.rule!=="default:global"?`:${r.rule.replace(/:/g,"_")}`:"";return gt(r.model,i)}function vt(e,r=m){let t=e?.trim();return t?er(t):r}function bt(e){let r=[...new Set(e.map(t=>t.trim().toLowerCase()).filter(Boolean))];return r.includes(m)?[...new Set(r.map(t=>u(t)?m:t))]:r.every(t=>u(t))?[m]:r}var Rt=/\b(npm run typecheck|tsc\b[^|&;]*--noEmit|node scripts\/verify-pr-local\.mjs|kynver (harness )?verify)\b/i,xt=/\b(npm run build\b|next build\b)\b/i,kt=/\b(vercel (build|deploy|--prod))\b/i,_t=/\b(openai|anthropic|perplexity|voyage)\b.*\b(api|cli)\b|\b(paid|billable)[-_ ]?compute\b/i;function se(e){let r=e.trim();return r?_t.test(r)?{heavy:!0,commandClass:"paid_compute",reason:"paid external compute requires heavy-verification token and operator approval"}:kt.test(r)?{heavy:!0,commandClass:"vercel_verify",reason:"Vercel build/deploy verification requires heavy-verification token"}:xt.test(r)?{heavy:!0,commandClass:"full_build",reason:"full app build requires heavy-verification token"}:Rt.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 M="heavy_verification_token_required";import{spawnSync as Ft}from"node:child_process";a();import{closeSync as wt,existsSync as k,mkdirSync as Pt,openSync as It,readdirSync as ir,readFileSync as Nt,statSync as Tt,unlinkSync as sr,writeFileSync as Dt}from"node:fs";import ce from"node:path";import{mkdirSync as Et}from"node:fs";import{tmpdir as Ct}from"node:os";import U from"node:path";import{homedir as St}from"node:os";import tr from"node:path";function nr(){let e=process.env.KYNVER_STATE_ROOT;return e?tr.resolve(e):tr.join(St(),".kynver","state")}function Ot(){return!!(process.env.VERCEL||process.env.VERCEL_ENV||process.env.AWS_LAMBDA_FUNCTION_NAME||process.env.AWS_EXECUTION_ENV)}function At(){let e=process.env.KYNVER_HEAVY_VERIFICATION_STATE_ROOT;return e?U.resolve(e):Ot()?U.join(Ct(),"kynver","state","heavy-verification"):U.join(nr(),"heavy-verification")}function ae(){return U.join(At(),"slots")}function x(){let e=ae();return Et(e,{recursive:!0}),e}var _=120*6e4,or=1;function Kt(e,r){let t=Number(e);return!Number.isFinite(t)||t<=0?r:Math.floor(t)}function F(){let e=process.env.KYNVER_HEAVY_VERIFICATION_SKIP?.trim().toLowerCase();return e==="1"||e==="true"||e==="yes"}function L(){let e=process.env.KYNVER_HEAVY_VERIFICATION_MAX_CONCURRENT;return e?Kt(e,or):or}function Wt(e){return`slot-${e}`}function Bt(e,r=ae()){return ce.join(r,`${e}.json`)}function ue(e){if(!k(e))return null;try{let r=JSON.parse(Nt(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 ar(e,r=_){if(!e||!Y(e.pid))return!0;let t=Date.parse(e.acquiredAt);return Number.isNaN(t)?!0:Date.now()-t>r}function lr(e,r){let t=ue(e);if(t)return ar(t,r);if(!k(e))return!0;try{return Date.now()-Tt(e).mtimeMs>r}catch{return!0}}function Mt(e,r){if(lr(e,r))try{sr(e)}catch{}}function Ut(e){return Pt(e,{recursive:!0}),e}function de(e={}){let r=Ut(e.slotsDir??x()),t=e.staleMs??_,n=0;for(let i of ir(r)){if(!i.endsWith(".json"))continue;let s=ce.join(r,i),l=k(s);Mt(s,t),l&&!k(s)&&(n+=1)}return n}function Lt(e={}){let r=e.slotsDir??x(),t=e.staleMs??_;de({slotsDir:r,staleMs:t});let n=[];for(let i of ir(r)){if(!i.endsWith(".json"))continue;let s=ue(ce.join(r,i));s&&!ar(s,t)&&n.push(s)}return n}function le(e={}){return Lt(e).length}function S(e,r={}){if(F())return{admitted:!0,slotId:null,activeSlots:0,maxSlots:L(),reason:null};let t=r.slotsDir??x(),n=r.staleMs??_,i=r.maxSlots??L();de({slotsDir:t,staleMs:n});for(let l=0;l<i;l+=1){let c=Wt(l),h=Bt(c,t),ur=ue(h);if(lr(h,n))try{sr(h)}catch{}else if(ur||k(h))continue;let dr={slotId:c,pid:process.pid,acquiredAt:new Date().toISOString(),command:e};try{let y=It(h,"wx");Dt(y,JSON.stringify(dr,null,2),"utf8"),wt(y);let pr=le({slotsDir:t,staleMs:n});return{admitted:!0,slotId:c,activeSlots:pr,maxSlots:i,reason:null}}catch(y){if(y.code==="EEXIST")continue;throw y}}let s=le({slotsDir:t,staleMs:n});return{admitted:!1,slotId:null,activeSlots:s,maxSlots:i,reason:`heavy verification at capacity (${s}/${i} slots)`}}function H(e,r={}){if(F())return{admitted:!0,slotId:null,activeSlots:0,maxSlots:L(),reason:null};let t=r.slotsDir??x(),n=r.staleMs??_,i=r.maxSlots??L();de({slotsDir:t,staleMs:n});let s=le({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 Ht(e){e<=0||Ft(process.execPath,["-e",`const d=Date.now()+${Math.floor(e)};while(Date.now()<d);`],{stdio:"ignore"})}function cr(e,r,t=2e3,n={}){let i=Date.now()+Math.max(0,r),s=S(e,n);for(;!s.admitted&&Date.now()<i;)Ht(Math.min(t,i-Date.now())),s=S(e,n);return s}function $t(e,r={}){let t=se(e);if(!t.heavy)return{allowed:!0,outcome:"allowed",commandClass:t.commandClass,reason:"command does not require heavy-verification token",verificationGate:{...H(e),slotId:null}};if(F())return{allowed:!0,outcome:"heavy_verification_skipped",commandClass:t.commandClass,reason:"KYNVER_HEAVY_VERIFICATION_SKIP bypasses gate",verificationGate:{...H(e),slotId:null}};let n=r.waitMs??0,i=n>0?cr(e,n,r.pollMs):S(e);return i.admitted?{allowed:!0,outcome:"allowed",commandClass:t.commandClass,reason:t.reason??"heavy-verification token acquired",verificationGate:i}:{allowed:!1,outcome:M,commandClass:t.commandClass,reason:t.reason??i.reason??M,verificationGate:i}}export{m as DEFAULT_WORKER_PROVIDER,M as HEAVY_VERIFICATION_TOKEN_REQUIRED,j as KYNVER_NO_PROD_DB_CREDENTIALS_ENV,_r as auditReviewWorkerCredentialScope,Rr as auditWorkerEnv,f as buildWorkerSpawnEnv,se as classifyHeavyShellCommand,Ze as enforceCursorWorkerProvider,$t as gateWorkerShellCommand,u as isClaudeFamilyProvider,v as isForbiddenWorkerEnvKey,wr as isHarnessExpertReviewWorker,ge as isNoProdCredentialReviewEnvironment,pe as listForbiddenWorkerEnvKeys,me as listOperatorAllowedWorkerEnvKeys,er as normalizeWorkerProviderName,bt as preferCursorExecutor,vt as resolveConfiguredWorkerProvider,E as scrubWorkerEnv,ie as taskAllowsClaudeWorker,rr as taskExpressesWorkerProviderPreference};