@kynver-app/runtime 0.2.148 → 0.2.151
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/dist/cli.js +224 -214
- package/dist/daemon-tick-thread.js +49 -47
- package/dist/desktop-entry.js +168 -164
- package/dist/index.js +245 -235
- package/dist/local-run-store/index.js +11 -10
- package/dist/server/dispatch-routing.js +4 -4
- package/dist/server/model-routing.js +4 -4
- package/dist/server/orchestration.js +2 -2
- package/dist/server/worker-policy.js +3 -3
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
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
|
|
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 se(e){let r=e[zr];return r?new Set(r.split(/[\s,]+/).map(t=>t.trim()).filter(Boolean)):new Set}function k(e,r={}){return jr.has(e)?!0:qr.has(e)||r.operatorAllow?.has(e)||Jr.some(t=>e.endsWith(t))?!1:Yr.some(t=>e.endsWith(t))}function Pe(e){let r=se(e);return Object.keys(e).filter(t=>k(t,{operatorAllow:r})).sort()}function Ie(e){let r=se(e);return r.size===0?[]:Object.keys(e).filter(t=>r.has(t)&&!k(t,{operatorAllow:r})&&k(t)).sort()}function T(e){let r=se(e),t={...e};for(let n of Object.keys(t))k(n,{operatorAllow:r})&&delete t[n];return t}function Xr(e){let r=Pe(e),t=Ie(e);return{forbiddenPresent:r,safe:r.length===0,...t.length?{operatorAllowedActive:t}:{}}}var Hr,jr,Yr,Gr,qr,Jr,zr,D=o(()=>{"use strict";Hr=["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"],jr=new Set(Hr),Yr=["_SECRET","_API_KEY","_KEK","_KEY","_TOKEN","_PASSWORD","_PASSPHRASE","_SALT"],Gr=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],qr=new Set(Gr),Jr=["_PUBLIC_KEY"],zr="KYNVER_WORKER_ENV_ALLOW"});var f=o(()=>{"use strict"});var Ue=o(()=>{"use strict"});function M(e){if(!e)return!1;try{return process.kill(e,0),!0}catch{return!1}}var a=o(()=>{"use strict";Ue()});var B=o(()=>{"use strict";f();a();D()});var ce=o(()=>{"use strict";B()});var ue=o(()=>{"use strict";B();f();ce()});var g=o(()=>{"use strict"});var Be=o(()=>{"use strict";g()});var de=o(()=>{"use strict";a()});var h=o(()=>{"use strict"});var L=o(()=>{"use strict"});var Le=o(()=>{"use strict"});var fo,go,pe=o(()=>{"use strict";fo=25*1024*1024*1024,go=12*1024*1024*1024});var xo,Ro,Fe=o(()=>{"use strict";pe();xo=5*1024*1024*1024,Ro=10*1024*1024*1024});var Oo,Ao,me=o(()=>{"use strict";Fe();pe();Oo=30*1024*1024*1024,Ao=15*1024*1024*1024});var $e=o(()=>{"use strict";a()});import ft from"node:path";var Mo,ge=o(()=>{"use strict";f();$e();Mo=ft.join(".openclaw","harness")});var $=o(()=>{"use strict";y();h();L();V();ge()});var je=o(()=>{"use strict";y();ge();$();a()});var Y=o(()=>{"use strict";je();a()});var Ge=o(()=>{"use strict";Y();a()});var qe=o(()=>{"use strict"});var Je=o(()=>{"use strict";qe();a()});var ze=o(()=>{"use strict"});var Xe=o(()=>{"use strict";ze()});var G=o(()=>{"use strict"});var q,he,_i,E=o(()=>{"use strict";q="claude-sonnet-5-5",he="claude-opus-5-5",_i={[q]:"claude-sonnet-4-6",[he]:"claude-opus-4-8"}});var Ze=o(()=>{"use strict"});var Qe=o(()=>{"use strict"});var er=o(()=>{"use strict";Xe();a();G();E();Ze();Qe()});var Ui,u=o(()=>{"use strict";Ui=String.raw`"use strict";
|
|
2
2
|
const cp = require("child_process"), fs = require("fs");
|
|
3
3
|
const argv = process.argv.slice(1);
|
|
4
4
|
const exitFile = argv[0], cmd = argv[1], args = argv.slice(2);
|
|
@@ -64,5 +64,5 @@ child.on("error", (e) => {
|
|
|
64
64
|
if (!child.pid) finish(127, null, String(e && e.message));
|
|
65
65
|
});
|
|
66
66
|
child.on("exit", (code, signal) => finish(code, signal));
|
|
67
|
-
`});var
|
|
68
|
-
${n}`,s=nt(e.personaSlug);return r.startsWith("harness-lane:blocked-lane-unblock:")||r==="lane:over_attempt_recovery"||r.startsWith("next-action-fix:")||r.startsWith("next-action-landing:")||r.startsWith("code-work-lane-chain:release:")?!1:!!(r.startsWith(et)||r===rt||r.startsWith("daemon-review:")||s&&W.has(s)&&(r.includes("evidence")||r.includes("validate")||r.includes("review")||ot(r,i)||ae(i))||r.startsWith(tt)&&e.parentTaskId&&s&&W.has(s)||e.planId&&!e.parentTaskId&&s&&W.has(s)&&ae(i)||t.includes("expert pr review")||e.parentTaskId&&(t.startsWith("review:")||t.includes("review required")||t.includes("runtime review"))&&s&&W.has(s))}var st=/^claude[-_]/i,at=/^(?:opus|sonnet|haiku)\b/i;function Te(e){let r=e.trim();return st.test(r)||at.test(r)}function De(e){let r=e.trim().toLowerCase();return r.startsWith("gpt-")||r.startsWith("gpt5")||r.includes("codex")}function We(e){let r=e.trim().toLowerCase();return r.includes("composer")||r.includes("cursor")}function Ke(e){return e.trim().toLowerCase().startsWith("gemini-")}function lt(e){return De(e)?"codex":Te(e)?"claude":Ke(e)?"gemini":(We(e),"cursor")}function ct(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==="venice"||n==="venice-ai"||n==="venice_ai"||n==="veniceai"?{provider:"venice",model:i,rule:"executor_ref:provider_venice"}:n==="chatgpt"||n==="gpt"?{provider:"codex",model:i,rule:"executor_ref:provider_codex"}:n==="openai-api"||n==="openai_api"?{provider:"openai-compatible",model:i,rule:"executor_ref:provider_openai_compatible"}:n==="cursor"||n==="composer"?{provider:"cursor",model:i,rule:"executor_ref:provider_cursor"}:n==="gemini-api"||n==="gemini_api"||n==="google-api"?{provider:"gemini-api",model:i,rule:"executor_ref:provider_gemini_api"}:n==="gemini"||n==="google"||n==="gemini_cli"?{provider:"gemini",model:i,rule:i?"executor_ref:provider_gemini_model":"executor_ref:provider_gemini"}:null:null}function ut(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?Te(n)||De(n)||We(n)||Ke(n)?{lane:t,model:n,provider:lt(n),rule:"executor_ref:harness_lane_model"}:{lane:t,rule:"executor_ref:harness_lane"}:{lane:t,rule:"executor_ref:harness_lane"}}function K(e){let r=typeof e=="string"?e.trim():"";return r?ct(r)??ut(r):null}y();g();u();a();u();a();g();E();var Ar="kynver",wr=["agent_os_context_envelope","agent_os_search_memory","agent_os_search_skills","agent_os_get_skill","agent_os_progress_note"],Gt=wr.map(e=>`mcp__${Ar}__${e}`);E();u();a();g();u();a();g();var Q="gpt-5.6-sol";var Lu=process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||Q;function Jt(){return process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||Q}var zt=Jt();u();a();var vd=600*1e3;u();a();g();var $d=600*1e3;var Pr="composer-2.5";z();z();var m="cursor",en=new Set(["claude","opus","anthropic"]),rn=[/\[worker-provider:\s*claude\]/i,/\[use-claude-worker\]/i,/\[operator-worker-provider:\s*claude\]/i];function A(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function d(e){if(!e?.trim())return!1;let r=e.trim().toLowerCase();return en.has(r)?!0:r.includes("claude")||r.includes("opus")}function Re(e){if(!e)return!1;let r=e.workerProviderOverride;if(typeof r=="string"&&d(r))return!0;let t=A(e,"executorRef").toLowerCase();if(t==="provider:claude"||t.startsWith("provider:claude:")||t.includes("claude-worker-override")||t.includes("operator-claude"))return!0;let n=K(A(e,"executorRef"));if(n?.provider&&d(n.provider)||n?.model&&d(tn(n.model)))return!0;let i=A(e,"description");if(rn.some(l=>l.test(i)))return!0;let s=A(e,"title");return!!/\[use-claude-worker\]/i.test(s)}function tn(e){let r=e.trim().toLowerCase();return/^claude[-_]/.test(r)||/^(?:opus|sonnet|haiku)\b/.test(r)?"claude":r}function nn(e,r){return{provider:m,model:Pr,rule:`policy:cursor_default${r}`,requestedModel:e}}var on=["explicit:","executor_ref:","factory:","task:"];function sn(e){return on.some(r=>e.startsWith(r))}function ke(e){if(!e)return!1;let r=e.workerProviderOverride;return typeof r=="string"&&r.trim()||K(A(e,"executorRef"))?.provider?!0:Re(e)}function Ir(e){let{routing:r,task:t}=e,n=e.explicitProvider?.trim().toLowerCase();if(e.explicitProviderIsOperatorOverride&&d(n))return{...r,provider:"claude",rule:r.rule.startsWith("explicit:")?r.rule:"explicit:operator_provider"};if(n||sn(r.rule)||ke(t)||!d(r.provider))return r;let i=r.rule&&r.rule!=="default:global"?`:${r.rule.replace(/:/g,"_")}`:"";return nn(r.model,i)}function an(e,r=m){let t=e?.trim();return t?S(t):r}function ln(e){let r=[...new Set(e.map(t=>t.trim().toLowerCase()).filter(Boolean))];return r.includes(m)?[...new Set(r.map(t=>d(t)?m:t))]:r.every(t=>d(t))?[m]:r}var cn=/\b(npm run typecheck|tsc\b[^|&;]*--noEmit|node scripts\/verify-pr-local\.mjs|kynver (harness )?verify)\b/i,un=/\b(npm run build\b|next build\b)\b/i,dn=/\b(vercel (build|deploy|--prod))\b/i,pn=/\b(openai|anthropic|perplexity|voyage)\b.*\b(api|cli)\b|\b(paid|billable)[-_ ]?compute\b/i;function be(e){let r=e.trim();return r?pn.test(r)?{heavy:!0,commandClass:"paid_compute",reason:"paid external compute requires heavy-verification token and operator approval"}:dn.test(r)?{heavy:!0,commandClass:"vercel_verify",reason:"Vercel build/deploy verification requires heavy-verification token"}:un.test(r)?{heavy:!0,commandClass:"full_build",reason:"full app build requires heavy-verification token"}:cn.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 ee="heavy_verification_token_required";import{spawnSync as Pn}from"node:child_process";a();import{closeSync as _n,existsSync as P,mkdirSync as vn,openSync as xn,readdirSync as Wr,readFileSync as Rn,statSync as kn,unlinkSync as Kr,writeFileSync as bn}from"node:fs";import Ce from"node:path";import{mkdirSync as fn}from"node:fs";import{tmpdir as gn}from"node:os";import re from"node:path";import{homedir as mn,tmpdir as gp}from"node:os";import Nr from"node:path";function Tr(){let e=process.env.KYNVER_STATE_ROOT;return e?Nr.resolve(e):Nr.join(mn(),".kynver","state")}function hn(){return!!(process.env.VERCEL||process.env.VERCEL_ENV||process.env.AWS_LAMBDA_FUNCTION_NAME||process.env.AWS_EXECUTION_ENV)}function yn(){let e=process.env.KYNVER_HEAVY_VERIFICATION_STATE_ROOT;return e?re.resolve(e):hn()?re.join(gn(),"kynver","state","heavy-verification"):re.join(Tr(),"heavy-verification")}function Ee(){return re.join(yn(),"slots")}function w(){let e=Ee();return fn(e,{recursive:!0}),e}var I=120*6e4,Dr=1;function En(e,r){let t=Number(e);return!Number.isFinite(t)||t<=0?r:Math.floor(t)}function ne(){let e=process.env.KYNVER_HEAVY_VERIFICATION_SKIP?.trim().toLowerCase();return e==="1"||e==="true"||e==="yes"}function te(){let e=process.env.KYNVER_HEAVY_VERIFICATION_MAX_CONCURRENT;return e?En(e,Dr):Dr}function Sn(e){return`slot-${e}`}function Cn(e,r=Ee()){return Ce.join(r,`${e}.json`)}function Oe(e){if(!P(e))return null;try{let r=JSON.parse(Rn(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 Mr(e,r=I){if(!e||!M(e.pid))return!0;let t=Date.parse(e.acquiredAt);return Number.isNaN(t)?!0:Date.now()-t>r}function Ur(e,r){let t=Oe(e);if(t)return Mr(t,r);if(!P(e))return!0;try{return Date.now()-kn(e).mtimeMs>r}catch{return!0}}function On(e,r){if(Ur(e,r))try{Kr(e)}catch{}}function An(e){return vn(e,{recursive:!0}),e}function Ae(e={}){let r=An(e.slotsDir??w()),t=e.staleMs??I,n=0;for(let i of Wr(r)){if(!i.endsWith(".json"))continue;let s=Ce.join(r,i),l=P(s);On(s,t),l&&!P(s)&&(n+=1)}return n}function wn(e={}){let r=e.slotsDir??w(),t=e.staleMs??I;Ae({slotsDir:r,staleMs:t});let n=[];for(let i of Wr(r)){if(!i.endsWith(".json"))continue;let s=Oe(Ce.join(r,i));s&&!Mr(s,t)&&n.push(s)}return n}function Se(e={}){return wn(e).length}function N(e,r={}){if(ne())return{admitted:!0,slotId:null,activeSlots:0,maxSlots:te(),reason:null};let t=r.slotsDir??w(),n=r.staleMs??I,i=r.maxSlots??te();Ae({slotsDir:t,staleMs:n});for(let l=0;l<i;l+=1){let c=Sn(l),x=Cn(c,t),Lr=Oe(x);if(Ur(x,n))try{Kr(x)}catch{}else if(Lr||P(x))continue;let Fr={slotId:c,pid:process.pid,acquiredAt:new Date().toISOString(),command:e};try{let R=xn(x,"wx");bn(R,JSON.stringify(Fr,null,2),"utf8"),_n(R);let $r=Se({slotsDir:t,staleMs:n});return{admitted:!0,slotId:c,activeSlots:$r,maxSlots:i,reason:null}}catch(R){if(R.code==="EEXIST")continue;throw R}}let s=Se({slotsDir:t,staleMs:n});return{admitted:!1,slotId:null,activeSlots:s,maxSlots:i,reason:`heavy verification at capacity (${s}/${i} slots)`}}function oe(e,r={}){if(ne())return{admitted:!0,slotId:null,activeSlots:0,maxSlots:te(),reason:null};let t=r.slotsDir??w(),n=r.staleMs??I,i=r.maxSlots??te();Ae({slotsDir:t,staleMs:n});let s=Se({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 In(e){e<=0||Pn(process.execPath,["-e",`const d=Date.now()+${Math.floor(e)};while(Date.now()<d);`],{stdio:"ignore",windowsHide:!0})}function Br(e,r,t=2e3,n={}){let i=Date.now()+Math.max(0,r),s=N(e,n);for(;!s.admitted&&Date.now()<i;)In(Math.min(t,i-Date.now())),s=N(e,n);return s}function Nn(e,r={}){let t=be(e);if(!t.heavy)return{allowed:!0,outcome:"allowed",commandClass:t.commandClass,reason:"command does not require heavy-verification token",verificationGate:{...oe(e),slotId:null}};if(ne())return{allowed:!0,outcome:"heavy_verification_skipped",commandClass:t.commandClass,reason:"KYNVER_HEAVY_VERIFICATION_SKIP bypasses gate",verificationGate:{...oe(e),slotId:null}};let n=r.waitMs??0,i=n>0?Br(e,n,r.pollMs):N(e);return i.admitted?{allowed:!0,outcome:"allowed",commandClass:t.commandClass,reason:t.reason??"heavy-verification token acquired",verificationGate:i}:{allowed:!1,outcome:ee,commandClass:t.commandClass,reason:t.reason??i.reason??ee,verificationGate:i}}export{m as DEFAULT_WORKER_PROVIDER,ee as HEAVY_VERIFICATION_TOKEN_REQUIRED,se as KYNVER_NO_PROD_DB_CREDENTIALS_ENV,Qr as auditReviewWorkerCredentialScope,zr as auditWorkerEnv,p as buildWorkerSpawnEnv,be as classifyHeavyShellCommand,Ir as enforceCursorWorkerProvider,Nn as gateWorkerShellCommand,d as isClaudeFamilyProvider,k as isForbiddenWorkerEnvKey,it as isHarnessExpertReviewWorker,Ne as isNoProdCredentialReviewEnvironment,we as listForbiddenWorkerEnvKeys,Pe as listOperatorAllowedWorkerEnvKeys,S as normalizeWorkerProviderName,ln as preferCursorExecutor,an as resolveConfiguredWorkerProvider,T as scrubWorkerEnv,Re as taskAllowsClaudeWorker,ke as taskExpressesWorkerProviderPreference};
|
|
67
|
+
`});var rr=o(()=>{"use strict";Y();a();u()});var tr=o(()=>{"use strict";G();E()});var nr=o(()=>{"use strict"});var es,rs,or=o(()=>{"use strict";B();es=10*6e4,rs=60*6e4});var ir=o(()=>{"use strict"});var ye=o(()=>{"use strict"});var sr=o(()=>{"use strict"});var ar=o(()=>{"use strict";ye();sr()});var lr=o(()=>{"use strict";Je();er();rr();u();G();tr();nr();or();ir();ar();ye();a()});var cr=o(()=>{"use strict";lr();a()});var Ot,At,ur=o(()=>{"use strict";Le();y();h();L();V();me();Y();Ge();cr();a();Ot=500*1024*1024,At=4*1024*1024*1024});var V=o(()=>{"use strict";ur()});import{homedir as wt}from"node:os";import Pt from"node:path";var dr,ve=o(()=>{"use strict";dr=Pt.join(wt(),".kynver",".env")});var pr=o(()=>{"use strict"});var mr=o(()=>{"use strict";pr()});var fr=o(()=>{"use strict"});var gr=o(()=>{"use strict";a()});var _e=o(()=>{"use strict";mr();fr();gr()});var hr=o(()=>{"use strict"});var yr=o(()=>{"use strict";hr()});var J=o(()=>{"use strict";ve();f();y();_e();yr()});var vr=o(()=>{"use strict";h();h()});var _r=o(()=>{"use strict";ve();_e();J()});var xe=o(()=>{"use strict"});var xr=o(()=>{"use strict";ue();h();vr();y();J();_r();de();xe();$()});function S(e){let r=e.trim().toLowerCase();return Lt[r]??r}var Rr,Bt,Lt,z=o(()=>{"use strict";Rr=["claude","cursor","codex","gemini","gemini-api","openai-compatible","venice"],Bt=Rr.join("|"),Lt={anthropic:"claude",opus:"claude",openai:"openai-compatible",openai_compatible:"openai-compatible","openai-compat":"openai-compatible",chatgpt:"codex",gpt:"codex","openai-api":"openai-compatible",openai_api:"openai-compatible","venice-ai":"venice",venice_ai:"venice",veniceai:"venice",google:"gemini",gemini_cli:"gemini",gemini_api:"gemini-api","google-api":"gemini-api",google_api:"gemini-api"}});var kr=o(()=>{"use strict";f()});var br=o(()=>{"use strict";kr()});var Er=o(()=>{"use strict"});var Sr=o(()=>{"use strict";Er()});import{homedir as $t,totalmem as jl}from"node:os";import Re from"node:path";var Cr,cc,uc,dc,pc,y=o(()=>{"use strict";ue();f();ce();Be();de();h();L();V();me();J();xr();z();$();br();xe();Sr();Cr=Re.join($t(),".kynver"),cc=Re.join(Cr,"config.json"),uc=Re.join(Cr,"credentials"),dc=500*1024*1024,pc=4*1024*1024*1024});D();D();var ae="KYNVER_NO_PROD_DB_CREDENTIALS",Zr=["KYNVER_ENV_FILE"],Qr=new Set(["1","true","yes","on"]);function Te(e){let r=e[ae]?.trim().toLowerCase();return r!==void 0&&Qr.has(r)}function p(e,r={}){let t=T(e);if(!r.reviewWorker)return t;let n={...t,[ae]:"1"};for(let i of Zr)delete n[i];return n}var Ne=["DATABASE_URL","PRODUCTION_DATABASE_URL","KYNVER_PRODUCTION_DATABASE_URL"];function et(e,r={}){let t=p(e,r),n=Object.keys(t).filter(c=>c.endsWith("_SECRET")||c.endsWith("_API_KEY")||Ne.includes(c)),i=Ne.every(c=>t[c]===void 0),s=r.reviewWorker?t.KYNVER_ENV_FILE===void 0:!0,l=Te(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 rt="expert-lane-pr-review:",tt="plan-review-task",nt="scheduledjob:",W=new Set(["lorentz","dalton","rhea","sentinel"]);function ot(e){if(!e)return null;let r=e.trim().toLowerCase();return r.length?r:null}function le(e){return/\b(deep[- ]?review|plan review|review .*plan|security review|red[- ]team|lb\d+|runtime verification)\b/.test(e)}function it(e,r){return e.startsWith("factory:")?e.includes("lb")||le(r):!1}function st(e){let r=(e.executorRef??"").toLowerCase(),t=(e.title??"").toLowerCase(),n=(e.description??"").toLowerCase(),i=`${t}
|
|
68
|
+
${n}`,s=ot(e.personaSlug);return r.startsWith("harness-lane:blocked-lane-unblock:")||r==="lane:over_attempt_recovery"||r.startsWith("next-action-fix:")||r.startsWith("next-action-landing:")||r.startsWith("code-work-lane-chain:release:")?!1:!!(r.startsWith(rt)||r===tt||r.startsWith("daemon-review:")||s&&W.has(s)&&(r.includes("evidence")||r.includes("validate")||r.includes("review")||it(r,i)||le(i))||r.startsWith(nt)&&e.parentTaskId&&s&&W.has(s)||e.planId&&!e.parentTaskId&&s&&W.has(s)&&le(i)||t.includes("expert pr review")||e.parentTaskId&&(t.startsWith("review:")||t.includes("review required")||t.includes("runtime review"))&&s&&W.has(s))}var at=/^claude[-_]/i,lt=/^(?:opus|sonnet|haiku)\b/i;function De(e){let r=e.trim();return at.test(r)||lt.test(r)}function We(e){let r=e.trim().toLowerCase();return r.startsWith("gpt-")||r.startsWith("gpt5")||r.includes("codex")}function Ke(e){let r=e.trim().toLowerCase();return r.includes("composer")||r.includes("cursor")}function Me(e){return e.trim().toLowerCase().startsWith("gemini-")}function ct(e){return We(e)?"codex":De(e)?"claude":Me(e)?"gemini":(Ke(e),"cursor")}function ut(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==="venice"||n==="venice-ai"||n==="venice_ai"||n==="veniceai"?{provider:"venice",model:i,rule:"executor_ref:provider_venice"}:n==="chatgpt"||n==="gpt"?{provider:"codex",model:i,rule:"executor_ref:provider_codex"}:n==="openai-api"||n==="openai_api"?{provider:"openai-compatible",model:i,rule:"executor_ref:provider_openai_compatible"}:n==="cursor"||n==="composer"?{provider:"cursor",model:i,rule:"executor_ref:provider_cursor"}:n==="gemini-api"||n==="gemini_api"||n==="google-api"?{provider:"gemini-api",model:i,rule:"executor_ref:provider_gemini_api"}:n==="gemini"||n==="google"||n==="gemini_cli"?{provider:"gemini",model:i,rule:i?"executor_ref:provider_gemini_model":"executor_ref:provider_gemini"}:null:null}function dt(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?De(n)||We(n)||Ke(n)||Me(n)?{lane:t,model:n,provider:ct(n),rule:"executor_ref:harness_lane_model"}:{lane:t,rule:"executor_ref:harness_lane"}:{lane:t,rule:"executor_ref:harness_lane"}}function K(e){let r=typeof e=="string"?e.trim():"";return r?ut(r)??dt(r):null}y();g();u();a();u();a();g();E();var wr="kynver",Pr=["agent_os_context_envelope","agent_os_search_memory","agent_os_search_skills","agent_os_get_skill","agent_os_progress_note"],qt=Pr.map(e=>`mcp__${wr}__${e}`);E();u();a();g();u();a();g();var ee="gpt-5.6-sol";var ju=process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||ee;function zt(){return process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||ee}var Xt=zt();u();a();var Sd=600*1e3;u();a();g();var Jd=600*1e3;var Ir="composer-2.5";z();z();var m="cursor",rn=new Set(["claude","opus","anthropic"]),tn=[/\[worker-provider:\s*claude\]/i,/\[use-claude-worker\]/i,/\[operator-worker-provider:\s*claude\]/i];function A(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function d(e){if(!e?.trim())return!1;let r=e.trim().toLowerCase();return rn.has(r)?!0:r.includes("claude")||r.includes("opus")}function ke(e){if(!e)return!1;let r=e.workerProviderOverride;if(typeof r=="string"&&d(r))return!0;let t=A(e,"executorRef").toLowerCase();if(t==="provider:claude"||t.startsWith("provider:claude:")||t.includes("claude-worker-override")||t.includes("operator-claude"))return!0;let n=K(A(e,"executorRef"));if(n?.provider&&d(n.provider)||n?.model&&d(nn(n.model)))return!0;let i=A(e,"description");if(tn.some(l=>l.test(i)))return!0;let s=A(e,"title");return!!/\[use-claude-worker\]/i.test(s)}function nn(e){let r=e.trim().toLowerCase();return/^claude[-_]/.test(r)||/^(?:opus|sonnet|haiku)\b/.test(r)?"claude":r}function on(e,r){return{provider:m,model:Ir,rule:`policy:cursor_default${r}`,requestedModel:e}}var sn=["explicit:","executor_ref:","factory:","task:"];function an(e){return sn.some(r=>e.startsWith(r))}function be(e){if(!e)return!1;let r=e.workerProviderOverride;return typeof r=="string"&&r.trim()||K(A(e,"executorRef"))?.provider?!0:ke(e)}function Nr(e){let{routing:r,task:t}=e,n=e.explicitProvider?.trim().toLowerCase();if(e.explicitProviderIsOperatorOverride&&d(n))return{...r,provider:"claude",rule:r.rule.startsWith("explicit:")?r.rule:"explicit:operator_provider"};if(n||an(r.rule)||be(t)||!d(r.provider))return r;let i=r.rule&&r.rule!=="default:global"?`:${r.rule.replace(/:/g,"_")}`:"";return on(r.model,i)}function ln(e,r=m){let t=e?.trim();return t?S(t):r}function cn(e){let r=[...new Set(e.map(t=>t.trim().toLowerCase()).filter(Boolean))];return r.includes(m)?[...new Set(r.map(t=>d(t)?m:t))]:r.every(t=>d(t))?[m]:r}var un=/\b(npm run typecheck|tsc\b[^|&;]*--noEmit|node scripts\/verify-pr-local\.mjs|kynver (harness )?verify)\b/i,dn=/\b(npm run build\b|next build\b)\b/i,pn=/\b(vercel (build|deploy|--prod))\b/i,mn=/\b(openai|anthropic|perplexity|voyage)\b.*\b(api|cli)\b|\b(paid|billable)[-_ ]?compute\b/i;function Ee(e){let r=e.trim();return r?mn.test(r)?{heavy:!0,commandClass:"paid_compute",reason:"paid external compute requires heavy-verification token and operator approval"}:pn.test(r)?{heavy:!0,commandClass:"vercel_verify",reason:"Vercel build/deploy verification requires heavy-verification token"}:dn.test(r)?{heavy:!0,commandClass:"full_build",reason:"full app build requires heavy-verification token"}:un.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 re="heavy_verification_token_required";import{spawnSync as In}from"node:child_process";a();import{closeSync as _n,existsSync as P,mkdirSync as xn,openSync as Rn,readdirSync as Kr,readFileSync as kn,statSync as bn,unlinkSync as Mr,writeFileSync as En}from"node:fs";import Oe from"node:path";import{mkdirSync as gn}from"node:fs";import{tmpdir as hn}from"node:os";import te from"node:path";import{homedir as fn,tmpdir as kp}from"node:os";import Tr from"node:path";function Dr(){let e=process.env.KYNVER_STATE_ROOT;return e?Tr.resolve(e):Tr.join(fn(),".kynver","state")}function yn(){return!!(process.env.VERCEL||process.env.VERCEL_ENV||process.env.AWS_LAMBDA_FUNCTION_NAME||process.env.AWS_EXECUTION_ENV)}function vn(){let e=process.env.KYNVER_HEAVY_VERIFICATION_STATE_ROOT;return e?te.resolve(e):yn()?te.join(hn(),"kynver","state","heavy-verification"):te.join(Dr(),"heavy-verification")}function Se(){return te.join(vn(),"slots")}function w(){let e=Se();return gn(e,{recursive:!0}),e}var I=120*6e4,Wr=1;function Sn(e,r){let t=Number(e);return!Number.isFinite(t)||t<=0?r:Math.floor(t)}function oe(){let e=process.env.KYNVER_HEAVY_VERIFICATION_SKIP?.trim().toLowerCase();return e==="1"||e==="true"||e==="yes"}function ne(){let e=process.env.KYNVER_HEAVY_VERIFICATION_MAX_CONCURRENT;return e?Sn(e,Wr):Wr}function Cn(e){return`slot-${e}`}function On(e,r=Se()){return Oe.join(r,`${e}.json`)}function Ae(e){if(!P(e))return null;try{let r=JSON.parse(kn(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 Ur(e,r=I){if(!e||!M(e.pid))return!0;let t=Date.parse(e.acquiredAt);return Number.isNaN(t)?!0:Date.now()-t>r}function Br(e,r){let t=Ae(e);if(t)return Ur(t,r);if(!P(e))return!0;try{return Date.now()-bn(e).mtimeMs>r}catch{return!0}}function An(e,r){if(Br(e,r))try{Mr(e)}catch{}}function wn(e){return xn(e,{recursive:!0}),e}function we(e={}){let r=wn(e.slotsDir??w()),t=e.staleMs??I,n=0;for(let i of Kr(r)){if(!i.endsWith(".json"))continue;let s=Oe.join(r,i),l=P(s);An(s,t),l&&!P(s)&&(n+=1)}return n}function Pn(e={}){let r=e.slotsDir??w(),t=e.staleMs??I;we({slotsDir:r,staleMs:t});let n=[];for(let i of Kr(r)){if(!i.endsWith(".json"))continue;let s=Ae(Oe.join(r,i));s&&!Ur(s,t)&&n.push(s)}return n}function Ce(e={}){return Pn(e).length}function N(e,r={}){if(oe())return{admitted:!0,slotId:null,activeSlots:0,maxSlots:ne(),reason:null};let t=r.slotsDir??w(),n=r.staleMs??I,i=r.maxSlots??ne();we({slotsDir:t,staleMs:n});for(let l=0;l<i;l+=1){let c=Cn(l),x=On(c,t),Fr=Ae(x);if(Br(x,n))try{Mr(x)}catch{}else if(Fr||P(x))continue;let $r={slotId:c,pid:process.pid,acquiredAt:new Date().toISOString(),command:e};try{let R=Rn(x,"wx");En(R,JSON.stringify($r,null,2),"utf8"),_n(R);let Vr=Ce({slotsDir:t,staleMs:n});return{admitted:!0,slotId:c,activeSlots:Vr,maxSlots:i,reason:null}}catch(R){if(R.code==="EEXIST")continue;throw R}}let s=Ce({slotsDir:t,staleMs:n});return{admitted:!1,slotId:null,activeSlots:s,maxSlots:i,reason:`heavy verification at capacity (${s}/${i} slots)`}}function ie(e,r={}){if(oe())return{admitted:!0,slotId:null,activeSlots:0,maxSlots:ne(),reason:null};let t=r.slotsDir??w(),n=r.staleMs??I,i=r.maxSlots??ne();we({slotsDir:t,staleMs:n});let s=Ce({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 Nn(e){e<=0||In(process.execPath,["-e",`const d=Date.now()+${Math.floor(e)};while(Date.now()<d);`],{stdio:"ignore",windowsHide:!0})}function Lr(e,r,t=2e3,n={}){let i=Date.now()+Math.max(0,r),s=N(e,n);for(;!s.admitted&&Date.now()<i;)Nn(Math.min(t,i-Date.now())),s=N(e,n);return s}function Tn(e,r={}){let t=Ee(e);if(!t.heavy)return{allowed:!0,outcome:"allowed",commandClass:t.commandClass,reason:"command does not require heavy-verification token",verificationGate:{...ie(e),slotId:null}};if(oe())return{allowed:!0,outcome:"heavy_verification_skipped",commandClass:t.commandClass,reason:"KYNVER_HEAVY_VERIFICATION_SKIP bypasses gate",verificationGate:{...ie(e),slotId:null}};let n=r.waitMs??0,i=n>0?Lr(e,n,r.pollMs):N(e);return i.admitted?{allowed:!0,outcome:"allowed",commandClass:t.commandClass,reason:t.reason??"heavy-verification token acquired",verificationGate:i}:{allowed:!1,outcome:re,commandClass:t.commandClass,reason:t.reason??i.reason??re,verificationGate:i}}export{m as DEFAULT_WORKER_PROVIDER,re as HEAVY_VERIFICATION_TOKEN_REQUIRED,ae as KYNVER_NO_PROD_DB_CREDENTIALS_ENV,et as auditReviewWorkerCredentialScope,Xr as auditWorkerEnv,p as buildWorkerSpawnEnv,Ee as classifyHeavyShellCommand,Nr as enforceCursorWorkerProvider,Tn as gateWorkerShellCommand,d as isClaudeFamilyProvider,k as isForbiddenWorkerEnvKey,st as isHarnessExpertReviewWorker,Te as isNoProdCredentialReviewEnvironment,Pe as listForbiddenWorkerEnvKeys,Ie as listOperatorAllowedWorkerEnvKeys,S as normalizeWorkerProviderName,cn as preferCursorExecutor,ln as resolveConfiguredWorkerProvider,T as scrubWorkerEnv,ke as taskAllowsClaudeWorker,be as taskExpressesWorkerProviderPreference};
|