@kynver-app/runtime 0.2.16 → 0.2.17
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/dist/cli.js +58 -57
- package/dist/harness-expert-review.d.ts +4 -0
- package/dist/index.js +78 -77
- package/dist/server/worker-policy.js +2 -1
- package/package.json +2 -27
|
@@ -1 +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 L(e){let r=e[gr];return r?new Set(r.split(/[\s,]+/).map(t=>t.trim()).filter(Boolean)):new Set}function h(e,r={}){return ur.has(e)?!0:pr.has(e)||r.operatorAllow?.has(e)||fr.some(t=>e.endsWith(t))?!1:dr.some(t=>e.endsWith(t))}function ce(e){let r=L(e);return Object.keys(e).filter(t=>h(t,{operatorAllow:r})).sort()}function ue(e){let r=L(e);return r.size===0?[]:Object.keys(e).filter(t=>r.has(t)&&!h(t,{operatorAllow:r})&&h(t)).sort()}function S(e){let r=L(e),t={...e};for(let n of Object.keys(t))h(n,{operatorAllow:r})&&delete t[n];return t}function hr(e){let r=ce(e),t=ue(e);return{forbiddenPresent:r,safe:r.length===0,...t.length?{operatorAllowedActive:t}:{}}}var cr,ur,dr,mr,pr,fr,gr,E=o(()=>{"use strict";cr=["ANTHROPIC_API_KEY","ANALYST_API_KEY","RECRUITER_API_KEY","AUTH_SECRET","NEXTAUTH_SECRET","DATABASE_URL","PRODUCTION_DATABASE_URL","KYNVER_PRODUCTION_DATABASE_URL","REDIS_URL","GOOGLE_CLIENT_SECRET","GITHUB_CLIENT_SECRET","KYNVER_API_KEY","KYNVER_SERVICE_SECRET","KYNVER_RUNTIME_SECRET","KYNVER_CRON_SECRET","OPENCLAW_CRON_SECRET","QSTASH_TOKEN","QSTASH_CURRENT_SIGNING_KEY","QSTASH_NEXT_SIGNING_KEY","TOOL_SECRETS_KEK","TOOL_EXECUTOR_DISPATCH_SECRET","CLOUDFLARE_API_TOKEN","STRIPE_SECRET_KEY","STRIPE_WEBHOOK_SECRET","STRIPE_IDENTITY_WEBHOOK_SECRET","VOYAGE_API_KEY","PERPLEXITY_API_KEY","FRED_API_KEY","FMP_API_KEY","CURSOR_API_KEY","MEMORY_CONTENT_KEK","LLM_BYOK_KEK","KYNVER_COMMAND_AUTH_KEY","KYNVER_INSTRUCTION_BUNDLE_KEY","KYNVER_MEMORY_LEDGER_KEY","KYNVER_JWKS_PRIVATE_KEY_JWK"],ur=new Set(cr),dr=["_SECRET","_API_KEY","_KEK","_KEY","_TOKEN","_PASSWORD","_PASSPHRASE","_SALT"],mr=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN"],pr=new Set(mr),fr=["_PUBLIC_KEY"],gr="KYNVER_WORKER_ENV_ALLOW"});function $(e){if(!e)return!1;try{return process.kill(e,0),!0}catch{return!1}}var a=o(()=>{"use strict"});var V=o(()=>{"use strict";a();E()});var v=o(()=>{"use strict"});var Y=o(()=>{"use strict";V();v()});var m=o(()=>{"use strict"});var C=o(()=>{"use strict"});var ye=o(()=>{"use strict"});var Qt,Zt,G=o(()=>{"use strict";Qt=25*1024*1024*1024,Zt=12*1024*1024*1024});var on,sn,ve=o(()=>{"use strict";G();on=5*1024*1024*1024,sn=10*1024*1024*1024});var mn,pn,z=o(()=>{"use strict";ve();G();mn=30*1024*1024*1024,pn=15*1024*1024*1024});var Re=o(()=>{"use strict";a()});import Ir from"node:path";var kn,J=o(()=>{"use strict";v();Re();kn=Ir.join(".openclaw","harness")});var A=o(()=>{"use strict";p();m();C();w();J()});var _e=o(()=>{"use strict";p();J();A();a()});var X=o(()=>{"use strict";_e();a()});var Se=o(()=>{"use strict";X();a()});var Ee=o(()=>{"use strict"});var Ce=o(()=>{"use strict";Ee();a()});var Oe=o(()=>{"use strict"});var Ae=o(()=>{"use strict";Oe()});var we=o(()=>{"use strict";Ae();a()});var Ie=o(()=>{"use strict"});var Pe=o(()=>{"use strict"});var Ne=o(()=>{"use strict"});var Q=o(()=>{"use strict"});var De=o(()=>{"use strict"});var Be=o(()=>{"use strict";Q();De()});var Te=o(()=>{"use strict";Ce();we();Ie();Pe();V();Ne();Be();Q();a()});var We=o(()=>{"use strict";Te()});var Ur,Mr,Ke=o(()=>{"use strict";ye();p();m();C();w();z();X();Se();We();a();Ur=500*1024*1024,Mr=4*1024*1024*1024});var w=o(()=>{"use strict";Ke()});import{homedir as Lr}from"node:os";import Fr from"node:path";var Ue,Z=o(()=>{"use strict";Ue=Fr.join(Lr(),".kynver",".env")});var Me=o(()=>{"use strict"});var Le=o(()=>{"use strict";Me()});var Fe=o(()=>{"use strict"});var ee=o(()=>{"use strict";Le();Fe()});var He=o(()=>{"use strict"});var $e=o(()=>{"use strict";He()});var P=o(()=>{"use strict";Z();v();p();ee();$e()});var je=o(()=>{"use strict";m();m()});var Ve=o(()=>{"use strict";Z();ee();P()});var Ye=o(()=>{"use strict";Y();m();je();p();P();Ve();a();A()});import{homedir as Jr,totalmem as vs}from"node:os";import re from"node:path";var Ge,Is,Ps,Ns,Ds,p=o(()=>{"use strict";Y();v();a();m();C();w();z();P();Ye();A();Ge=re.join(Jr(),".kynver"),Is=re.join(Ge,"config.json"),Ps=re.join(Ge,"credentials"),Ns=500*1024*1024,Ds=4*1024*1024*1024});E();E();var F="KYNVER_NO_PROD_DB_CREDENTIALS",yr=["KYNVER_ENV_FILE"],vr=new Set(["1","true","yes","on"]);function me(e){let r=e[F]?.trim().toLowerCase();return r!==void 0&&vr.has(r)}function y(e,r={}){let t=S(e);if(!r.reviewWorker)return t;let n={...t,[F]:"1"};for(let i of yr)delete n[i];return n}var de=["DATABASE_URL","PRODUCTION_DATABASE_URL","KYNVER_PRODUCTION_DATABASE_URL"];function br(e,r={}){let t=y(e,r),n=Object.keys(t).filter(u=>u.endsWith("_SECRET")||u.endsWith("_API_KEY")||de.includes(u)),i=de.every(u=>t[u]===void 0),s=r.reviewWorker?t.KYNVER_ENV_FILE===void 0:!0,l=me(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 Rr="expert-lane-pr-review:",xr="plan-review-task",kr="scheduledjob:";function pe(e){if(!e)return null;let r=e.trim().toLowerCase();return r.length?r:null}function _r(e){let r=(e.executorRef??"").toLowerCase();if(r.startsWith(Rr)||r===xr||r.startsWith("daemon-review:"))return!0;if(r.startsWith(kr)&&e.parentTaskId){let n=pe(e.personaSlug);if(n==="lorentz"||n==="dalton")return!0}let t=(e.title??"").toLowerCase();if(t.includes("expert pr review"))return!0;if(e.parentTaskId&&(t.startsWith("review:")||t.includes("review required")||t.includes("runtime review"))){let n=pe(e.personaSlug);if(n==="lorentz"||n==="dalton")return!0}return!1}var Sr=/^claude[-_]/i,Er=/^(?:opus|sonnet|haiku)\b/i;function fe(e){let r=e.trim();return Sr.test(r)||Er.test(r)}function ge(e){let r=e.trim().toLowerCase();return r.startsWith("gpt-")||r.startsWith("gpt5")||r.includes("codex")}function he(e){let r=e.trim().toLowerCase();return r.includes("composer")||r.includes("cursor")}function Cr(e){return ge(e)?"codex":fe(e)?"claude":(he(e),"cursor")}function Or(e){if(!e.startsWith("provider:"))return null;let r=e.slice(9),t=r.indexOf(":"),n=(t>=0?r.slice(0,t):r).trim().toLowerCase(),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==="cursor"||n==="composer"?{provider:"cursor",model:i,rule:"executor_ref:provider_cursor"}:null:null}function Ar(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?fe(n)||ge(n)||he(n)?{lane:t,model:n,provider:Cr(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?Or(r)??Ar(r):null}p();a();a();a();var Oa=process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.4";function et(){return process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.4"}var rt=et();var qe="composer-2.5";var d="cursor",tt=new Set(["claude","opus","anthropic"]),nt=[/\[worker-provider:\s*claude\]/i,/\[use-claude-worker\]/i,/\[operator-worker-provider:\s*claude\]/i];function B(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function c(e){if(!e?.trim())return!1;let r=e.trim().toLowerCase();return tt.has(r)?!0:r.includes("claude")||r.includes("opus")}function te(e){if(!e)return!1;let r=e.workerProviderOverride;if(typeof r=="string"&&c(r))return!0;let t=B(e,"executorRef").toLowerCase();if(t==="provider:claude"||t.startsWith("provider:claude:")||t.includes("claude-worker-override")||t.includes("operator-claude"))return!0;let n=H(B(e,"executorRef"));if(n?.provider&&c(n.provider)||n?.model&&c(ot(n.model)))return!0;let i=B(e,"description");if(nt.some(l=>l.test(i)))return!0;let s=B(e,"title");return!!/\[use-claude-worker\]/i.test(s)}function ot(e){let r=e.trim().toLowerCase();return/^claude[-_]/.test(r)||/^(?:opus|sonnet|haiku)\b/.test(r)?"claude":r}function it(e,r){return{provider:d,model:qe,rule:`policy:cursor_default${r}`,requestedModel:e}}function Xe(e){let{routing:r,task:t}=e,n=e.explicitProvider?.trim().toLowerCase();if(e.explicitProviderIsOperatorOverride&&c(n))return{...r,provider:"claude",rule:r.rule.startsWith("explicit:")?r.rule:"explicit:operator_provider"};if(te(t)||r.rule==="explicit:cli"&&c(r.provider)||!c(r.provider))return r;let i=r.rule&&r.rule!=="default:global"?`:${r.rule.replace(/:/g,"_")}`:"";return it(r.model,i)}function st(e,r=d){let t=e?.trim();return t?c(t)?d:t==="codex"?"codex":t:r}function at(e){let r=[...new Set(e.map(t=>t.trim().toLowerCase()).filter(Boolean))];return r.includes(d)?[...new Set(r.map(t=>c(t)?d:t))]:r.every(t=>c(t))?[d]:r}var lt=/\b(npm run typecheck|tsc\b[^|&;]*--noEmit|node scripts\/verify-pr-local\.mjs|kynver (harness )?verify)\b/i,ct=/\b(npm run build\b|next build\b)\b/i,ut=/\b(vercel (build|deploy|--prod))\b/i,dt=/\b(openai|anthropic|perplexity|voyage)\b.*\b(api|cli)\b|\b(paid|billable)[-_ ]?compute\b/i;function ne(e){let r=e.trim();return r?dt.test(r)?{heavy:!0,commandClass:"paid_compute",reason:"paid external compute requires heavy-verification token and operator approval"}:ut.test(r)?{heavy:!0,commandClass:"vercel_verify",reason:"Vercel build/deploy verification requires heavy-verification token"}:ct.test(r)?{heavy:!0,commandClass:"full_build",reason:"full app build requires heavy-verification token"}:lt.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 T="heavy_verification_token_required";import{spawnSync as wt}from"node:child_process";a();import{closeSync as yt,existsSync as x,mkdirSync as vt,openSync as bt,readdirSync as rr,readFileSync as Rt,statSync as xt,unlinkSync as tr,writeFileSync as kt}from"node:fs";import se from"node:path";import{mkdirSync as pt}from"node:fs";import{tmpdir as ft}from"node:os";import W from"node:path";import{homedir as mt}from"node:os";import Qe from"node:path";function Ze(){let e=process.env.KYNVER_STATE_ROOT;return e?Qe.resolve(e):Qe.join(mt(),".kynver","state")}function gt(){return!!(process.env.VERCEL||process.env.VERCEL_ENV||process.env.AWS_LAMBDA_FUNCTION_NAME||process.env.AWS_EXECUTION_ENV)}function ht(){let e=process.env.KYNVER_HEAVY_VERIFICATION_STATE_ROOT;return e?W.resolve(e):gt()?W.join(ft(),"kynver","state","heavy-verification"):W.join(Ze(),"heavy-verification")}function oe(){return W.join(ht(),"slots")}function R(){let e=oe();return pt(e,{recursive:!0}),e}var k=120*6e4,er=1;function _t(e,r){let t=Number(e);return!Number.isFinite(t)||t<=0?r:Math.floor(t)}function U(){let e=process.env.KYNVER_HEAVY_VERIFICATION_SKIP?.trim().toLowerCase();return e==="1"||e==="true"||e==="yes"}function K(){let e=process.env.KYNVER_HEAVY_VERIFICATION_MAX_CONCURRENT;return e?_t(e,er):er}function St(e){return`slot-${e}`}function Et(e,r=oe()){return se.join(r,`${e}.json`)}function ae(e){if(!x(e))return null;try{let r=JSON.parse(Rt(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 nr(e,r=k){if(!e||!$(e.pid))return!0;let t=Date.parse(e.acquiredAt);return Number.isNaN(t)?!0:Date.now()-t>r}function or(e,r){let t=ae(e);if(t)return nr(t,r);if(!x(e))return!0;try{return Date.now()-xt(e).mtimeMs>r}catch{return!0}}function Ct(e,r){if(or(e,r))try{tr(e)}catch{}}function Ot(e){return vt(e,{recursive:!0}),e}function le(e={}){let r=Ot(e.slotsDir??R()),t=e.staleMs??k,n=0;for(let i of rr(r)){if(!i.endsWith(".json"))continue;let s=se.join(r,i),l=x(s);Ct(s,t),l&&!x(s)&&(n+=1)}return n}function At(e={}){let r=e.slotsDir??R(),t=e.staleMs??k;le({slotsDir:r,staleMs:t});let n=[];for(let i of rr(r)){if(!i.endsWith(".json"))continue;let s=ae(se.join(r,i));s&&!nr(s,t)&&n.push(s)}return n}function ie(e={}){return At(e).length}function _(e,r={}){if(U())return{admitted:!0,slotId:null,activeSlots:0,maxSlots:K(),reason:null};let t=r.slotsDir??R(),n=r.staleMs??k,i=r.maxSlots??K();le({slotsDir:t,staleMs:n});for(let l=0;l<i;l+=1){let u=St(l),f=Et(u,t),sr=ae(f);if(or(f,n))try{tr(f)}catch{}else if(sr||x(f))continue;let ar={slotId:u,pid:process.pid,acquiredAt:new Date().toISOString(),command:e};try{let g=bt(f,"wx");kt(g,JSON.stringify(ar,null,2),"utf8"),yt(g);let lr=ie({slotsDir:t,staleMs:n});return{admitted:!0,slotId:u,activeSlots:lr,maxSlots:i,reason:null}}catch(g){if(g.code==="EEXIST")continue;throw g}}let s=ie({slotsDir:t,staleMs:n});return{admitted:!1,slotId:null,activeSlots:s,maxSlots:i,reason:`heavy verification at capacity (${s}/${i} slots)`}}function M(e,r={}){if(U())return{admitted:!0,slotId:null,activeSlots:0,maxSlots:K(),reason:null};let t=r.slotsDir??R(),n=r.staleMs??k,i=r.maxSlots??K();le({slotsDir:t,staleMs:n});let s=ie({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 It(e){e<=0||wt(process.execPath,["-e",`const d=Date.now()+${Math.floor(e)};while(Date.now()<d);`],{stdio:"ignore"})}function ir(e,r,t=2e3,n={}){let i=Date.now()+Math.max(0,r),s=_(e,n);for(;!s.admitted&&Date.now()<i;)It(Math.min(t,i-Date.now())),s=_(e,n);return s}function Pt(e,r={}){let t=ne(e);if(!t.heavy)return{allowed:!0,outcome:"allowed",commandClass:t.commandClass,reason:"command does not require heavy-verification token",verificationGate:{...M(e),slotId:null}};if(U())return{allowed:!0,outcome:"heavy_verification_skipped",commandClass:t.commandClass,reason:"KYNVER_HEAVY_VERIFICATION_SKIP bypasses gate",verificationGate:{...M(e),slotId:null}};let n=r.waitMs??0,i=n>0?ir(e,n,r.pollMs):_(e);return i.admitted?{allowed:!0,outcome:"allowed",commandClass:t.commandClass,reason:t.reason??"heavy-verification token acquired",verificationGate:i}:{allowed:!1,outcome:T,commandClass:t.commandClass,reason:t.reason??i.reason??T,verificationGate:i}}export{d as DEFAULT_WORKER_PROVIDER,T as HEAVY_VERIFICATION_TOKEN_REQUIRED,F as KYNVER_NO_PROD_DB_CREDENTIALS_ENV,br as auditReviewWorkerCredentialScope,hr as auditWorkerEnv,y as buildWorkerSpawnEnv,ne as classifyHeavyShellCommand,Xe as enforceCursorWorkerProvider,Pt as gateWorkerShellCommand,c as isClaudeFamilyProvider,h as isForbiddenWorkerEnvKey,_r as isHarnessExpertReviewWorker,me as isNoProdCredentialReviewEnvironment,ce as listForbiddenWorkerEnvKeys,ue as listOperatorAllowedWorkerEnvKeys,at as preferCursorExecutor,st as resolveConfiguredWorkerProvider,S as scrubWorkerEnv,te as taskAllowsClaudeWorker};
|
|
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 F(e){let r=e[hr];return r?new Set(r.split(/[\s,]+/).map(t=>t.trim()).filter(Boolean)):new Set}function h(e,r={}){return dr.has(e)?!0:pr.has(e)||r.operatorAllow?.has(e)||gr.some(t=>e.endsWith(t))?!1:mr.some(t=>e.endsWith(t))}function de(e){let r=F(e);return Object.keys(e).filter(t=>h(t,{operatorAllow:r})).sort()}function me(e){let r=F(e);return r.size===0?[]:Object.keys(e).filter(t=>r.has(t)&&!h(t,{operatorAllow:r})&&h(t)).sort()}function _(e){let r=F(e),t={...e};for(let n of Object.keys(t))h(n,{operatorAllow:r})&&delete t[n];return t}function yr(e){let r=de(e),t=me(e);return{forbiddenPresent:r,safe:r.length===0,...t.length?{operatorAllowedActive:t}:{}}}var ur,dr,mr,fr,pr,gr,hr,E=o(()=>{"use strict";ur=["ANTHROPIC_API_KEY","ANALYST_API_KEY","RECRUITER_API_KEY","AUTH_SECRET","NEXTAUTH_SECRET","DATABASE_URL","PRODUCTION_DATABASE_URL","KYNVER_PRODUCTION_DATABASE_URL","REDIS_URL","GOOGLE_CLIENT_SECRET","GITHUB_CLIENT_SECRET","KYNVER_API_KEY","KYNVER_SERVICE_SECRET","KYNVER_RUNTIME_SECRET","KYNVER_CRON_SECRET","OPENCLAW_CRON_SECRET","QSTASH_TOKEN","QSTASH_CURRENT_SIGNING_KEY","QSTASH_NEXT_SIGNING_KEY","TOOL_SECRETS_KEK","TOOL_EXECUTOR_DISPATCH_SECRET","CLOUDFLARE_API_TOKEN","STRIPE_SECRET_KEY","STRIPE_WEBHOOK_SECRET","STRIPE_IDENTITY_WEBHOOK_SECRET","VOYAGE_API_KEY","PERPLEXITY_API_KEY","FRED_API_KEY","FMP_API_KEY","CURSOR_API_KEY","MEMORY_CONTENT_KEK","LLM_BYOK_KEK","KYNVER_COMMAND_AUTH_KEY","KYNVER_INSTRUCTION_BUNDLE_KEY","KYNVER_MEMORY_LEDGER_KEY","KYNVER_JWKS_PRIVATE_KEY_JWK"],dr=new Set(ur),mr=["_SECRET","_API_KEY","_KEK","_KEY","_TOKEN","_PASSWORD","_PASSPHRASE","_SALT"],fr=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN"],pr=new Set(fr),gr=["_PUBLIC_KEY"],hr="KYNVER_WORKER_ENV_ALLOW"});function V(e){if(!e)return!1;try{return process.kill(e,0),!0}catch{return!1}}var a=o(()=>{"use strict"});var G=o(()=>{"use strict";a();E()});var v=o(()=>{"use strict"});var z=o(()=>{"use strict";G();v()});var m=o(()=>{"use strict"});var O=o(()=>{"use strict"});var ve=o(()=>{"use strict"});var rn,tn,J=o(()=>{"use strict";rn=25*1024*1024*1024,tn=12*1024*1024*1024});var ln,cn,be=o(()=>{"use strict";J();ln=5*1024*1024*1024,cn=10*1024*1024*1024});var gn,hn,q=o(()=>{"use strict";be();J();gn=30*1024*1024*1024,hn=15*1024*1024*1024});var xe=o(()=>{"use strict";a()});import Dr from"node:path";var En,X=o(()=>{"use strict";v();xe();En=Dr.join(".openclaw","harness")});var w=o(()=>{"use strict";f();m();O();I();X()});var _e=o(()=>{"use strict";f();X();w();a()});var Z=o(()=>{"use strict";_e();a()});var Ee=o(()=>{"use strict";Z();a()});var Ce=o(()=>{"use strict"});var Oe=o(()=>{"use strict";Ce();a()});var Ae=o(()=>{"use strict"});var we=o(()=>{"use strict";Ae()});var Ie=o(()=>{"use strict";we();a()});var Pe=o(()=>{"use strict"});var Ne=o(()=>{"use strict"});var De=o(()=>{"use strict"});var ee=o(()=>{"use strict"});var Be=o(()=>{"use strict"});var Te=o(()=>{"use strict";ee();Be()});var We=o(()=>{"use strict";Oe();Ie();Pe();Ne();G();De();Te();ee();a()});var Ke=o(()=>{"use strict";We()});var Fr,Hr,Ue=o(()=>{"use strict";ve();f();m();O();I();q();Z();Ee();Ke();a();Fr=500*1024*1024,Hr=4*1024*1024*1024});var I=o(()=>{"use strict";Ue()});import{homedir as $r}from"node:os";import jr from"node:path";var Me,re=o(()=>{"use strict";Me=jr.join($r(),".kynver",".env")});var Le=o(()=>{"use strict"});var Fe=o(()=>{"use strict";Le()});var He=o(()=>{"use strict"});var te=o(()=>{"use strict";Fe();He()});var $e=o(()=>{"use strict"});var je=o(()=>{"use strict";$e()});var N=o(()=>{"use strict";re();v();f();te();je()});var Ve=o(()=>{"use strict";m();m()});var Ye=o(()=>{"use strict";re();te();N()});var Ge=o(()=>{"use strict";z();m();Ve();f();N();Ye();a();w()});import{homedir as Qr,totalmem as xs}from"node:os";import ne from"node:path";var ze,Ds,Bs,Ts,Ws,f=o(()=>{"use strict";z();v();a();m();O();I();q();N();Ge();w();ze=ne.join(Qr(),".kynver"),Ds=ne.join(ze,"config.json"),Bs=ne.join(ze,"credentials"),Ts=500*1024*1024,Ws=4*1024*1024*1024});E();E();var H="KYNVER_NO_PROD_DB_CREDENTIALS",vr=["KYNVER_ENV_FILE"],br=new Set(["1","true","yes","on"]);function pe(e){let r=e[H]?.trim().toLowerCase();return r!==void 0&&br.has(r)}function y(e,r={}){let t=_(e);if(!r.reviewWorker)return t;let n={...t,[H]:"1"};for(let i of vr)delete n[i];return n}var fe=["DATABASE_URL","PRODUCTION_DATABASE_URL","KYNVER_PRODUCTION_DATABASE_URL"];function Rr(e,r={}){let t=y(e,r),n=Object.keys(t).filter(u=>u.endsWith("_SECRET")||u.endsWith("_API_KEY")||fe.includes(u)),i=fe.every(u=>t[u]===void 0),s=r.reviewWorker?t.KYNVER_ENV_FILE===void 0:!0,l=pe(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 xr="expert-lane-pr-review:",kr="plan-review-task",Sr="scheduledjob:",C=new Set(["lorentz","dalton","rhea","sentinel"]);function _r(e){if(!e)return null;let r=e.trim().toLowerCase();return r.length?r:null}function $(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 Er(e,r){return e.startsWith("factory:")?e.includes("lb")||$(r):!1}function Cr(e){let r=(e.executorRef??"").toLowerCase(),t=(e.title??"").toLowerCase(),n=(e.description??"").toLowerCase(),i=`${t}
|
|
2
|
+
${n}`,s=_r(e.personaSlug);return!!(r.startsWith(xr)||r===kr||r.startsWith("daemon-review:")||s&&C.has(s)&&(r.includes("evidence")||r.includes("validate")||r.includes("review")||Er(r,i)||$(i))||r.startsWith(Sr)&&e.parentTaskId&&s&&C.has(s)||e.planId&&!e.parentTaskId&&s&&C.has(s)&&$(i)||t.includes("expert pr review")||e.parentTaskId&&(t.startsWith("review:")||t.includes("review required")||t.includes("runtime review"))&&s&&C.has(s))}var Or=/^claude[-_]/i,Ar=/^(?:opus|sonnet|haiku)\b/i;function ge(e){let r=e.trim();return Or.test(r)||Ar.test(r)}function he(e){let r=e.trim().toLowerCase();return r.startsWith("gpt-")||r.startsWith("gpt5")||r.includes("codex")}function ye(e){let r=e.trim().toLowerCase();return r.includes("composer")||r.includes("cursor")}function wr(e){return he(e)?"codex":ge(e)?"claude":(ye(e),"cursor")}function Ir(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==="cursor"||n==="composer"?{provider:"cursor",model:i,rule:"executor_ref:provider_cursor"}:null:null}function Pr(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?ge(n)||he(n)||ye(n)?{lane:t,model:n,provider:wr(n),rule:"executor_ref:harness_lane_model"}:{lane:t,rule:"executor_ref:harness_lane"}:{lane:t,rule:"executor_ref:harness_lane"}}function j(e){let r=typeof e=="string"?e.trim():"";return r?Ir(r)??Pr(r):null}f();a();a();a();var Ia=process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.4";function nt(){return process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.4"}var ot=nt();var Xe="composer-2.5";var d="cursor",it=new Set(["claude","opus","anthropic"]),st=[/\[worker-provider:\s*claude\]/i,/\[use-claude-worker\]/i,/\[operator-worker-provider:\s*claude\]/i];function T(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function c(e){if(!e?.trim())return!1;let r=e.trim().toLowerCase();return it.has(r)?!0:r.includes("claude")||r.includes("opus")}function oe(e){if(!e)return!1;let r=e.workerProviderOverride;if(typeof r=="string"&&c(r))return!0;let t=T(e,"executorRef").toLowerCase();if(t==="provider:claude"||t.startsWith("provider:claude:")||t.includes("claude-worker-override")||t.includes("operator-claude"))return!0;let n=j(T(e,"executorRef"));if(n?.provider&&c(n.provider)||n?.model&&c(at(n.model)))return!0;let i=T(e,"description");if(st.some(l=>l.test(i)))return!0;let s=T(e,"title");return!!/\[use-claude-worker\]/i.test(s)}function at(e){let r=e.trim().toLowerCase();return/^claude[-_]/.test(r)||/^(?:opus|sonnet|haiku)\b/.test(r)?"claude":r}function lt(e,r){return{provider:d,model:Xe,rule:`policy:cursor_default${r}`,requestedModel:e}}function Qe(e){let{routing:r,task:t}=e,n=e.explicitProvider?.trim().toLowerCase();if(e.explicitProviderIsOperatorOverride&&c(n))return{...r,provider:"claude",rule:r.rule.startsWith("explicit:")?r.rule:"explicit:operator_provider"};if(oe(t)||r.rule==="explicit:cli"&&c(r.provider)||!c(r.provider))return r;let i=r.rule&&r.rule!=="default:global"?`:${r.rule.replace(/:/g,"_")}`:"";return lt(r.model,i)}function ct(e,r=d){let t=e?.trim();return t?c(t)?d:t==="codex"?"codex":t:r}function ut(e){let r=[...new Set(e.map(t=>t.trim().toLowerCase()).filter(Boolean))];return r.includes(d)?[...new Set(r.map(t=>c(t)?d:t))]:r.every(t=>c(t))?[d]:r}var dt=/\b(npm run typecheck|tsc\b[^|&;]*--noEmit|node scripts\/verify-pr-local\.mjs|kynver (harness )?verify)\b/i,mt=/\b(npm run build\b|next build\b)\b/i,ft=/\b(vercel (build|deploy|--prod))\b/i,pt=/\b(openai|anthropic|perplexity|voyage)\b.*\b(api|cli)\b|\b(paid|billable)[-_ ]?compute\b/i;function ie(e){let r=e.trim();return r?pt.test(r)?{heavy:!0,commandClass:"paid_compute",reason:"paid external compute requires heavy-verification token and operator approval"}:ft.test(r)?{heavy:!0,commandClass:"vercel_verify",reason:"Vercel build/deploy verification requires heavy-verification token"}:mt.test(r)?{heavy:!0,commandClass:"full_build",reason:"full app build requires heavy-verification token"}:dt.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 W="heavy_verification_token_required";import{spawnSync as Nt}from"node:child_process";a();import{closeSync as Rt,existsSync as x,mkdirSync as xt,openSync as kt,readdirSync as tr,readFileSync as St,statSync as _t,unlinkSync as nr,writeFileSync as Et}from"node:fs";import le from"node:path";import{mkdirSync as ht}from"node:fs";import{tmpdir as yt}from"node:os";import K from"node:path";import{homedir as gt}from"node:os";import Ze from"node:path";function er(){let e=process.env.KYNVER_STATE_ROOT;return e?Ze.resolve(e):Ze.join(gt(),".kynver","state")}function vt(){return!!(process.env.VERCEL||process.env.VERCEL_ENV||process.env.AWS_LAMBDA_FUNCTION_NAME||process.env.AWS_EXECUTION_ENV)}function bt(){let e=process.env.KYNVER_HEAVY_VERIFICATION_STATE_ROOT;return e?K.resolve(e):vt()?K.join(yt(),"kynver","state","heavy-verification"):K.join(er(),"heavy-verification")}function se(){return K.join(bt(),"slots")}function R(){let e=se();return ht(e,{recursive:!0}),e}var k=120*6e4,rr=1;function Ct(e,r){let t=Number(e);return!Number.isFinite(t)||t<=0?r:Math.floor(t)}function M(){let e=process.env.KYNVER_HEAVY_VERIFICATION_SKIP?.trim().toLowerCase();return e==="1"||e==="true"||e==="yes"}function U(){let e=process.env.KYNVER_HEAVY_VERIFICATION_MAX_CONCURRENT;return e?Ct(e,rr):rr}function Ot(e){return`slot-${e}`}function At(e,r=se()){return le.join(r,`${e}.json`)}function ce(e){if(!x(e))return null;try{let r=JSON.parse(St(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 or(e,r=k){if(!e||!V(e.pid))return!0;let t=Date.parse(e.acquiredAt);return Number.isNaN(t)?!0:Date.now()-t>r}function ir(e,r){let t=ce(e);if(t)return or(t,r);if(!x(e))return!0;try{return Date.now()-_t(e).mtimeMs>r}catch{return!0}}function wt(e,r){if(ir(e,r))try{nr(e)}catch{}}function It(e){return xt(e,{recursive:!0}),e}function ue(e={}){let r=It(e.slotsDir??R()),t=e.staleMs??k,n=0;for(let i of tr(r)){if(!i.endsWith(".json"))continue;let s=le.join(r,i),l=x(s);wt(s,t),l&&!x(s)&&(n+=1)}return n}function Pt(e={}){let r=e.slotsDir??R(),t=e.staleMs??k;ue({slotsDir:r,staleMs:t});let n=[];for(let i of tr(r)){if(!i.endsWith(".json"))continue;let s=ce(le.join(r,i));s&&!or(s,t)&&n.push(s)}return n}function ae(e={}){return Pt(e).length}function S(e,r={}){if(M())return{admitted:!0,slotId:null,activeSlots:0,maxSlots:U(),reason:null};let t=r.slotsDir??R(),n=r.staleMs??k,i=r.maxSlots??U();ue({slotsDir:t,staleMs:n});for(let l=0;l<i;l+=1){let u=Ot(l),p=At(u,t),ar=ce(p);if(ir(p,n))try{nr(p)}catch{}else if(ar||x(p))continue;let lr={slotId:u,pid:process.pid,acquiredAt:new Date().toISOString(),command:e};try{let g=kt(p,"wx");Et(g,JSON.stringify(lr,null,2),"utf8"),Rt(g);let cr=ae({slotsDir:t,staleMs:n});return{admitted:!0,slotId:u,activeSlots:cr,maxSlots:i,reason:null}}catch(g){if(g.code==="EEXIST")continue;throw g}}let s=ae({slotsDir:t,staleMs:n});return{admitted:!1,slotId:null,activeSlots:s,maxSlots:i,reason:`heavy verification at capacity (${s}/${i} slots)`}}function L(e,r={}){if(M())return{admitted:!0,slotId:null,activeSlots:0,maxSlots:U(),reason:null};let t=r.slotsDir??R(),n=r.staleMs??k,i=r.maxSlots??U();ue({slotsDir:t,staleMs:n});let s=ae({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 Dt(e){e<=0||Nt(process.execPath,["-e",`const d=Date.now()+${Math.floor(e)};while(Date.now()<d);`],{stdio:"ignore"})}function sr(e,r,t=2e3,n={}){let i=Date.now()+Math.max(0,r),s=S(e,n);for(;!s.admitted&&Date.now()<i;)Dt(Math.min(t,i-Date.now())),s=S(e,n);return s}function Bt(e,r={}){let t=ie(e);if(!t.heavy)return{allowed:!0,outcome:"allowed",commandClass:t.commandClass,reason:"command does not require heavy-verification token",verificationGate:{...L(e),slotId:null}};if(M())return{allowed:!0,outcome:"heavy_verification_skipped",commandClass:t.commandClass,reason:"KYNVER_HEAVY_VERIFICATION_SKIP bypasses gate",verificationGate:{...L(e),slotId:null}};let n=r.waitMs??0,i=n>0?sr(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:W,commandClass:t.commandClass,reason:t.reason??i.reason??W,verificationGate:i}}export{d as DEFAULT_WORKER_PROVIDER,W as HEAVY_VERIFICATION_TOKEN_REQUIRED,H as KYNVER_NO_PROD_DB_CREDENTIALS_ENV,Rr as auditReviewWorkerCredentialScope,yr as auditWorkerEnv,y as buildWorkerSpawnEnv,ie as classifyHeavyShellCommand,Qe as enforceCursorWorkerProvider,Bt as gateWorkerShellCommand,c as isClaudeFamilyProvider,h as isForbiddenWorkerEnvKey,Cr as isHarnessExpertReviewWorker,pe as isNoProdCredentialReviewEnvironment,de as listForbiddenWorkerEnvKeys,me as listOperatorAllowedWorkerEnvKeys,ut as preferCursorExecutor,ct as resolveConfiguredWorkerProvider,_ as scrubWorkerEnv,oe as taskAllowsClaudeWorker};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kynver-app/runtime",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.17",
|
|
4
4
|
"description": "Kynver AgentOS local execution runtime and CLI",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -99,31 +99,6 @@
|
|
|
99
99
|
"types": "./dist/chat/command-auth-proof.d.ts",
|
|
100
100
|
"import": "./dist/chat/command-auth-proof.js",
|
|
101
101
|
"default": "./dist/chat/command-auth-proof.js"
|
|
102
|
-
},
|
|
103
|
-
"./node-runtime-policy": {
|
|
104
|
-
"types": "./dist/node-runtime-policy.d.ts",
|
|
105
|
-
"import": "./dist/node-runtime-policy.js",
|
|
106
|
-
"default": "./dist/node-runtime-policy.js"
|
|
107
|
-
},
|
|
108
|
-
"./server/context-budget": {
|
|
109
|
-
"types": "./dist/server/context-budget.d.ts",
|
|
110
|
-
"import": "./dist/server/context-budget.js",
|
|
111
|
-
"default": "./dist/server/context-budget.js"
|
|
112
|
-
},
|
|
113
|
-
"./server/adapter-contract": {
|
|
114
|
-
"types": "./dist/server/adapter-contract.d.ts",
|
|
115
|
-
"import": "./dist/server/adapter-contract.js",
|
|
116
|
-
"default": "./dist/server/adapter-contract.js"
|
|
117
|
-
},
|
|
118
|
-
"./server/dispatch-routing": {
|
|
119
|
-
"types": "./dist/server/dispatch-routing.d.ts",
|
|
120
|
-
"import": "./dist/server/dispatch-routing.js",
|
|
121
|
-
"default": "./dist/server/dispatch-routing.js"
|
|
122
|
-
},
|
|
123
|
-
"./server/db-credentials": {
|
|
124
|
-
"types": "./dist/server/db-credentials.d.ts",
|
|
125
|
-
"import": "./dist/server/db-credentials.js",
|
|
126
|
-
"default": "./dist/server/db-credentials.js"
|
|
127
102
|
}
|
|
128
103
|
},
|
|
129
104
|
"files": [
|
|
@@ -133,7 +108,7 @@
|
|
|
133
108
|
"README.md"
|
|
134
109
|
],
|
|
135
110
|
"scripts": {
|
|
136
|
-
"build": "esbuild src/cli.ts src/index.ts src/node-runtime-policy.ts src/local-run-store/index.ts src/worker-persona-catalog.ts src/instruction-bundle/contract.ts src/chat/command-auth-proof.ts src/server/monitor.ts src/server/landing.ts src/server/worker-policy.ts src/server/orchestration.ts src/server/heavy-verification.ts src/server/memory-cost.ts src/server/pr-evidence.ts src/server/default-repo.ts src/server/cleanup.ts src/server/repo-search.ts src/server/harness-notice.ts src/server/memory-cost-enforce.ts src/server/wsl-crash-dumps.ts
|
|
111
|
+
"build": "esbuild src/cli.ts src/index.ts src/node-runtime-policy.ts src/local-run-store/index.ts src/worker-persona-catalog.ts src/instruction-bundle/contract.ts src/chat/command-auth-proof.ts src/server/monitor.ts src/server/landing.ts src/server/worker-policy.ts src/server/orchestration.ts src/server/heavy-verification.ts src/server/memory-cost.ts src/server/pr-evidence.ts src/server/default-repo.ts src/server/cleanup.ts src/server/repo-search.ts src/server/harness-notice.ts src/server/memory-cost-enforce.ts src/server/wsl-crash-dumps.ts --bundle --platform=node --format=esm --packages=external --outbase=src --outdir=dist --minify && tsc -p tsconfig.json --emitDeclarationOnly && node scripts/chmod-cli-bin.mjs",
|
|
137
112
|
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
138
113
|
"test": "vitest run --config vitest.config.ts",
|
|
139
114
|
"prepublishOnly": "node ../../scripts/npm-publish-guard.mjs && npm run build"
|