@kynver-app/runtime 0.2.53 → 0.2.54
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 +3 -4
- package/dist/cli.js +4 -4
- package/dist/index.js +4 -4
- package/dist/node-runtime-policy.js +1 -1
- package/dist/server/cleanup.js +2 -2
- package/dist/server/dispatch-routing.js +3 -3
- package/dist/server/model-routing.js +3 -3
- package/dist/server/node-runtime-policy.js +1 -1
- package/dist/server/worker-policy.js +2 -2
- package/dist/server/wsl-crash-dumps.js +1 -1
- package/package.json +1 -1
|
@@ -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[
|
|
2
|
-
${n}`,s=Ar(e.personaSlug);return!!(r.startsWith(Er)||r===Or||r.startsWith("daemon-review:")||s&&C.has(s)&&(r.includes("evidence")||r.includes("validate")||r.includes("review")||wr(r,i)||V(i))||r.startsWith(Cr)&&e.parentTaskId&&s&&C.has(s)||e.planId&&!e.parentTaskId&&s&&C.has(s)&&V(i)||t.includes("expert pr review")||e.parentTaskId&&(t.startsWith("review:")||t.includes("review required")||t.includes("runtime review"))&&s&&C.has(s))}var Ir=/^claude[-_]/i,Nr=/^(?:opus|sonnet|haiku)\b/i;function he(e){let r=e.trim();return Ir.test(r)||Nr.test(r)}function ye(e){let r=e.trim().toLowerCase();return r.startsWith("gpt-")||r.startsWith("gpt5")||r.includes("codex")}function Re(e){let r=e.trim().toLowerCase();return r.includes("composer")||r.includes("cursor")}function Tr(e){return ye(e)?"codex":he(e)?"claude":(Re(e),"cursor")}function Wr(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 Kr(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)||Re(n)?{lane:t,model:n,provider:Tr(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?Wr(r)??Kr(r):null}p();a();var st="kynver",Qe=["agent_os_context_envelope","agent_os_search_memory","agent_os_search_skills","agent_os_get_skill","agent_os_progress_note"],at=Qe.map(e=>`mcp__${st}__${e}`);a();a();var $a=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 hl=600*1e3;var Ze="composer-2.5";var m="cursor",dt={anthropic:"claude",opus:"claude",openai:"openai-compatible",openai_compatible:"openai-compatible","openai-compat":"openai-compatible"};function rr(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 v(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=v(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(v(e,"executorRef"));if(n?.provider&&u(n.provider)||n?.model&&u(ft(n.model)))return!0;let i=v(e,"description");if(mt.some(l=>l.test(i)))return!0;let s=v(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:Ze,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 tr(e){if(!e)return!1;let r=e.workerProviderOverride;return typeof r=="string"&&r.trim()||A(v(e,"executorRef"))?.provider?!0:ie(e)}function er(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)||tr(t)||!u(r.provider))return r;let i=r.rule&&r.rule!=="default:global"?`:${r.rule.replace(/:/g,"_")}`:"";return gt(r.model,i)}function Rt(e,r=m){let t=e?.trim();return t?rr(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 vt=/\b(npm run typecheck|tsc\b[^|&;]*--noEmit|node scripts\/verify-pr-local\.mjs|kynver (harness )?verify)\b/i,_t=/\b(npm run build\b|next build\b)\b/i,kt=/\b(vercel (build|deploy|--prod))\b/i,xt=/\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?xt.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"}:_t.test(r)?{heavy:!0,commandClass:"full_build",reason:"full app build requires heavy-verification token"}:vt.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 sr,readFileSync as Nt,statSync as Tt,unlinkSync as ar,writeFileSync as Wt}from"node:fs";import ce from"node:path";import{mkdirSync as Et}from"node:fs";import{tmpdir as Ot}from"node:os";import U from"node:path";import{homedir as St}from"node:os";import nr from"node:path";function or(){let e=process.env.KYNVER_STATE_ROOT;return e?nr.resolve(e):nr.join(St(),".kynver","state")}function Ct(){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):Ct()?U.join(Ot(),"kynver","state","heavy-verification"):U.join(or(),"heavy-verification")}function ae(){return U.join(At(),"slots")}function _(){let e=ae();return Et(e,{recursive:!0}),e}var x=120*6e4,ir=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,ir):ir}function Dt(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 lr(e,r=x){if(!e||!Y(e.pid))return!0;let t=Date.parse(e.acquiredAt);return Number.isNaN(t)?!0:Date.now()-t>r}function cr(e,r){let t=ue(e);if(t)return lr(t,r);if(!k(e))return!0;try{return Date.now()-Tt(e).mtimeMs>r}catch{return!0}}function Mt(e,r){if(cr(e,r))try{ar(e)}catch{}}function Ut(e){return Pt(e,{recursive:!0}),e}function de(e={}){let r=Ut(e.slotsDir??_()),t=e.staleMs??x,n=0;for(let i of sr(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??_(),t=e.staleMs??x;de({slotsDir:r,staleMs:t});let n=[];for(let i of sr(r)){if(!i.endsWith(".json"))continue;let s=ue(ce.join(r,i));s&&!lr(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??_(),n=r.staleMs??x,i=r.maxSlots??L();de({slotsDir:t,staleMs:n});for(let l=0;l<i;l+=1){let c=Dt(l),h=Bt(c,t),dr=ue(h);if(cr(h,n))try{ar(h)}catch{}else if(dr||k(h))continue;let pr={slotId:c,pid:process.pid,acquiredAt:new Date().toISOString(),command:e};try{let y=It(h,"wx");Wt(y,JSON.stringify(pr,null,2),"utf8"),wt(y);let mr=le({slotsDir:t,staleMs:n});return{admitted:!0,slotId:c,activeSlots:mr,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??_(),n=r.staleMs??x,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 ur(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?ur(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,Sr as auditReviewWorkerCredentialScope,_r as auditWorkerEnv,f as buildWorkerSpawnEnv,se as classifyHeavyShellCommand,er as enforceCursorWorkerProvider,$t as gateWorkerShellCommand,u as isClaudeFamilyProvider,R as isForbiddenWorkerEnvKey,Pr as isHarnessExpertReviewWorker,ge as isNoProdCredentialReviewEnvironment,pe as listForbiddenWorkerEnvKeys,me as listOperatorAllowedWorkerEnvKeys,rr as normalizeWorkerProviderName,bt as preferCursorExecutor,Rt as resolveConfiguredWorkerProvider,E as scrubWorkerEnv,ie as taskAllowsClaudeWorker,tr 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 R(e,r={}){return gr.has(e)?!0:Rr.has(e)||r.operatorAllow?.has(e)||vr.some(t=>e.endsWith(t))?!1:hr.some(t=>e.endsWith(t))}function pe(e){let r=$(e);return Object.keys(e).filter(t=>R(t,{operatorAllow:r})).sort()}function me(e){let r=$(e);return r.size===0?[]:Object.keys(e).filter(t=>r.has(t)&&!R(t,{operatorAllow:r})&&R(t)).sort()}function E(e){let r=$(e),t={...e};for(let n of Object.keys(t))R(n,{operatorAllow:r})&&delete t[n];return t}function _r(e){let r=pe(e),t=me(e);return{forbiddenPresent:r,safe:r.length===0,...t.length?{operatorAllowedActive:t}:{}}}var fr,gr,hr,yr,Rr,vr,br,O=o(()=>{"use strict";fr=["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"],gr=new Set(fr),hr=["_SECRET","_API_KEY","_KEK","_KEY","_TOKEN","_PASSWORD","_PASSPHRASE","_SALT"],yr=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY"],Rr=new Set(yr),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 q=o(()=>{"use strict";g();a();O()});var z=o(()=>{"use strict";q();g()});var d=o(()=>{"use strict"});var P=o(()=>{"use strict"});var ve=o(()=>{"use strict"});var dn,pn,J=o(()=>{"use strict";dn=25*1024*1024*1024,pn=12*1024*1024*1024});var yn,Rn,be=o(()=>{"use strict";J();yn=5*1024*1024*1024,Rn=10*1024*1024*1024});var Sn,En,X=o(()=>{"use strict";be();J();Sn=30*1024*1024*1024,En=15*1024*1024*1024});var ke=o(()=>{"use strict";a()});import Br from"node:path";var Wn,Q=o(()=>{"use strict";g();ke();Wn=Br.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 Oe=o(()=>{"use strict";ee();a()});var Ce=o(()=>{"use strict"});var Ae=o(()=>{"use strict";Ce();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 We=o(()=>{"use strict"});var re=o(()=>{"use strict"});var Ke=o(()=>{"use strict"});var De=o(()=>{"use strict";re();Ke()});var Be=o(()=>{"use strict";Ae();Ie();Ne();Te();q();We();De();re();a()});var Me=o(()=>{"use strict";Be()});var Vr,Yr,Ue=o(()=>{"use strict";ve();p();d();P();T();X();ee();Oe();Me();a();Vr=500*1024*1024,Yr=4*1024*1024*1024});var T=o(()=>{"use strict";Ue()});import{homedir as Gr}from"node:os";import qr from"node:path";var Le,te=o(()=>{"use strict";Le=qr.join(Gr(),".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 qe=o(()=>{"use strict";z();d();Ye();p();K();Ge();a();N()});import{homedir as tt,totalmem as ws}from"node:os";import oe from"node:path";var ze,Fs,Hs,$s,js,p=o(()=>{"use strict";z();g();a();d();P();T();X();K();qe();N();ze=oe.join(tt(),".kynver"),Fs=oe.join(ze,"config.json"),Hs=oe.join(ze,"credentials"),$s=500*1024*1024,js=4*1024*1024*1024});O();O();var j="KYNVER_NO_PROD_DB_CREDENTIALS",kr=["KYNVER_ENV_FILE"],xr=new Set(["1","true","yes","on"]);function ge(e){let r=e[j]?.trim().toLowerCase();return r!==void 0&&xr.has(r)}function f(e,r={}){let t=E(e);if(!r.reviewWorker)return t;let n={...t,[j]:"1"};for(let i of kr)delete n[i];return n}var fe=["DATABASE_URL","PRODUCTION_DATABASE_URL","KYNVER_PRODUCTION_DATABASE_URL"];function Sr(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 Er="expert-lane-pr-review:",Or="plan-review-task",Cr="scheduledjob:",C=new Set(["lorentz","dalton","rhea","sentinel"]);function Ar(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 wr(e,r){return e.startsWith("factory:")?e.includes("lb")||V(r):!1}function Pr(e){let r=(e.executorRef??"").toLowerCase(),t=(e.title??"").toLowerCase(),n=(e.description??"").toLowerCase(),i=`${t}
|
|
2
|
+
${n}`,s=Ar(e.personaSlug);return!!(r.startsWith(Er)||r===Or||r.startsWith("daemon-review:")||s&&C.has(s)&&(r.includes("evidence")||r.includes("validate")||r.includes("review")||wr(r,i)||V(i))||r.startsWith(Cr)&&e.parentTaskId&&s&&C.has(s)||e.planId&&!e.parentTaskId&&s&&C.has(s)&&V(i)||t.includes("expert pr review")||e.parentTaskId&&(t.startsWith("review:")||t.includes("review required")||t.includes("runtime review"))&&s&&C.has(s))}var Ir=/^claude[-_]/i,Nr=/^(?:opus|sonnet|haiku)\b/i;function he(e){let r=e.trim();return Ir.test(r)||Nr.test(r)}function ye(e){let r=e.trim().toLowerCase();return r.startsWith("gpt-")||r.startsWith("gpt5")||r.includes("codex")}function Re(e){let r=e.trim().toLowerCase();return r.includes("composer")||r.includes("cursor")}function Tr(e){return ye(e)?"codex":he(e)?"claude":(Re(e),"cursor")}function Wr(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 Kr(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)||Re(n)?{lane:t,model:n,provider:Tr(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?Wr(r)??Kr(r):null}p();a();var st="kynver",Qe=["agent_os_context_envelope","agent_os_search_memory","agent_os_search_skills","agent_os_get_skill","agent_os_progress_note"],at=Qe.map(e=>`mcp__${st}__${e}`);a();a();var $a=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 hl=600*1e3;var Ze="composer-2.5";var m="cursor",dt={anthropic:"claude",opus:"claude",openai:"openai-compatible",openai_compatible:"openai-compatible","openai-compat":"openai-compatible"};function rr(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 b(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=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=A(b(e,"executorRef"));if(n?.provider&&u(n.provider)||n?.model&&u(ft(n.model)))return!0;let i=b(e,"description");if(mt.some(l=>l.test(i)))return!0;let s=b(e,"title");return!!/\[use-claude-worker\]/i.test(s)}function 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:Ze,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 tr(e){if(!e)return!1;let r=e.workerProviderOverride;return typeof r=="string"&&r.trim()||A(b(e,"executorRef"))?.provider?!0:ie(e)}function er(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)||tr(t)||!u(r.provider))return r;let i=r.rule&&r.rule!=="default:global"?`:${r.rule.replace(/:/g,"_")}`:"";return gt(r.model,i)}function Rt(e,r=m){let t=e?.trim();return t?rr(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,_t=/\b(npm run build\b|next build\b)\b/i,kt=/\b(vercel (build|deploy|--prod))\b/i,xt=/\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?xt.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"}:_t.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 Ft}from"node:child_process";a();import{closeSync as wt,existsSync as k,mkdirSync as Pt,openSync as It,readdirSync as sr,readFileSync as Nt,statSync as Tt,unlinkSync as ar,writeFileSync as Wt}from"node:fs";import ce from"node:path";import{mkdirSync as Et}from"node:fs";import{tmpdir as Ot}from"node:os";import U from"node:path";import{homedir as St}from"node:os";import nr from"node:path";function or(){let e=process.env.KYNVER_STATE_ROOT;return e?nr.resolve(e):nr.join(St(),".kynver","state")}function Ct(){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):Ct()?U.join(Ot(),"kynver","state","heavy-verification"):U.join(or(),"heavy-verification")}function ae(){return U.join(At(),"slots")}function _(){let e=ae();return Et(e,{recursive:!0}),e}var x=120*6e4,ir=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,ir):ir}function Dt(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 lr(e,r=x){if(!e||!Y(e.pid))return!0;let t=Date.parse(e.acquiredAt);return Number.isNaN(t)?!0:Date.now()-t>r}function cr(e,r){let t=ue(e);if(t)return lr(t,r);if(!k(e))return!0;try{return Date.now()-Tt(e).mtimeMs>r}catch{return!0}}function Mt(e,r){if(cr(e,r))try{ar(e)}catch{}}function Ut(e){return Pt(e,{recursive:!0}),e}function de(e={}){let r=Ut(e.slotsDir??_()),t=e.staleMs??x,n=0;for(let i of sr(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??_(),t=e.staleMs??x;de({slotsDir:r,staleMs:t});let n=[];for(let i of sr(r)){if(!i.endsWith(".json"))continue;let s=ue(ce.join(r,i));s&&!lr(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??_(),n=r.staleMs??x,i=r.maxSlots??L();de({slotsDir:t,staleMs:n});for(let l=0;l<i;l+=1){let c=Dt(l),h=Bt(c,t),dr=ue(h);if(cr(h,n))try{ar(h)}catch{}else if(dr||k(h))continue;let pr={slotId:c,pid:process.pid,acquiredAt:new Date().toISOString(),command:e};try{let y=It(h,"wx");Wt(y,JSON.stringify(pr,null,2),"utf8"),wt(y);let mr=le({slotsDir:t,staleMs:n});return{admitted:!0,slotId:c,activeSlots:mr,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??_(),n=r.staleMs??x,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 ur(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?ur(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,Sr as auditReviewWorkerCredentialScope,_r as auditWorkerEnv,f as buildWorkerSpawnEnv,se as classifyHeavyShellCommand,er as enforceCursorWorkerProvider,$t as gateWorkerShellCommand,u as isClaudeFamilyProvider,R as isForbiddenWorkerEnvKey,Pr as isHarnessExpertReviewWorker,ge as isNoProdCredentialReviewEnvironment,pe as listForbiddenWorkerEnvKeys,me as listOperatorAllowedWorkerEnvKeys,rr as normalizeWorkerProviderName,vt as preferCursorExecutor,Rt as resolveConfiguredWorkerProvider,E as scrubWorkerEnv,ie as taskAllowsClaudeWorker,tr as taskExpressesWorkerProviderPreference};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{execFileSync as L}from"node:child_process";import{existsSync as _,readFileSync as R,readdirSync as A,statSync as
|
|
1
|
+
import{execFileSync as L}from"node:child_process";import{existsSync as _,readFileSync as R,readdirSync as A,statSync as k}from"node:fs";import S from"node:path";import{existsSync as O,readFileSync as M,statfsSync as Z}from"node:fs";var ee=25*1024*1024*1024,te=12*1024*1024*1024,d="/mnt/c";function U(){if(process.platform!=="linux")return!1;for(let e of["/proc/sys/kernel/osrelease","/proc/version"])try{if(!O(e))continue;let r=M(e,"utf8");if(/microsoft|wsl/i.test(r))return!0}catch{}return!1}var P=5*1024*1024*1024,$=10*1024*1024*1024,I=2,Y=4;function w(e,r){let s=process.env[e];if(!s)return r;let t=Number(s);return Number.isFinite(t)?t:r}function v(){let e=process.env.KYNVER_WSL_WIN_USER?.trim();if(e)return e;try{let t=L("cmd.exe",["/c","echo","%USERNAME%"],{encoding:"utf8",timeout:5e3,stdio:["ignore","pipe","ignore"]}).trim();if(t&&t!=="%USERNAME%"&&!t.includes("%"))return t}catch{}let r=process.env.USER?.trim()||process.env.LOGNAME?.trim(),s=process.env.KYNVER_WSL_HOST_MOUNT?.trim()||d;return r&&_(S.join(s,"Users",r))?r:null}function V(e={}){let r=e.crashDumpDir?.trim()||process.env.KYNVER_WSL_CRASH_DUMP_DIR?.trim();if(r)return r;let s=e.hostMount?.trim()||process.env.KYNVER_WSL_HOST_MOUNT?.trim()||d,t=e.windowsUser??v();return t?`${s.replace(/\\/g,"/").replace(/\/$/,"")}/Users/${t}/AppData/Local/Temp/wsl-crashes`:null}function K(e){let r=/^wsl-crash-\d+-(\d+)-(.+)-(\d+)\.dmp$/i.exec(e);if(!r)return{executableHint:null,signal:null,pid:null};let s=Number(r[1]),t=r[2]??"",n=Number(r[3]),o=t.split("_").filter(Boolean);return{executableHint:o.length>0?o[o.length-1]:null,signal:Number.isFinite(n)?n:null,pid:Number.isFinite(s)?s:null}}function N(){try{if(_("/proc/sys/kernel/core_pattern"))return R("/proc/sys/kernel/core_pattern","utf8").trim()}catch{}try{return L("sysctl",["-n","kernel.core_pattern"],{encoding:"utf8",timeout:2e3,stdio:["ignore","pipe","ignore"]}).trim()||null}catch{return null}}function z(e){return!!(e&&/wsl-capture-crash/i.test(e))}function G(e,r=d){let s=S.join(r,"Users",e,".wslconfig");if(!_(s))return{maxCrashDumpCount:null,crashDumpFolder:null};let t;try{t=R(s,"utf8")}catch{return null}let n=null,o=null;for(let l of t.split(/\r?\n/)){let i=l.replace(/#.*$/,"").trim();if(!i||i.startsWith("["))continue;let a=i.indexOf("=");if(a<0)continue;let c=i.slice(0,a).trim().toLowerCase(),b=i.slice(a+1).trim();if(c==="maxcrashdumpcount"){let m=Number(b);n=Number.isFinite(m)?m:null}else c==="crashdumpfolder"&&(o=b.replace(/^["']|["']$/g,"")||null)}return{maxCrashDumpCount:n,crashDumpFolder:o}}function j(e){if(!_(e))return[];let r=A(e,{withFileTypes:!0}),s=[];for(let t of r){if(!t.isFile()||!t.name.toLowerCase().endsWith(".dmp"))continue;let n=S.join(e,t.name);try{let o=k(n),l=K(t.name);s.push({name:t.name,path:n,bytes:o.size,mtimeMs:o.mtimeMs,executableHint:l.executableHint,signal:l.signal,pid:l.pid})}catch{}}return s.sort((t,n)=>n.mtimeMs-t.mtimeMs),s}function X(e={}){if(!(e.forceWsl===void 0?U():e.forceWsl))return null;let s=e.hostMount?.trim()||process.env.KYNVER_WSL_HOST_MOUNT?.trim()||d,t=e.windowsUser??v(),n=e.warnBelowBytes??w("KYNVER_WSL_CRASH_DUMP_WARN_BYTES",P),o=e.criticalBelowBytes??w("KYNVER_WSL_CRASH_DUMP_CRITICAL_BYTES",$),l=e.warnCount??w("KYNVER_WSL_CRASH_DUMP_WARN_COUNT",I),i=e.criticalCount??w("KYNVER_WSL_CRASH_DUMP_CRITICAL_COUNT",Y),a=(e.readCorePattern??N)(),c=z(a),b=null;t&&(b=(e.readWslConfig??G)(t,s));let m=b?.maxCrashDumpCount??null,h=m===-1,p=V({hostMount:s,windowsUser:t,crashDumpDir:e.crashDumpDir});if(!p)return{ok:!0,path:null,windowsUser:t,dumpCount:0,totalBytes:0,warnBelowBytes:n,criticalBelowBytes:o,warnCount:l,criticalCount:i,dumps:[],executables:[],corePattern:a,wslCaptureEnabled:c,maxCrashDumpCount:m,dumpsDisabledInWslConfig:h,reason:null,probeError:"windows_user_unresolved"};let f;try{f=(e.listDumps??j)(p)}catch(u){return{ok:!1,path:p,windowsUser:t,dumpCount:0,totalBytes:0,warnBelowBytes:n,criticalBelowBytes:o,warnCount:l,criticalCount:i,dumps:[],executables:[],corePattern:a,wslCaptureEnabled:c,maxCrashDumpCount:m,dumpsDisabledInWslConfig:h,reason:`WSL crash dump probe failed at ${p}: ${u.message}`,probeError:u.message}}let C=f.reduce((u,D)=>u+D.bytes,0),g=f.length,W=[...new Set(f.map(u=>u.executableHint).filter(u=>!!u))],x=C>=o,T=C>=n,y=g>=i,H=g>=l,E=!(x||y||T||H),B=null;if(!E){let u=x||y?"critical":"warning",D=(C/1024**3).toFixed(1),F=W.length>0?W.join(", "):"unknown";B=`WSL crash dumps ${u}: ${g} file(s), ${D} GiB at ${p} (executables: ${F}). `+q({wslCaptureEnabled:c,dumpsDisabledInWslConfig:h})}return{ok:E,path:p,windowsUser:t,dumpCount:g,totalBytes:C,warnBelowBytes:n,criticalBelowBytes:o,warnCount:l,criticalCount:i,dumps:f,executables:W,corePattern:a,wslCaptureEnabled:c,maxCrashDumpCount:m,dumpsDisabledInWslConfig:h,reason:B,probeError:null}}function q(e={}){let r=["Recovery:","1) run `kynver wsl-crashes --execute` or scripts/cleanup-wsl-crashes.ps1 to prune old .dmp files;"];return e.dumpsDisabledInWslConfig||r.push("2) add `[wsl2]\\nmaxCrashDumpCount=-1` to %USERPROFILE%/.wslconfig then `wsl --shutdown` to disable future dumps;"),e.wslCaptureEnabled&&r.push("3) investigate crashing executables (node OOM/SIGBUS often follows Windows C: pressure);"),r.push("More help: https://www.kynver.com/help."),r.join(" ")}export{X as observeWslCrashDumps,N as readKernelCorePattern};
|