@kynver-app/runtime 0.2.135 → 0.2.140
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 +135 -135
- package/dist/chat/chat-access-change-record.js +1 -1
- package/dist/chat/chat-turn-envelope.js +1 -1
- package/dist/chat/command-auth-proof.js +1 -1
- package/dist/cli.js +209 -207
- package/dist/daemon-tick-thread.js +56 -54
- package/dist/desktop-entry.js +159 -157
- package/dist/dispatch-claim-authorization.js +1 -1
- package/dist/index.js +232 -230
- package/dist/instruction-bundle/contract.js +2 -2
- package/dist/local-run-store/index.js +10 -8
- package/dist/server/cleanup.js +3 -1
- package/dist/server/default-repo.js +3 -1
- package/dist/server/dispatch-routing.js +3 -1
- package/dist/server/model-routing.js +3 -1
- package/dist/server/monitor.js +3 -1
- package/dist/server/orchestration.js +5 -3
- package/dist/server/worker-policy.js +6 -4
- package/package.json +225 -224
- package/scripts/postinstall-banner.mjs +28 -0
|
@@ -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 ie(e){let r=e[Jr];return r?new Set(r.split(/[\s,]+/).map(t=>t.trim()).filter(Boolean)):new Set}function k(e,r={}){return Vr.has(e)?!0:Gr.has(e)||r.operatorAllow?.has(e)||qr.some(t=>e.endsWith(t))?!1:jr.some(t=>e.endsWith(t))}function we(e){let r=ie(e);return Object.keys(e).filter(t=>k(t,{operatorAllow:r})).sort()}function Pe(e){let r=ie(e);return r.size===0?[]:Object.keys(e).filter(t=>r.has(t)&&!k(t,{operatorAllow:r})&&k(t)).sort()}function N(e){let r=ie(e),t={...e};for(let n of Object.keys(t))k(n,{operatorAllow:r})&&delete t[n];return t}function zr(e){let r=we(e),t=Pe(e);return{forbiddenPresent:r,safe:r.length===0,...t.length?{operatorAllowedActive:t}:{}}}var Hr,Vr,jr,Yr,Gr,qr,Jr,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"],Vr=new Set(Hr),jr=["_SECRET","_API_KEY","_KEK","_KEY","_TOKEN","_PASSWORD","_PASSPHRASE","_SALT"],Yr=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],Gr=new Set(Yr),qr=["_PUBLIC_KEY"],Jr="KYNVER_WORKER_ENV_ALLOW"});var f=o(()=>{"use strict"});var Me=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";Me()});var
|
|
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 ie(e){let r=e[Jr];return r?new Set(r.split(/[\s,]+/).map(t=>t.trim()).filter(Boolean)):new Set}function k(e,r={}){return Vr.has(e)?!0:Gr.has(e)||r.operatorAllow?.has(e)||qr.some(t=>e.endsWith(t))?!1:jr.some(t=>e.endsWith(t))}function we(e){let r=ie(e);return Object.keys(e).filter(t=>k(t,{operatorAllow:r})).sort()}function Pe(e){let r=ie(e);return r.size===0?[]:Object.keys(e).filter(t=>r.has(t)&&!k(t,{operatorAllow:r})&&k(t)).sort()}function N(e){let r=ie(e),t={...e};for(let n of Object.keys(t))k(n,{operatorAllow:r})&&delete t[n];return t}function zr(e){let r=we(e),t=Pe(e);return{forbiddenPresent:r,safe:r.length===0,...t.length?{operatorAllowedActive:t}:{}}}var Hr,Vr,jr,Yr,Gr,qr,Jr,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"],Vr=new Set(Hr),jr=["_SECRET","_API_KEY","_KEK","_KEY","_TOKEN","_PASSWORD","_PASSPHRASE","_SALT"],Yr=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],Gr=new Set(Yr),qr=["_PUBLIC_KEY"],Jr="KYNVER_WORKER_ENV_ALLOW"});var f=o(()=>{"use strict"});var Me=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";Me()});var U=o(()=>{"use strict";f();a();D()});var le=o(()=>{"use strict";U()});var ce=o(()=>{"use strict";U();f();le()});var g=o(()=>{"use strict"});var Be=o(()=>{"use strict";g()});var ue=o(()=>{"use strict";a()});var h=o(()=>{"use strict"});var L=o(()=>{"use strict"});var Ue=o(()=>{"use strict"});var mo,fo,de=o(()=>{"use strict";mo=25*1024*1024*1024,fo=12*1024*1024*1024});var _o,xo,Le=o(()=>{"use strict";de();_o=5*1024*1024*1024,xo=10*1024*1024*1024});var Co,Oo,pe=o(()=>{"use strict";Le();de();Co=30*1024*1024*1024,Oo=15*1024*1024*1024});var Fe=o(()=>{"use strict";a()});import mt from"node:path";var Ko,fe=o(()=>{"use strict";f();Fe();Ko=mt.join(".openclaw","harness")});var $=o(()=>{"use strict";y();h();L();H();fe()});var Ve=o(()=>{"use strict";y();fe();$();a()});var Y=o(()=>{"use strict";Ve();a()});var Ye=o(()=>{"use strict";Y();a()});var Ge=o(()=>{"use strict"});var qe=o(()=>{"use strict";Ge();a()});var Je=o(()=>{"use strict"});var ze=o(()=>{"use strict";Je()});var G=o(()=>{"use strict"});var q,ge,vi,E=o(()=>{"use strict";q="claude-sonnet-5-5",ge="claude-opus-5-5",vi={[q]:"claude-sonnet-4-6",[ge]:"claude-opus-4-8"}});var Xe=o(()=>{"use strict"});var Ze=o(()=>{"use strict"});var Qe=o(()=>{"use strict";ze();a();G();E();Xe();Ze()});var Mi,u=o(()=>{"use strict";Mi=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);
|
|
@@ -50,17 +50,19 @@ function finish(code, signal, spawnError) {
|
|
|
50
50
|
}
|
|
51
51
|
process.exit(code === null ? 1 : code);
|
|
52
52
|
}
|
|
53
|
+
// Handlers go in BEFORE the spawn: a worker that signals its parent right away
|
|
54
|
+
// must not catch this wrapper with the default action (dies, no exit.json).
|
|
55
|
+
for (const s of ["SIGTERM", "SIGINT", "SIGHUP"]) process.on(s, () => { try { child.kill(s); } catch {} });
|
|
53
56
|
try {
|
|
54
57
|
child = cp.spawn(cmd, args, { stdio: "inherit" });
|
|
55
58
|
} catch (e) {
|
|
56
59
|
process.stderr.write("failed to spawn worker process: " + (e && e.message) + "\n");
|
|
57
60
|
finish(127, null, String(e && e.message));
|
|
58
61
|
}
|
|
59
|
-
for (const s of ["SIGTERM", "SIGINT", "SIGHUP"]) process.on(s, () => { try { child.kill(s); } catch {} });
|
|
60
62
|
child.on("error", (e) => {
|
|
61
63
|
process.stderr.write("failed to spawn worker process: " + (e && e.message) + "\n");
|
|
62
64
|
if (!child.pid) finish(127, null, String(e && e.message));
|
|
63
65
|
});
|
|
64
66
|
child.on("exit", (code, signal) => finish(code, signal));
|
|
65
|
-
`});var er=o(()=>{"use strict";Y();a();u()});var rr=o(()=>{"use strict";G();E()});var tr=o(()=>{"use strict"});var Qi,es,nr=o(()=>{"use strict";
|
|
66
|
-
${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 Ne(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":Ne(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==="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?Ne(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 _d=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 vn,existsSync as P,mkdirSync as _n,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 dp}from"node:os";import Tr from"node:path";function Nr(){let e=process.env.KYNVER_STATE_ROOT;return e?Tr.resolve(e):Tr.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(Nr(),"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 _n(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 T(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"),vn(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=T(e,n);for(;!s.admitted&&Date.now()<i;)In(Math.min(t,i-Date.now())),s=T(e,n);return s}function Tn(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):T(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,Tn as gateWorkerShellCommand,d as isClaudeFamilyProvider,k as isForbiddenWorkerEnvKey,it as isHarnessExpertReviewWorker,Te as isNoProdCredentialReviewEnvironment,we as listForbiddenWorkerEnvKeys,Pe as listOperatorAllowedWorkerEnvKeys,S as normalizeWorkerProviderName,ln as preferCursorExecutor,an as resolveConfiguredWorkerProvider,N as scrubWorkerEnv,Re as taskAllowsClaudeWorker,ke as taskExpressesWorkerProviderPreference};
|
|
67
|
+
`});var er=o(()=>{"use strict";Y();a();u()});var rr=o(()=>{"use strict";G();E()});var tr=o(()=>{"use strict"});var Qi,es,nr=o(()=>{"use strict";U();Qi=10*6e4,es=60*6e4});var or=o(()=>{"use strict"});var he=o(()=>{"use strict"});var ir=o(()=>{"use strict"});var sr=o(()=>{"use strict";he();ir()});var ar=o(()=>{"use strict";qe();Qe();er();u();G();rr();tr();nr();or();sr();he();a()});var lr=o(()=>{"use strict";ar();a()});var Ct,Ot,cr=o(()=>{"use strict";Ue();y();h();L();H();pe();Y();Ye();lr();a();Ct=500*1024*1024,Ot=4*1024*1024*1024});var H=o(()=>{"use strict";cr()});import{homedir as At}from"node:os";import wt from"node:path";var ur,ye=o(()=>{"use strict";ur=wt.join(At(),".kynver",".env")});var dr=o(()=>{"use strict"});var pr=o(()=>{"use strict";dr()});var mr=o(()=>{"use strict"});var fr=o(()=>{"use strict";a()});var ve=o(()=>{"use strict";pr();mr();fr()});var gr=o(()=>{"use strict"});var hr=o(()=>{"use strict";gr()});var J=o(()=>{"use strict";ye();f();y();ve();hr()});var yr=o(()=>{"use strict";h();h()});var vr=o(()=>{"use strict";ye();ve();J()});var _e=o(()=>{"use strict"});var _r=o(()=>{"use strict";ce();h();yr();y();J();vr();ue();_e();$()});function S(e){let r=e.trim().toLowerCase();return Ut[r]??r}var xr,Bt,Ut,z=o(()=>{"use strict";xr=["claude","cursor","codex","gemini","gemini-api","openai-compatible"],Bt=xr.join("|"),Ut={anthropic:"claude",opus:"claude",openai:"openai-compatible",openai_compatible:"openai-compatible","openai-compat":"openai-compatible",chatgpt:"codex",gpt:"codex","openai-api":"openai-compatible",openai_api:"openai-compatible",google:"gemini",gemini_cli:"gemini",gemini_api:"gemini-api","google-api":"gemini-api",google_api:"gemini-api"}});var Rr=o(()=>{"use strict";f()});var kr=o(()=>{"use strict";Rr()});var br=o(()=>{"use strict"});var Er=o(()=>{"use strict";br()});import{homedir as Ft,totalmem as Vl}from"node:os";import xe from"node:path";var Sr,lc,cc,uc,dc,y=o(()=>{"use strict";ce();f();le();Be();ue();h();L();H();pe();J();_r();z();$();kr();_e();Er();Sr=xe.join(Ft(),".kynver"),lc=xe.join(Sr,"config.json"),cc=xe.join(Sr,"credentials"),uc=500*1024*1024,dc=4*1024*1024*1024});D();D();var se="KYNVER_NO_PROD_DB_CREDENTIALS",Xr=["KYNVER_ENV_FILE"],Zr=new Set(["1","true","yes","on"]);function Te(e){let r=e[se]?.trim().toLowerCase();return r!==void 0&&Zr.has(r)}function p(e,r={}){let t=N(e);if(!r.reviewWorker)return t;let n={...t,[se]:"1"};for(let i of Xr)delete n[i];return n}var Ie=["DATABASE_URL","PRODUCTION_DATABASE_URL","KYNVER_PRODUCTION_DATABASE_URL"];function Qr(e,r={}){let t=p(e,r),n=Object.keys(t).filter(c=>c.endsWith("_SECRET")||c.endsWith("_API_KEY")||Ie.includes(c)),i=Ie.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 et="expert-lane-pr-review:",rt="plan-review-task",tt="scheduledjob:",W=new Set(["lorentz","dalton","rhea","sentinel"]);function nt(e){if(!e)return null;let r=e.trim().toLowerCase();return r.length?r:null}function ae(e){return/\b(deep[- ]?review|plan review|review .*plan|security review|red[- ]team|lb\d+|runtime verification)\b/.test(e)}function ot(e,r){return e.startsWith("factory:")?e.includes("lb")||ae(r):!1}function it(e){let r=(e.executorRef??"").toLowerCase(),t=(e.title??"").toLowerCase(),n=(e.description??"").toLowerCase(),i=`${t}
|
|
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 Ne(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":Ne(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==="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?Ne(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 _d=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 vn,existsSync as P,mkdirSync as _n,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 dp}from"node:os";import Tr from"node:path";function Nr(){let e=process.env.KYNVER_STATE_ROOT;return e?Tr.resolve(e):Tr.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(Nr(),"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 Br(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(Br(e,r))try{Kr(e)}catch{}}function An(e){return _n(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 T(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(Br(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"),vn(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 Ur(e,r,t=2e3,n={}){let i=Date.now()+Math.max(0,r),s=T(e,n);for(;!s.admitted&&Date.now()<i;)In(Math.min(t,i-Date.now())),s=T(e,n);return s}function Tn(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?Ur(e,n,r.pollMs):T(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,Tn as gateWorkerShellCommand,d as isClaudeFamilyProvider,k as isForbiddenWorkerEnvKey,it as isHarnessExpertReviewWorker,Te as isNoProdCredentialReviewEnvironment,we as listForbiddenWorkerEnvKeys,Pe as listOperatorAllowedWorkerEnvKeys,S as normalizeWorkerProviderName,ln as preferCursorExecutor,an as resolveConfiguredWorkerProvider,N as scrubWorkerEnv,Re as taskAllowsClaudeWorker,ke as taskExpressesWorkerProviderPreference};
|
package/package.json
CHANGED
|
@@ -1,224 +1,225 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@kynver-app/runtime",
|
|
3
|
-
"version": "0.2.
|
|
4
|
-
"description": "Kynver AgentOS local execution runtime and CLI",
|
|
5
|
-
"type": "module",
|
|
6
|
-
"main": "./dist/index.js",
|
|
7
|
-
"types": "./dist/index.d.ts",
|
|
8
|
-
"bin": {
|
|
9
|
-
"kynver": "dist/cli.js"
|
|
10
|
-
},
|
|
11
|
-
"exports": {
|
|
12
|
-
".": {
|
|
13
|
-
"types": "./dist/index.d.ts",
|
|
14
|
-
"import": "./dist/index.js",
|
|
15
|
-
"default": "./dist/index.js"
|
|
16
|
-
},
|
|
17
|
-
"./desktop-entry": {
|
|
18
|
-
"types": "./dist/desktop-entry.d.ts",
|
|
19
|
-
"import": "./dist/desktop-entry.js",
|
|
20
|
-
"default": "./dist/desktop-entry.js"
|
|
21
|
-
},
|
|
22
|
-
"./local-run-store": {
|
|
23
|
-
"types": "./dist/local-run-store/index.d.ts",
|
|
24
|
-
"import": "./dist/local-run-store/index.js",
|
|
25
|
-
"default": "./dist/local-run-store/index.js"
|
|
26
|
-
},
|
|
27
|
-
"./provider-terminal-failure": {
|
|
28
|
-
"types": "./dist/provider-terminal-failure.d.ts",
|
|
29
|
-
"import": "./dist/provider-terminal-failure.js",
|
|
30
|
-
"default": "./dist/provider-terminal-failure.js"
|
|
31
|
-
},
|
|
32
|
-
"./worker-persona-catalog": {
|
|
33
|
-
"types": "./dist/worker-persona-catalog.d.ts",
|
|
34
|
-
"import": "./dist/worker-persona-catalog.js",
|
|
35
|
-
"default": "./dist/worker-persona-catalog.js"
|
|
36
|
-
},
|
|
37
|
-
"./instruction-bundle": {
|
|
38
|
-
"types": "./dist/instruction-bundle/contract.d.ts",
|
|
39
|
-
"import": "./dist/instruction-bundle/contract.js",
|
|
40
|
-
"default": "./dist/instruction-bundle/contract.js"
|
|
41
|
-
},
|
|
42
|
-
"./server/monitor": {
|
|
43
|
-
"types": "./dist/server/monitor.d.ts",
|
|
44
|
-
"import": "./dist/server/monitor.js",
|
|
45
|
-
"default": "./dist/server/monitor.js"
|
|
46
|
-
},
|
|
47
|
-
"./server/landing": {
|
|
48
|
-
"types": "./dist/server/landing.d.ts",
|
|
49
|
-
"import": "./dist/server/landing.js",
|
|
50
|
-
"default": "./dist/server/landing.js"
|
|
51
|
-
},
|
|
52
|
-
"./server/worker-policy": {
|
|
53
|
-
"types": "./dist/server/worker-policy.d.ts",
|
|
54
|
-
"import": "./dist/server/worker-policy.js",
|
|
55
|
-
"default": "./dist/server/worker-policy.js"
|
|
56
|
-
},
|
|
57
|
-
"./server/orchestration": {
|
|
58
|
-
"types": "./dist/server/orchestration.d.ts",
|
|
59
|
-
"import": "./dist/server/orchestration.js",
|
|
60
|
-
"default": "./dist/server/orchestration.js"
|
|
61
|
-
},
|
|
62
|
-
"./server/adapter-contract": {
|
|
63
|
-
"types": "./dist/server/adapter-contract.d.ts",
|
|
64
|
-
"import": "./dist/server/adapter-contract.js",
|
|
65
|
-
"default": "./dist/server/adapter-contract.js"
|
|
66
|
-
},
|
|
67
|
-
"./server/context-budget-receipt": {
|
|
68
|
-
"types": "./dist/server/context-budget-receipt.d.ts",
|
|
69
|
-
"import": "./dist/server/context-budget-receipt.js",
|
|
70
|
-
"default": "./dist/server/context-budget-receipt.js"
|
|
71
|
-
},
|
|
72
|
-
"./server/context-budget": {
|
|
73
|
-
"types": "./dist/server/context-budget.d.ts",
|
|
74
|
-
"import": "./dist/server/context-budget.js",
|
|
75
|
-
"default": "./dist/server/context-budget.js"
|
|
76
|
-
},
|
|
77
|
-
"./server/prompt": {
|
|
78
|
-
"types": "./dist/server/prompt.d.ts",
|
|
79
|
-
"import": "./dist/server/prompt.js",
|
|
80
|
-
"default": "./dist/server/prompt.js"
|
|
81
|
-
},
|
|
82
|
-
"./server/node-runtime-policy": {
|
|
83
|
-
"types": "./dist/server/node-runtime-policy.d.ts",
|
|
84
|
-
"import": "./dist/server/node-runtime-policy.js",
|
|
85
|
-
"default": "./dist/server/node-runtime-policy.js"
|
|
86
|
-
},
|
|
87
|
-
"./server/model-routing": {
|
|
88
|
-
"types": "./dist/server/model-routing.d.ts",
|
|
89
|
-
"import": "./dist/server/model-routing.js",
|
|
90
|
-
"default": "./dist/server/model-routing.js"
|
|
91
|
-
},
|
|
92
|
-
"./server/dispatch-routing": {
|
|
93
|
-
"types": "./dist/server/dispatch-routing.d.ts",
|
|
94
|
-
"import": "./dist/server/dispatch-routing.js",
|
|
95
|
-
"default": "./dist/server/dispatch-routing.js"
|
|
96
|
-
},
|
|
97
|
-
"./server/db-credentials": {
|
|
98
|
-
"types": "./dist/server/db-credentials.d.ts",
|
|
99
|
-
"import": "./dist/server/db-credentials.js",
|
|
100
|
-
"default": "./dist/server/db-credentials.js"
|
|
101
|
-
},
|
|
102
|
-
"./server/heavy-verification": {
|
|
103
|
-
"types": "./dist/server/heavy-verification.d.ts",
|
|
104
|
-
"import": "./dist/server/heavy-verification.js",
|
|
105
|
-
"default": "./dist/server/heavy-verification.js"
|
|
106
|
-
},
|
|
107
|
-
"./server/memory-cost": {
|
|
108
|
-
"types": "./dist/server/memory-cost.d.ts",
|
|
109
|
-
"import": "./dist/server/memory-cost.js",
|
|
110
|
-
"default": "./dist/server/memory-cost.js"
|
|
111
|
-
},
|
|
112
|
-
"./server/pr-evidence": {
|
|
113
|
-
"types": "./dist/server/pr-evidence.d.ts",
|
|
114
|
-
"import": "./dist/server/pr-evidence.js",
|
|
115
|
-
"default": "./dist/server/pr-evidence.js"
|
|
116
|
-
},
|
|
117
|
-
"./server/default-repo": {
|
|
118
|
-
"types": "./dist/server/default-repo.d.ts",
|
|
119
|
-
"import": "./dist/server/default-repo.js",
|
|
120
|
-
"default": "./dist/server/default-repo.js"
|
|
121
|
-
},
|
|
122
|
-
"./server/cleanup": {
|
|
123
|
-
"types": "./dist/server/cleanup.d.ts",
|
|
124
|
-
"import": "./dist/server/cleanup.js",
|
|
125
|
-
"default": "./dist/server/cleanup.js"
|
|
126
|
-
},
|
|
127
|
-
"./package.json": "./package.json",
|
|
128
|
-
"./server/repo-search": {
|
|
129
|
-
"types": "./dist/server/repo-search.d.ts",
|
|
130
|
-
"import": "./dist/server/repo-search.js",
|
|
131
|
-
"default": "./dist/server/repo-search.js"
|
|
132
|
-
},
|
|
133
|
-
"./server/harness-notice": {
|
|
134
|
-
"types": "./dist/server/harness-notice.d.ts",
|
|
135
|
-
"import": "./dist/server/harness-notice.js",
|
|
136
|
-
"default": "./dist/server/harness-notice.js"
|
|
137
|
-
},
|
|
138
|
-
"./server/memory-cost-enforce": {
|
|
139
|
-
"types": "./dist/server/memory-cost-enforce.d.ts",
|
|
140
|
-
"import": "./dist/server/memory-cost-enforce.js",
|
|
141
|
-
"default": "./dist/server/memory-cost-enforce.js"
|
|
142
|
-
},
|
|
143
|
-
"./server/wsl-crash-dumps": {
|
|
144
|
-
"types": "./dist/server/wsl-crash-dumps.d.ts",
|
|
145
|
-
"import": "./dist/server/wsl-crash-dumps.js",
|
|
146
|
-
"default": "./dist/server/wsl-crash-dumps.js"
|
|
147
|
-
},
|
|
148
|
-
"./dispatch-claim-authorization": {
|
|
149
|
-
"types": "./dist/dispatch-claim-authorization.d.ts",
|
|
150
|
-
"import": "./dist/dispatch-claim-authorization.js",
|
|
151
|
-
"default": "./dist/dispatch-claim-authorization.js"
|
|
152
|
-
},
|
|
153
|
-
"./chat/command-auth-proof": {
|
|
154
|
-
"types": "./dist/chat/command-auth-proof.d.ts",
|
|
155
|
-
"import": "./dist/chat/command-auth-proof.js",
|
|
156
|
-
"default": "./dist/chat/command-auth-proof.js"
|
|
157
|
-
},
|
|
158
|
-
"./chat/chat-turn-envelope": {
|
|
159
|
-
"types": "./dist/chat/chat-turn-envelope.d.ts",
|
|
160
|
-
"import": "./dist/chat/chat-turn-envelope.js",
|
|
161
|
-
"default": "./dist/chat/chat-turn-envelope.js"
|
|
162
|
-
},
|
|
163
|
-
"./chat/chat-access-change-record": {
|
|
164
|
-
"types": "./dist/chat/chat-access-change-record.d.ts",
|
|
165
|
-
"import": "./dist/chat/chat-access-change-record.js",
|
|
166
|
-
"default": "./dist/chat/chat-access-change-record.js"
|
|
167
|
-
},
|
|
168
|
-
"./node-runtime-policy": {
|
|
169
|
-
"types": "./dist/node-runtime-policy.d.ts",
|
|
170
|
-
"import": "./dist/node-runtime-policy.js",
|
|
171
|
-
"default": "./dist/node-runtime-policy.js"
|
|
172
|
-
},
|
|
173
|
-
"./worker-broker": {
|
|
174
|
-
"types": "./dist/worker-broker/index.d.ts",
|
|
175
|
-
"import": "./dist/worker-broker/index.js",
|
|
176
|
-
"default": "./dist/worker-broker/index.js"
|
|
177
|
-
}
|
|
178
|
-
},
|
|
179
|
-
"files": [
|
|
180
|
-
"dist/**",
|
|
181
|
-
"!dist/**/__tests__/**",
|
|
182
|
-
"!dist/**/*.map",
|
|
183
|
-
"README.md",
|
|
184
|
-
"
|
|
185
|
-
"!dist/**/*.d.ts
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
"
|
|
190
|
-
"
|
|
191
|
-
"
|
|
192
|
-
"
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
"
|
|
203
|
-
"
|
|
204
|
-
"
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
"
|
|
208
|
-
|
|
209
|
-
"
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
"
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
"
|
|
221
|
-
"
|
|
222
|
-
"
|
|
223
|
-
|
|
224
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@kynver-app/runtime",
|
|
3
|
+
"version": "0.2.140",
|
|
4
|
+
"description": "Kynver AgentOS local execution runtime and CLI",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"bin": {
|
|
9
|
+
"kynver": "dist/cli.js"
|
|
10
|
+
},
|
|
11
|
+
"exports": {
|
|
12
|
+
".": {
|
|
13
|
+
"types": "./dist/index.d.ts",
|
|
14
|
+
"import": "./dist/index.js",
|
|
15
|
+
"default": "./dist/index.js"
|
|
16
|
+
},
|
|
17
|
+
"./desktop-entry": {
|
|
18
|
+
"types": "./dist/desktop-entry.d.ts",
|
|
19
|
+
"import": "./dist/desktop-entry.js",
|
|
20
|
+
"default": "./dist/desktop-entry.js"
|
|
21
|
+
},
|
|
22
|
+
"./local-run-store": {
|
|
23
|
+
"types": "./dist/local-run-store/index.d.ts",
|
|
24
|
+
"import": "./dist/local-run-store/index.js",
|
|
25
|
+
"default": "./dist/local-run-store/index.js"
|
|
26
|
+
},
|
|
27
|
+
"./provider-terminal-failure": {
|
|
28
|
+
"types": "./dist/provider-terminal-failure.d.ts",
|
|
29
|
+
"import": "./dist/provider-terminal-failure.js",
|
|
30
|
+
"default": "./dist/provider-terminal-failure.js"
|
|
31
|
+
},
|
|
32
|
+
"./worker-persona-catalog": {
|
|
33
|
+
"types": "./dist/worker-persona-catalog.d.ts",
|
|
34
|
+
"import": "./dist/worker-persona-catalog.js",
|
|
35
|
+
"default": "./dist/worker-persona-catalog.js"
|
|
36
|
+
},
|
|
37
|
+
"./instruction-bundle": {
|
|
38
|
+
"types": "./dist/instruction-bundle/contract.d.ts",
|
|
39
|
+
"import": "./dist/instruction-bundle/contract.js",
|
|
40
|
+
"default": "./dist/instruction-bundle/contract.js"
|
|
41
|
+
},
|
|
42
|
+
"./server/monitor": {
|
|
43
|
+
"types": "./dist/server/monitor.d.ts",
|
|
44
|
+
"import": "./dist/server/monitor.js",
|
|
45
|
+
"default": "./dist/server/monitor.js"
|
|
46
|
+
},
|
|
47
|
+
"./server/landing": {
|
|
48
|
+
"types": "./dist/server/landing.d.ts",
|
|
49
|
+
"import": "./dist/server/landing.js",
|
|
50
|
+
"default": "./dist/server/landing.js"
|
|
51
|
+
},
|
|
52
|
+
"./server/worker-policy": {
|
|
53
|
+
"types": "./dist/server/worker-policy.d.ts",
|
|
54
|
+
"import": "./dist/server/worker-policy.js",
|
|
55
|
+
"default": "./dist/server/worker-policy.js"
|
|
56
|
+
},
|
|
57
|
+
"./server/orchestration": {
|
|
58
|
+
"types": "./dist/server/orchestration.d.ts",
|
|
59
|
+
"import": "./dist/server/orchestration.js",
|
|
60
|
+
"default": "./dist/server/orchestration.js"
|
|
61
|
+
},
|
|
62
|
+
"./server/adapter-contract": {
|
|
63
|
+
"types": "./dist/server/adapter-contract.d.ts",
|
|
64
|
+
"import": "./dist/server/adapter-contract.js",
|
|
65
|
+
"default": "./dist/server/adapter-contract.js"
|
|
66
|
+
},
|
|
67
|
+
"./server/context-budget-receipt": {
|
|
68
|
+
"types": "./dist/server/context-budget-receipt.d.ts",
|
|
69
|
+
"import": "./dist/server/context-budget-receipt.js",
|
|
70
|
+
"default": "./dist/server/context-budget-receipt.js"
|
|
71
|
+
},
|
|
72
|
+
"./server/context-budget": {
|
|
73
|
+
"types": "./dist/server/context-budget.d.ts",
|
|
74
|
+
"import": "./dist/server/context-budget.js",
|
|
75
|
+
"default": "./dist/server/context-budget.js"
|
|
76
|
+
},
|
|
77
|
+
"./server/prompt": {
|
|
78
|
+
"types": "./dist/server/prompt.d.ts",
|
|
79
|
+
"import": "./dist/server/prompt.js",
|
|
80
|
+
"default": "./dist/server/prompt.js"
|
|
81
|
+
},
|
|
82
|
+
"./server/node-runtime-policy": {
|
|
83
|
+
"types": "./dist/server/node-runtime-policy.d.ts",
|
|
84
|
+
"import": "./dist/server/node-runtime-policy.js",
|
|
85
|
+
"default": "./dist/server/node-runtime-policy.js"
|
|
86
|
+
},
|
|
87
|
+
"./server/model-routing": {
|
|
88
|
+
"types": "./dist/server/model-routing.d.ts",
|
|
89
|
+
"import": "./dist/server/model-routing.js",
|
|
90
|
+
"default": "./dist/server/model-routing.js"
|
|
91
|
+
},
|
|
92
|
+
"./server/dispatch-routing": {
|
|
93
|
+
"types": "./dist/server/dispatch-routing.d.ts",
|
|
94
|
+
"import": "./dist/server/dispatch-routing.js",
|
|
95
|
+
"default": "./dist/server/dispatch-routing.js"
|
|
96
|
+
},
|
|
97
|
+
"./server/db-credentials": {
|
|
98
|
+
"types": "./dist/server/db-credentials.d.ts",
|
|
99
|
+
"import": "./dist/server/db-credentials.js",
|
|
100
|
+
"default": "./dist/server/db-credentials.js"
|
|
101
|
+
},
|
|
102
|
+
"./server/heavy-verification": {
|
|
103
|
+
"types": "./dist/server/heavy-verification.d.ts",
|
|
104
|
+
"import": "./dist/server/heavy-verification.js",
|
|
105
|
+
"default": "./dist/server/heavy-verification.js"
|
|
106
|
+
},
|
|
107
|
+
"./server/memory-cost": {
|
|
108
|
+
"types": "./dist/server/memory-cost.d.ts",
|
|
109
|
+
"import": "./dist/server/memory-cost.js",
|
|
110
|
+
"default": "./dist/server/memory-cost.js"
|
|
111
|
+
},
|
|
112
|
+
"./server/pr-evidence": {
|
|
113
|
+
"types": "./dist/server/pr-evidence.d.ts",
|
|
114
|
+
"import": "./dist/server/pr-evidence.js",
|
|
115
|
+
"default": "./dist/server/pr-evidence.js"
|
|
116
|
+
},
|
|
117
|
+
"./server/default-repo": {
|
|
118
|
+
"types": "./dist/server/default-repo.d.ts",
|
|
119
|
+
"import": "./dist/server/default-repo.js",
|
|
120
|
+
"default": "./dist/server/default-repo.js"
|
|
121
|
+
},
|
|
122
|
+
"./server/cleanup": {
|
|
123
|
+
"types": "./dist/server/cleanup.d.ts",
|
|
124
|
+
"import": "./dist/server/cleanup.js",
|
|
125
|
+
"default": "./dist/server/cleanup.js"
|
|
126
|
+
},
|
|
127
|
+
"./package.json": "./package.json",
|
|
128
|
+
"./server/repo-search": {
|
|
129
|
+
"types": "./dist/server/repo-search.d.ts",
|
|
130
|
+
"import": "./dist/server/repo-search.js",
|
|
131
|
+
"default": "./dist/server/repo-search.js"
|
|
132
|
+
},
|
|
133
|
+
"./server/harness-notice": {
|
|
134
|
+
"types": "./dist/server/harness-notice.d.ts",
|
|
135
|
+
"import": "./dist/server/harness-notice.js",
|
|
136
|
+
"default": "./dist/server/harness-notice.js"
|
|
137
|
+
},
|
|
138
|
+
"./server/memory-cost-enforce": {
|
|
139
|
+
"types": "./dist/server/memory-cost-enforce.d.ts",
|
|
140
|
+
"import": "./dist/server/memory-cost-enforce.js",
|
|
141
|
+
"default": "./dist/server/memory-cost-enforce.js"
|
|
142
|
+
},
|
|
143
|
+
"./server/wsl-crash-dumps": {
|
|
144
|
+
"types": "./dist/server/wsl-crash-dumps.d.ts",
|
|
145
|
+
"import": "./dist/server/wsl-crash-dumps.js",
|
|
146
|
+
"default": "./dist/server/wsl-crash-dumps.js"
|
|
147
|
+
},
|
|
148
|
+
"./dispatch-claim-authorization": {
|
|
149
|
+
"types": "./dist/dispatch-claim-authorization.d.ts",
|
|
150
|
+
"import": "./dist/dispatch-claim-authorization.js",
|
|
151
|
+
"default": "./dist/dispatch-claim-authorization.js"
|
|
152
|
+
},
|
|
153
|
+
"./chat/command-auth-proof": {
|
|
154
|
+
"types": "./dist/chat/command-auth-proof.d.ts",
|
|
155
|
+
"import": "./dist/chat/command-auth-proof.js",
|
|
156
|
+
"default": "./dist/chat/command-auth-proof.js"
|
|
157
|
+
},
|
|
158
|
+
"./chat/chat-turn-envelope": {
|
|
159
|
+
"types": "./dist/chat/chat-turn-envelope.d.ts",
|
|
160
|
+
"import": "./dist/chat/chat-turn-envelope.js",
|
|
161
|
+
"default": "./dist/chat/chat-turn-envelope.js"
|
|
162
|
+
},
|
|
163
|
+
"./chat/chat-access-change-record": {
|
|
164
|
+
"types": "./dist/chat/chat-access-change-record.d.ts",
|
|
165
|
+
"import": "./dist/chat/chat-access-change-record.js",
|
|
166
|
+
"default": "./dist/chat/chat-access-change-record.js"
|
|
167
|
+
},
|
|
168
|
+
"./node-runtime-policy": {
|
|
169
|
+
"types": "./dist/node-runtime-policy.d.ts",
|
|
170
|
+
"import": "./dist/node-runtime-policy.js",
|
|
171
|
+
"default": "./dist/node-runtime-policy.js"
|
|
172
|
+
},
|
|
173
|
+
"./worker-broker": {
|
|
174
|
+
"types": "./dist/worker-broker/index.d.ts",
|
|
175
|
+
"import": "./dist/worker-broker/index.js",
|
|
176
|
+
"default": "./dist/worker-broker/index.js"
|
|
177
|
+
}
|
|
178
|
+
},
|
|
179
|
+
"files": [
|
|
180
|
+
"dist/**",
|
|
181
|
+
"!dist/**/__tests__/**",
|
|
182
|
+
"!dist/**/*.map",
|
|
183
|
+
"README.md",
|
|
184
|
+
"scripts/postinstall-banner.mjs",
|
|
185
|
+
"!dist/**/*.d.ts",
|
|
186
|
+
"!dist/**/*.d.ts.map"
|
|
187
|
+
],
|
|
188
|
+
"scripts": {
|
|
189
|
+
"build": "esbuild src/provider-terminal-failure.ts src/cli.ts src/daemon-tick-thread.ts src/index.ts src/node-runtime-policy.ts src/local-run-store/index.ts src/worker-broker/index.ts src/worker-persona-catalog.ts src/instruction-bundle/contract.ts src/chat/command-auth-proof.ts src/chat/chat-turn-envelope.ts src/chat/chat-access-change-record.ts src/dispatch-claim-authorization.ts src/desktop-entry.ts src/server/monitor.ts src/server/landing.ts src/server/worker-policy.ts src/server/orchestration.ts src/server/adapter-contract.ts src/server/context-budget-receipt.ts src/server/context-budget.ts src/server/prompt.ts src/server/node-runtime-policy.ts src/server/model-routing.ts src/server/dispatch-routing.ts src/server/db-credentials.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 && node ../../scripts/package-tsc.mjs -p tsconfig.json --emitDeclarationOnly && node scripts/chmod-cli-bin.mjs",
|
|
190
|
+
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
191
|
+
"test": "vitest run --config vitest.config.ts",
|
|
192
|
+
"prepublishOnly": "node ../../scripts/npm-publish-guard.mjs && npm run build",
|
|
193
|
+
"postinstall": "node -e \"import('./scripts/postinstall-banner.mjs').catch(()=>{})\""
|
|
194
|
+
},
|
|
195
|
+
"engines": {
|
|
196
|
+
"node": ">=24.11.0"
|
|
197
|
+
},
|
|
198
|
+
"publishConfig": {
|
|
199
|
+
"access": "public"
|
|
200
|
+
},
|
|
201
|
+
"keywords": [
|
|
202
|
+
"kynver",
|
|
203
|
+
"agent-os",
|
|
204
|
+
"runtime",
|
|
205
|
+
"harness"
|
|
206
|
+
],
|
|
207
|
+
"license": "UNLICENSED",
|
|
208
|
+
"repository": {
|
|
209
|
+
"type": "git",
|
|
210
|
+
"url": "https://github.com/Totalsolutionsync/kynver-feedback.git"
|
|
211
|
+
},
|
|
212
|
+
"bugs": {
|
|
213
|
+
"url": "https://github.com/Totalsolutionsync/kynver-feedback/issues"
|
|
214
|
+
},
|
|
215
|
+
"homepage": "https://www.kynver.com/help/runtime-setup",
|
|
216
|
+
"dependencies": {
|
|
217
|
+
"@modelcontextprotocol/sdk": "^1.29.0"
|
|
218
|
+
},
|
|
219
|
+
"devDependencies": {
|
|
220
|
+
"@types/node": "^24.0.0",
|
|
221
|
+
"esbuild": "^0.28.1",
|
|
222
|
+
"typescript": "^5.6.3",
|
|
223
|
+
"vitest": "^4.1.9"
|
|
224
|
+
}
|
|
225
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// Postinstall orientation banner for `npm install -g @kynver-app/runtime`.
|
|
3
|
+
//
|
|
4
|
+
// Five lines pointing a fresh install at the golden path (bootstrap → start),
|
|
5
|
+
// the health check, and the access note. Deliberately boring and safe:
|
|
6
|
+
// - silent whenever CI is set or stdout is not an interactive TTY
|
|
7
|
+
// - never exits nonzero (a banner must never fail an npm install)
|
|
8
|
+
//
|
|
9
|
+
// NOT wired into package.json here — the release orchestrator adds the
|
|
10
|
+
// `postinstall` script entry.
|
|
11
|
+
|
|
12
|
+
try {
|
|
13
|
+
if (!process.env.CI && process.stdout.isTTY) {
|
|
14
|
+
process.stdout.write(
|
|
15
|
+
[
|
|
16
|
+
"@kynver-app/runtime installed — bring your own box online:",
|
|
17
|
+
" 1. kynver bootstrap --api-base-url https://www.kynver.com (link this machine)",
|
|
18
|
+
" 2. kynver start (agent comes online; Ctrl-C stops it)",
|
|
19
|
+
"Health check: kynver doctor runner-install",
|
|
20
|
+
"Note: Agentic OS access is admin-approved — request it at https://www.kynver.com/agent-os/early-access",
|
|
21
|
+
"",
|
|
22
|
+
].join("\n"),
|
|
23
|
+
);
|
|
24
|
+
}
|
|
25
|
+
} catch {
|
|
26
|
+
// Never let the banner break an install.
|
|
27
|
+
}
|
|
28
|
+
process.exitCode = 0;
|