@kynver-app/runtime 0.2.19 → 0.2.23

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.
@@ -7,5 +7,11 @@ export declare function classifyChecks(statusCheckRollup: unknown[] | undefined)
7
7
  failed: string[];
8
8
  ignoredActions: string[];
9
9
  };
10
+ /**
11
+ * LEGACY (Vercel decommissioned 2026-08): no check named `vercel*` appears on
12
+ * current PRs, so this always returns false post-cutover. Retained so landing
13
+ * evidence for pre-cutover PRs still classifies; callers treat it as one
14
+ * optional evidence source among several.
15
+ */
10
16
  export declare function vercelCheckSuccess(statusCheckRollup: unknown[] | undefined): boolean;
11
17
  export declare function mergeStateReadinessError(mergeStateStatus: string, checks: ReturnType<typeof classifyChecks>): string | null;
@@ -5,4 +5,3 @@ export * from "./collect.js";
5
5
  export * from "./wanted-store.js";
6
6
  export * from "./shared-cache.js";
7
7
  export * from "./recipes-github.js";
8
- export * from "./recipes-vercel.js";
@@ -18,7 +18,7 @@ export interface SchedulerCutoverReport {
18
18
  deploymentSteps: string[];
19
19
  runnerSteps: string[];
20
20
  }
21
- export declare const DEPLOYMENT_SCHEDULER_CUTOVER_STEPS: readonly ["Vercel/hosted: set KYNVER_SCHEDULER_PROVIDER=qstash", "Vercel/hosted: ensure QSTASH_TOKEN (and QStash signing keys) are configured", "Vercel/hosted: unset OPENCLAW_CRON_STORE_PATH if present"];
21
+ export declare const DEPLOYMENT_SCHEDULER_CUTOVER_STEPS: readonly ["Railway/hosted: set KYNVER_SCHEDULER_PROVIDER=qstash", "Railway/hosted: ensure QSTASH_TOKEN (and QStash signing keys) are configured", "Railway/hosted: unset OPENCLAW_CRON_STORE_PATH if present"];
22
22
  export declare const RUNNER_SCHEDULER_CUTOVER_STEPS: readonly ["User runner: unset KYNVER_SCHEDULER_PROVIDER (scheduling is deployment-owned)", "User runner: unset OPENCLAW_CRON_STORE_PATH, OPENCLAW_CRON_SECRET, OPENCLAW_CRON_FIRE_BASE_URL", "User runner: after deployment cutover, run `kynver scheduler attest-cutover` (or set deploymentSchedulerProvider to \"qstash\" in ~/.kynver/config.json)", "Verify: kynver doctor runtime-takeover — hotspot_openclaw_scheduler should pass"];
23
23
  export declare function readSchedulerCutoverEnv(env?: NodeJS.ProcessEnv): SchedulerCutoverEnvSnapshot;
24
24
  export declare function assessSchedulerCutover(config: Pick<KynverUserConfig, "deploymentSchedulerProvider">, env?: SchedulerCutoverEnvSnapshot): SchedulerCutoverReport;
@@ -0,0 +1 @@
1
+ export { getAdapterContextContract, listAdapterContextContracts, type AdapterContextCapability, type AdapterContextContract, type AdapterContextContractId, } from "../orchestration-providers/adapter-contract.js";
@@ -0,0 +1 @@
1
+ var o={"kynver-harness":{adapterId:"kynver-harness",displayName:"Kynver Harness (native)",capabilities:["instruction_policy","persona_context","memory_quality_capture","context_envelope_goal","context_envelope_plan","context_envelope_task","context_envelope_memories","context_envelope_persona"],requiredCapabilities:[],compatibilityNotes:"Context injected via SYSTEM prompt block (buildPrompt). instruction_policy and persona_context are rendered as markdown sections before the task block. context_envelope_* fields (goal/plan/task/memories/persona) are available for dispatch-time injection into the task description \u2014 parity with hermes for shared envelope fields. memory_quality_capture feeds the MARM P7 runtime prompt block."},hermes:{adapterId:"hermes",displayName:"Hermes Forge CLI",capabilities:["context_envelope_goal","context_envelope_plan","context_envelope_task","context_envelope_memories","context_envelope_persona"],requiredCapabilities:[],compatibilityNotes:"External CLI adapter. Context delivered via --context flag or stdin JSON envelope. Does not receive instruction_policy or persona_context / memory_quality_capture (MARM-internal). kynver-harness is the Kynver-native equivalent and covers all hermes capabilities plus richer local context."},cursor:{adapterId:"cursor",displayName:"Cursor / Composer",capabilities:["instruction_policy","persona_context","context_envelope_goal","context_envelope_plan","context_envelope_task","context_envelope_memories"],requiredCapabilities:[],compatibilityNotes:"Context injected via SYSTEM prompt block. Cursor does not receive context_envelope_sessions (no standard block for session history). context_envelope_persona is not forwarded (persona block is absorbed into persona_context markdown)."},codex:{adapterId:"codex",displayName:"Codex (BYO OAuth / Hermes openai-codex)",capabilities:["instruction_policy","context_envelope_goal","context_envelope_plan","context_envelope_task","context_envelope_memories"],requiredCapabilities:[],compatibilityNotes:"Context injected via --instructions flag or system prompt. persona_context not forwarded (Codex has no persona-aware memory lane). memory_quality_capture not surfaced (no MARM completion verification hook on Codex path). context_envelope_sessions and context_envelope_persona omitted."},claude:{adapterId:"claude",displayName:"Claude Code CLI",capabilities:["instruction_policy","persona_context","memory_quality_capture","context_envelope_goal","context_envelope_plan","context_envelope_task","context_envelope_memories","context_envelope_sessions","context_envelope_persona"],requiredCapabilities:[],compatibilityNotes:"Full context injection via SYSTEM prompt block. Supports all capabilities including session summaries and the full persona block. Equivalent to kynver-harness in capability coverage."}};function n(e){let t=o[e];return t||{adapterId:e,displayName:`Unknown adapter (${e})`,capabilities:[],requiredCapabilities:[],compatibilityNotes:"Unknown adapter \u2014 no context-envelope routing performed."}}function a(){return Object.values(o)}export{n as getAdapterContextContract,a as listAdapterContextContracts};
@@ -0,0 +1,2 @@
1
+ export { RUNTIME_CONTEXT_BUDGET_RECEIPT_SCHEMA_VERSION, RUNTIME_CONTEXT_BUDGET_RECEIPT_V2_SCHEMA_VERSION, buildContextBudgetReceiptV2, estimateTokensFromChars, finalizeReceiptTotals, isRuntimeContextBudgetReceiptV2, sectionReceiptFromMarkdown, upgradeReceiptToV2, type BuildContextBudgetReceiptV2Input, type ContextBudgetReceiptSurface, type ContextEnvelopeMode, type RuntimeContextActiveStateLookup, type RuntimeContextActiveStateLookupKind, type RuntimeContextActiveStateLookupStatus, type RuntimeContextBudgetReceipt, type RuntimeContextBudgetReceiptSchemaVersion, type RuntimeContextBudgetReceiptV2, type RuntimeContextRehydrationKind, type RuntimeContextRehydrationRoute, type RuntimeContextSection, type RuntimeContextSectionReceipt, type UsefulContextCoverage, } from "../context-budget-receipt.js";
2
+ export { MEMORY_LANE_PREVIEW_CHARS, buildChatMemoryShadowPreview, buildLegacyChatMemorySection, chatMemoriesToPreviewItems, formatContextPreviewMemoryBlock, type ContextPreviewBlockInput, type ContextPreviewMemoryItem, } from "../context-preview/chat-memory-preview.js";
@@ -0,0 +1,6 @@
1
+ var C="runtime-context-budget-receipt.v1",u="runtime-context-budget-receipt.v2";function l(e){return!Number.isFinite(e)||e<=0?0:Math.ceil(e/4)}function R(e,t,n){let o=t?.length??0;return{section:e,chars:o,estimatedTokens:l(o),...n}}function c(e,t){let n=e.reduce((i,r)=>i+r.chars,0),o=e.reduce((i,r)=>i+r.estimatedTokens,0),s=e.reduce((i,r)=>i+(r.omittedCount??0),0),a=e.reduce((i,r)=>i+(r.duplicatesCollapsed??0),0);return{totalChars:n,estimatedTokens:o,duplicatesCollapsed:t?.duplicatesCollapsed??a,omittedCount:t?.omittedCount??s}}function d(e){let t=c(e.sections,{duplicatesCollapsed:e.duplicatesCollapsed,omittedCount:e.omittedCount});return{schemaVersion:u,surface:e.surface,agentOsId:e.agentOsId?.trim()||null,taskId:e.taskId?.trim()||null,planId:e.planId?.trim()||null,personaSlug:e.personaSlug?.trim().toLowerCase()||null,mode:e.mode,generatedAt:e.generatedAt,...t,finalSerializedChars:e.finalSerializedChars,finalSerializedTokens:l(e.finalSerializedChars),usefulContextCoverage:e.usefulContextCoverage,budgetSatisfied:e.budgetSatisfied??!0,overBudgetReason:e.overBudgetReason??null,activeStateLookups:e.activeStateLookups??[],sections:e.sections}}function g(e,t){return d({surface:t.surface,agentOsId:t.agentOsId??e.agentOsId,taskId:t.taskId??e.taskId,planId:t.planId??e.planId,personaSlug:t.personaSlug??e.personaSlug,mode:t.mode??e.mode,generatedAt:t.generatedAt??e.generatedAt,finalSerializedChars:t.finalSerializedChars,sections:e.sections,usefulContextCoverage:t.usefulContextCoverage,activeStateLookups:t.activeStateLookups??e.activeStateLookups,duplicatesCollapsed:t.duplicatesCollapsed??e.duplicatesCollapsed,omittedCount:t.omittedCount??e.omittedCount,budgetSatisfied:t.budgetSatisfied,overBudgetReason:t.overBudgetReason})}function x(e){return e.schemaVersion===u}var S=160,f="agent_os_search_memory";function _(e,t){let n=e.trim();return n.length<=t?n:`${n.slice(0,Math.max(0,t-1))}\u2026`}function p(e){let t=e.previewCharsPerItem??160,n=[`## ${e.sectionTitle} (preview)`,""];if(e.items.length===0)return n.push(e.emptyFallback??"None selected. Use search_memory or authorized expansion routes for deeper context."),n.join(`
2
+ `).trim();for(let o of e.items){let s=o.selectedBecause?` \xB7 ${o.selectedBecause}`:"",a=o.trust?` [${o.trust}]`:"",i=o.lane?` (${o.lane})`:"";n.push(`- **${o.slug}**${a}${i}${s}`),n.push(` ${_(o.contentPreview,t)}`),o.expansionRoute&&n.push(` _(expand: ${o.expansionRoute})_`)}return n.push("","Preview-only injection \u2014 full bodies require explicit expansion."),n.join(`
3
+ `).trim()}function m(e){return e.map((t,n)=>({slug:`recalled-${n+1}`,lane:null,trust:null,contentPreview:t.content,selectedBecause:"relevant_match",expansionRoute:`${f}({ query: "<topic>" })`,expandable:t.content.length>160}))}function E(e){return e.length>0?`## Retrieved Memories
4
+ ${e.map(t=>`- ${t.content}`).join(`
5
+ `)}`:`## Retrieved Memories
6
+ None retrieved. Use search_memory to look up specific topics.`}function I(e){return p({sectionTitle:"Retrieved Memories",items:m(e),emptyFallback:"None retrieved. Use search_memory to look up specific topics."})}export{S as MEMORY_LANE_PREVIEW_CHARS,C as RUNTIME_CONTEXT_BUDGET_RECEIPT_SCHEMA_VERSION,u as RUNTIME_CONTEXT_BUDGET_RECEIPT_V2_SCHEMA_VERSION,I as buildChatMemoryShadowPreview,d as buildContextBudgetReceiptV2,E as buildLegacyChatMemorySection,m as chatMemoriesToPreviewItems,l as estimateTokensFromChars,c as finalizeReceiptTotals,p as formatContextPreviewMemoryBlock,x as isRuntimeContextBudgetReceiptV2,R as sectionReceiptFromMarkdown,g as upgradeReceiptToV2};
@@ -0,0 +1 @@
1
+ export { resolveProductionDatabaseUrl, type DbCredentialFailure, type DbCredentialResolution, type DbCredentialSource, type ResolveProductionDatabaseOptions, type ResolveProductionDatabaseResult, } from "../db-credential-resolver.js";
@@ -0,0 +1,2 @@
1
+ import{execFileSync as m,spawnSync as I}from"node:child_process";import*as R from"node:fs";import*as v from"node:path";import*as u from"node:fs";import{homedir as O}from"node:os";import*as c from"node:path";function P(e){return e.startsWith("~/")?c.join(O(),e.slice(2)):e}function p(e={}){let n=e.env??process.env,o=e.cwd??process.cwd(),r=e.homeDir??(n.HOME?.trim()||n.USERPROFILE?.trim()||O()),t=new Set,s=[],l=E=>{let i=c.resolve(P(E));t.has(i)||(t.add(i),s.push(i))},d=n.KYNVER_ENV_FILE?.trim();d&&l(d);let _=o;for(let E=0;E<12;E+=1){l(c.join(_,".env"));let i=c.dirname(_);if(i===_)break;_=i}l(c.join(r,".kynver",".env"));try{let E=c.join(r,".kynver","config.json");if(u.existsSync(E)){let A=JSON.parse(u.readFileSync(E,"utf8")).defaultRepo?.trim();A&&l(c.join(A,".env"))}}catch{}return s}function N(e){if(!e?.trim())return"(not set)";try{let n=new URL(e),o=(n.pathname||"").replace(/^\//,"").split("?")[0]||"(no database name)";return`${n.hostname} / ${o}`}catch{return"(invalid URL)"}}var b=["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"],k=new Set(b);var T=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN"],B=new Set(T);var K="KYNVER_NO_PROD_DB_CREDENTIALS";var C=new Set(["1","true","yes","on"]);function D(e){let n=e[K]?.trim().toLowerCase();return n!==void 0&&C.has(n)}var f=["KYNVER_PRODUCTION_DATABASE_URL","PRODUCTION_DATABASE_URL"],S=[...f];function a(e,n){return e[n]?.trim()||void 0}function h(e){if(!R.existsSync(e))return{};let n={},o=new Set(S);for(let r of R.readFileSync(e,"utf8").split(`
2
+ `)){let t=r.match(/^\s*([A-Za-z_][A-Za-z0-9_]*)\s*=\s*(.*)$/);if(!t||!o.has(t[1]))continue;let s=t[1];n[s]=t[2].replace(/^["']|["']$/g,"").trim()}return n}function g(e){for(let n of f){let o=a(e,n);if(o)return{ok:!0,databaseUrl:o,source:`env:${n}`,hint:N(o)}}return null}function Y(e,n){for(let o of p({cwd:e,env:n})){let r=h(o);for(let t of S){let s=r[t]?.trim();if(s)return{ok:!0,databaseUrl:s,source:`env-file:${t}`,hint:`${N(s)} (${v.basename(o)})`}}}return null}function L(e){let n=process.platform==="win32"?"neon.cmd":"neon",o=["connection-string",e.branch,"--prisma","-o","json","--no-color","--no-analytics"];e.projectId&&o.push("--project-id",e.projectId),e.databaseName&&o.push("--database-name",e.databaseName),e.roleName&&o.push("--role-name",e.roleName),e.pooled&&o.push("--pooled");let r;try{let t=I(n,o,{encoding:"utf8",env:process.env,timeout:3e4});if(t.status!==0)return null;r=(t.stdout||"").trim()}catch{try{r=m("neonctl",o,{encoding:"utf8",env:process.env,timeout:3e4}).trim()}catch{return null}}if(!r)return null;try{let t=JSON.parse(r),s=typeof t.connection_uri=="string"&&t.connection_uri||typeof t.connection_string=="string"&&t.connection_string||typeof t.connectionString=="string"&&t.connectionString;if(s)return s}catch{}return/^postgres(ql)?:\/\//i.test(r)?r:null}function w(e,n){let o=a(e,"KYNVER_NEON_BRANCH")||a(e,"NEON_BRANCH")||"production",r=n({branch:o,projectId:a(e,"KYNVER_NEON_PROJECT_ID")||a(e,"NEON_PROJECT_ID"),databaseName:a(e,"KYNVER_NEON_DATABASE_NAME")||a(e,"NEON_DATABASE_NAME"),roleName:a(e,"KYNVER_NEON_ROLE_NAME")||a(e,"NEON_ROLE_NAME"),pooled:a(e,"KYNVER_NEON_POOLED")==="1"||a(e,"NEON_POOLED")==="1"});return r?{ok:!0,databaseUrl:r,source:"neon-cli",hint:N(r)}:null}function U(e={}){let n=e.env??process.env;if(D(n))return{ok:!1,reason:"Production database credentials are blocked in this harness worker (KYNVER_NO_PROD_DB_CREDENTIALS). Review workers must use scoped AgentOS APIs \u2014 not direct prod DB access.",attempted:[]};let o=e.cwd??process.cwd(),r=e.neonConnectionString??L,t=[],s=p({cwd:o,env:n}),l=w(n,r);if(t.push("neon-cli"),l)return l;for(let i of f)t.push(`env:${i}`);let d=g(n);if(d)return d;for(let i of S)t.push(`env-file:${i}`);let _=Y(o,n);return _||{ok:!1,reason:"No production database credentials found. Authenticate Neon CLI (`neon auth`), set KYNVER_NEON_* / NEON_* project hints, or provide PRODUCTION_DATABASE_URL / KYNVER_PRODUCTION_DATABASE_URL (process env, KYNVER_ENV_FILE, ~/.kynver/.env, or selective .env keys in the repo / defaultRepo checkout)."+(s.length>0?` Searched env files: ${s.slice(0,6).join(", ")}${s.length>6?"\u2026":""}.`:""),attempted:t}}export{U as resolveProductionDatabaseUrl};
@@ -1 +1 @@
1
- import{closeSync as Y,existsSync as l,mkdirSync as $,openSync as L,readdirSync as C,readFileSync as U,statSync as F,unlinkSync as b,writeFileSync as W}from"node:fs";import v from"node:path";function A(e){if(!e)return!1;try{return process.kill(e,0),!0}catch{return!1}}import{mkdirSync as D}from"node:fs";import{tmpdir as K}from"node:os";import d from"node:path";import{homedir as T}from"node:os";import h from"node:path";function k(){let e=process.env.KYNVER_STATE_ROOT;return e?h.resolve(e):h.join(T(),".kynver","state")}function H(){return!!(process.env.VERCEL||process.env.VERCEL_ENV||process.env.AWS_LAMBDA_FUNCTION_NAME||process.env.AWS_EXECUTION_ENV)}function G(){let e=process.env.KYNVER_HEAVY_VERIFICATION_STATE_ROOT;return e?d.resolve(e):H()?d.join(K(),"kynver","state","heavy-verification"):d.join(k(),"heavy-verification")}function y(){return d.join(G(),"slots")}function u(){let e=y();return D(e,{recursive:!0}),e}var f=120*6e4,x=1;function j(e,r){let t=Number(e);return!Number.isFinite(t)||t<=0?r:Math.floor(t)}function S(){let e=process.env.KYNVER_HEAVY_VERIFICATION_SKIP?.trim().toLowerCase();return e==="1"||e==="true"||e==="yes"}function p(){let e=process.env.KYNVER_HEAVY_VERIFICATION_MAX_CONCURRENT;return e?j(e,x):x}function B(e){return`slot-${e}`}function J(e,r=y()){return v.join(r,`${e}.json`)}function E(e){if(!l(e))return null;try{let r=JSON.parse(U(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 O(e,r=f){if(!e||!A(e.pid))return!0;let t=Date.parse(e.acquiredAt);return Number.isNaN(t)?!0:Date.now()-t>r}function N(e,r){let t=E(e);if(t)return O(t,r);if(!l(e))return!0;try{return Date.now()-F(e).mtimeMs>r}catch{return!0}}function X(e,r){if(N(e,r))try{b(e)}catch{}}function q(e){return $(e,{recursive:!0}),e}function _(e={}){let r=q(e.slotsDir??u()),t=e.staleMs??f,o=0;for(let n of C(r)){if(!n.endsWith(".json"))continue;let s=v.join(r,n),i=l(s);X(s,t),i&&!l(s)&&(o+=1)}return o}function z(e={}){let r=e.slotsDir??u(),t=e.staleMs??f;_({slotsDir:r,staleMs:t});let o=[];for(let n of C(r)){if(!n.endsWith(".json"))continue;let s=E(v.join(r,n));s&&!O(s,t)&&o.push(s)}return o}function m(e={}){return z(e).length}function R(e,r={}){if(S())return{admitted:!0,slotId:null,activeSlots:0,maxSlots:p(),reason:null};let t=r.slotsDir??u(),o=r.staleMs??f,n=r.maxSlots??p();_({slotsDir:t,staleMs:o});for(let i=0;i<n;i+=1){let g=B(i),a=J(g,t),P=E(a);if(N(a,o))try{b(a)}catch{}else if(P||l(a))continue;let w={slotId:g,pid:process.pid,acquiredAt:new Date().toISOString(),command:e};try{let c=L(a,"wx");W(c,JSON.stringify(w,null,2),"utf8"),Y(c);let I=m({slotsDir:t,staleMs:o});return{admitted:!0,slotId:g,activeSlots:I,maxSlots:n,reason:null}}catch(c){if(c.code==="EEXIST")continue;throw c}}let s=m({slotsDir:t,staleMs:o});return{admitted:!1,slotId:null,activeSlots:s,maxSlots:n,reason:`heavy verification at capacity (${s}/${n} slots)`}}function V(e,r={}){if(S())return{admitted:!0,slotId:null,activeSlots:0,maxSlots:p(),reason:null};let t=r.slotsDir??u(),o=r.staleMs??f,n=r.maxSlots??p();_({slotsDir:t,staleMs:o});let s=m({slotsDir:t,staleMs:o}),i=s<n;return{admitted:i,slotId:null,activeSlots:s,maxSlots:n,reason:i?null:`heavy verification at capacity (${s}/${n} slots); waiting for ${e}`}}import{spawnSync as Q}from"node:child_process";function Z(e){e<=0||Q(process.execPath,["-e",`const d=Date.now()+${Math.floor(e)};while(Date.now()<d);`],{stdio:"ignore"})}function ee(e,r,t=2e3,o={}){let n=Date.now()+Math.max(0,r),s=R(e,o);for(;!s.admitted&&Date.now()<n;)Z(Math.min(t,n-Date.now())),s=R(e,o);return s}var re=["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"],Ae=new Set(re);var te=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN"],he=new Set(te);var ne={"@kynver-app/runtime":"0.1.83","@kynver-app/openclaw-agent-os":"0.1.43","@kynver-app/mcp-agent-os":"0.3.34"},Ye=Object.keys(ne);function M(e){let r=e.trim().split("-")[0]?.split("+")[0];if(!r)return null;let t=r.split(".");if(t.length<1||t.length>3)return null;let o=t.map(n=>Number.parseInt(n,10));if(o.some(n=>!Number.isFinite(n)||n<0))return null;for(;o.length<3;)o.push(0);return[o[0],o[1],o[2]]}function oe(e,r){let t=M(e),o=M(r);if(!t||!o)return 0;for(let n=0;n<3;n+=1){if(t[n]>o[n])return 1;if(t[n]<o[n])return-1}return 0}export{V as assessHeavyVerificationGate,oe as compareSemver,m as countActiveHeavyVerificationSlots,S as isHeavyVerificationGateSkipped,p as resolveHeavyVerificationMaxConcurrent,ee as waitForHeavyVerificationSlot};
1
+ import{closeSync as G,existsSync as l,mkdirSync as Y,openSync as L,readdirSync as C,readFileSync as U,statSync as F,unlinkSync as b,writeFileSync as W}from"node:fs";import v from"node:path";function h(e){if(!e)return!1;try{return process.kill(e,0),!0}catch{return!1}}import{mkdirSync as D}from"node:fs";import{tmpdir as K}from"node:os";import m from"node:path";import{homedir as T}from"node:os";import A from"node:path";function k(){let e=process.env.KYNVER_STATE_ROOT;return e?A.resolve(e):A.join(T(),".kynver","state")}function H(){return!!(process.env.VERCEL||process.env.VERCEL_ENV||process.env.AWS_LAMBDA_FUNCTION_NAME||process.env.AWS_EXECUTION_ENV)}function $(){let e=process.env.KYNVER_HEAVY_VERIFICATION_STATE_ROOT;return e?m.resolve(e):H()?m.join(K(),"kynver","state","heavy-verification"):m.join(k(),"heavy-verification")}function y(){return m.join($(),"slots")}function u(){let e=y();return D(e,{recursive:!0}),e}var f=120*6e4,x=1;function j(e,r){let t=Number(e);return!Number.isFinite(t)||t<=0?r:Math.floor(t)}function S(){let e=process.env.KYNVER_HEAVY_VERIFICATION_SKIP?.trim().toLowerCase();return e==="1"||e==="true"||e==="yes"}function p(){let e=process.env.KYNVER_HEAVY_VERIFICATION_MAX_CONCURRENT;return e?j(e,x):x}function B(e){return`slot-${e}`}function J(e,r=y()){return v.join(r,`${e}.json`)}function E(e){if(!l(e))return null;try{let r=JSON.parse(U(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 O(e,r=f){if(!e||!h(e.pid))return!0;let t=Date.parse(e.acquiredAt);return Number.isNaN(t)?!0:Date.now()-t>r}function V(e,r){let t=E(e);if(t)return O(t,r);if(!l(e))return!0;try{return Date.now()-F(e).mtimeMs>r}catch{return!0}}function X(e,r){if(V(e,r))try{b(e)}catch{}}function q(e){return Y(e,{recursive:!0}),e}function _(e={}){let r=q(e.slotsDir??u()),t=e.staleMs??f,o=0;for(let n of C(r)){if(!n.endsWith(".json"))continue;let s=v.join(r,n),i=l(s);X(s,t),i&&!l(s)&&(o+=1)}return o}function z(e={}){let r=e.slotsDir??u(),t=e.staleMs??f;_({slotsDir:r,staleMs:t});let o=[];for(let n of C(r)){if(!n.endsWith(".json"))continue;let s=E(v.join(r,n));s&&!O(s,t)&&o.push(s)}return o}function d(e={}){return z(e).length}function R(e,r={}){if(S())return{admitted:!0,slotId:null,activeSlots:0,maxSlots:p(),reason:null};let t=r.slotsDir??u(),o=r.staleMs??f,n=r.maxSlots??p();_({slotsDir:t,staleMs:o});for(let i=0;i<n;i+=1){let g=B(i),a=J(g,t),P=E(a);if(V(a,o))try{b(a)}catch{}else if(P||l(a))continue;let w={slotId:g,pid:process.pid,acquiredAt:new Date().toISOString(),command:e};try{let c=L(a,"wx");W(c,JSON.stringify(w,null,2),"utf8"),G(c);let I=d({slotsDir:t,staleMs:o});return{admitted:!0,slotId:g,activeSlots:I,maxSlots:n,reason:null}}catch(c){if(c.code==="EEXIST")continue;throw c}}let s=d({slotsDir:t,staleMs:o});return{admitted:!1,slotId:null,activeSlots:s,maxSlots:n,reason:`heavy verification at capacity (${s}/${n} slots)`}}function N(e,r={}){if(S())return{admitted:!0,slotId:null,activeSlots:0,maxSlots:p(),reason:null};let t=r.slotsDir??u(),o=r.staleMs??f,n=r.maxSlots??p();_({slotsDir:t,staleMs:o});let s=d({slotsDir:t,staleMs:o}),i=s<n;return{admitted:i,slotId:null,activeSlots:s,maxSlots:n,reason:i?null:`heavy verification at capacity (${s}/${n} slots); waiting for ${e}`}}import{spawnSync as Q}from"node:child_process";function Z(e){e<=0||Q(process.execPath,["-e",`const d=Date.now()+${Math.floor(e)};while(Date.now()<d);`],{stdio:"ignore"})}function ee(e,r,t=2e3,o={}){let n=Date.now()+Math.max(0,r),s=R(e,o);for(;!s.admitted&&Date.now()<n;)Z(Math.min(t,n-Date.now())),s=R(e,o);return s}var re=["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"],he=new Set(re);var te=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN"],Ae=new Set(te);var ne={"@kynver-app/runtime":"0.1.83","@kynver-app/openclaw-agent-os":"0.1.43","@kynver-app/mcp-agent-os":"0.3.34"},Ge=Object.keys(ne);function M(e){let r=e.trim().split("-")[0]?.split("+")[0];if(!r)return null;let t=r.split(".");if(t.length<1||t.length>3)return null;let o=t.map(n=>Number.parseInt(n,10));if(o.some(n=>!Number.isFinite(n)||n<0))return null;for(;o.length<3;)o.push(0);return[o[0],o[1],o[2]]}function oe(e,r){let t=M(e),o=M(r);if(!t||!o)return 0;for(let n=0;n<3;n+=1){if(t[n]>o[n])return 1;if(t[n]<o[n])return-1}return 0}export{N as assessHeavyVerificationGate,oe as compareSemver,d as countActiveHeavyVerificationSlots,S as isHeavyVerificationGateSkipped,p as resolveHeavyVerificationMaxConcurrent,ee as waitForHeavyVerificationSlot};
@@ -1,2 +1,2 @@
1
- import{readFile as ge}from"node:fs/promises";import{homedir as fe}from"node:os";import l from"node:path";import{existsSync as V,readFileSync as ie}from"node:fs";import g from"node:path";import{existsSync as v,readFileSync as I}from"node:fs";import{homedir as q}from"node:os";import a from"node:path";import{fileURLToPath as ee}from"node:url";import{spawnSync as Q}from"node:child_process";function M(e){return process.platform!=="win32"?e:{windowsHide:!0,...e}}var z=["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"],Ne=new Set(z);var X=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN"],we=new Set(X);function O(e,r){try{let t=Q("git",r,M({cwd:e,encoding:"utf8"}));return{status:t.status,stdout:t.stdout||"",stderr:t.stderr||"",error:t.error?t.error.message:null}}catch(t){return{status:null,stdout:"",stderr:"",error:t.message}}}import{homedir as N}from"node:os";import w from"node:path";function Z(e){return e==="~"?N():e.startsWith("~/")||e.startsWith("~\\")?w.join(N(),e.slice(2)):e}function b(e){return w.resolve(Z(e))}var re=["Kynver","repos/Kynver","repos/kynver-source-main","code/Kynver","projects/Kynver"];function te(e){let r=a.join(e,"package.json");if(!v(r))return null;try{let t=JSON.parse(I(r,"utf8"));return typeof t.name=="string"?t.name.trim():null}catch{return null}}function ne(e){return te(e)==="kynver"}function x(e){let r=a.resolve(e);if(!v(r))return null;let t=O(r,["rev-parse","--show-toplevel"]);if(t.status!==0)return null;let n=t.stdout.trim();return n.length?a.resolve(n):null}function oe(e=import.meta.url){let r=a.dirname(ee(e));for(let t=0;t<8;t+=1){let n=a.join(r,"package.json");if(v(n))try{if(JSON.parse(I(n,"utf8")).name==="@kynver-app/runtime")return r}catch{}let o=a.dirname(r);if(o===r)break;r=o}return null}function k(e,r,t,n){if(!t)return;let o=a.resolve(t);e.has(o)||ne(o)&&(e.add(o),r.push({repo:o,source:n}))}function se(e){let r=e?.cwd??process.cwd(),t=new Set,n=[];k(t,n,x(r),"cwd_git");let o=oe(e?.runtimeModuleUrl??import.meta.url);o&&k(t,n,x(o),"runtime_checkout");let i=q();for(let s of re)k(t,n,b(a.join(i,s)),"well_known_path");return n}function T(e){return se(e)[0]??null}var G={"@kynver-app/runtime":"0.1.83","@kynver-app/openclaw-agent-os":"0.1.43","@kynver-app/mcp-agent-os":"0.3.34"},D=Object.keys(G),P={"@kynver-app/runtime":"Kynver runtime","@kynver-app/openclaw-agent-os":"OpenClaw AgentOS plugin","@kynver-app/mcp-agent-os":"AgentOS MCP server"},ae={"@kynver-app/runtime":"packages/kynver-runtime/package.json","@kynver-app/openclaw-agent-os":"packages/kynver-openclaw-agent-os/package.json","@kynver-app/mcp-agent-os":"packages/kynver-mcp-agent-os/package.json"};function K(e){let r=e.trim().split("-")[0]?.split("+")[0];if(!r)return null;let t=r.split(".");if(t.length<1||t.length>3)return null;let n=t.map(o=>Number.parseInt(o,10));if(n.some(o=>!Number.isFinite(o)||o<0))return null;for(;n.length<3;)n.push(0);return[n[0],n[1],n[2]]}function f(e,r){let t=K(e),n=K(r);if(!t||!n)return 0;for(let o=0;o<3;o+=1){if(t[o]>n[o])return 1;if(t[o]<n[o])return-1}return 0}function $(e,r){return f(e,r)>=0}function ce(e){let r=null;for(let t of e)(!r||f(t,r)>0)&&(r=t);return r}function ue(e){try{let r=JSON.parse(ie(e,"utf8"));return typeof r.version=="string"&&r.version.trim()?r.version.trim():null}catch{return null}}function le(e,r){let t=[r,process.env.KYNVER_REPO,e].filter(o=>!!o?.trim());for(let o of t){let i=g.resolve(o);if(V(g.join(i,"packages/kynver-runtime/package.json"))&&V(g.join(i,"package.json")))return i}return T({cwd:e})?.repo??null}function Y(e={}){let r=e.cwd??process.cwd(),t=le(r,e.repoRoot);if(!t)return{};let n={};for(let o of D){let i=g.join(t,ae[o]),s=ue(i);s&&(n[o]={version:s,source:"repo",path:i})}return n}function pe(e){return e==="@kynver-app/runtime"?["npm run kynver:build","npm run kynver"]:[`npm run build -w ${e}`]}function me(e){let{packageName:r,minimumVersion:t,effectiveVersion:n,effectiveSource:o,repoVersion:i}=e,s=[];return i&&$(i,t)?(s.push(`Use the monorepo checkout (${i}) instead of a stale npm install: ${pe(r).join("; ")}.`),s.push("Do not publish npm packages or wait on an operator release."),s):(n?s.push(`Upgrade ${r} from ${n} to >= ${t} (npm install -g ${r}@latest or align OpenClaw npm prefix).`):s.push(`Install ${r} >= ${t} before running memory-heavy AgentOS paths.`),r==="@kynver-app/runtime"&&s.push("Repo-source alternative: npm run kynver:build && npm run kynver"),o==="installed"&&i&&s.push(`Repo checkout reports ${i}; rebuild/link repo source if you develop from the monorepo.`),s)}function de(e){if(e.length===0)return{version:null,source:"unknown"};let r=ce(e.map(n=>n.version));if(!r)return{version:null,source:"unknown"};let t=e.find(n=>n.version===r)??e[0];return{version:t.version,source:t.source}}function R(e={}){let r=(s,c)=>s?typeof s=="string"?{version:s,source:c}:s:null,t=D.map(s=>{let c=G[s],m=[],A=r(e.installed?.[s],"installed"),y=r(e.repo?.[s],"repo"),h=r(e.self?.[s],"self");A&&m.push(A),y&&m.push(y),h&&m.push(h);let{version:u,source:d}=de(m),F=y?.version??null,E=u?$(u,c):!1,B=E?[]:me({packageName:s,minimumVersion:c,effectiveVersion:u,effectiveSource:d,repoVersion:F}),J=E?`${P[s]} ${u} meets memory-cost minimum ${c} (${d}).`:`${P[s]} is below memory-cost minimum ${c}`+(u?` (effective ${u} via ${d})`:" (no version detected)")+".";return{packageName:s,displayName:P[s],minimumVersion:c,effectiveVersion:u,effectiveSource:d,ok:E,summary:J,remediation:B}}),n=t.filter(s=>!s.ok),o=n.length===0,i=o?"All managed AgentOS packages meet memory-cost minimum versions.":`Memory-cost package guard blocked ${n.length} stale package(s): ${n.map(s=>`${s.packageName} < ${s.minimumVersion}`).join("; ")}.`;return{ok:o,summary:i,packages:t}}var _=class extends Error{result;constructor(r){let t=[r.summary,...r.packages.filter(n=>!n.ok).flatMap(n=>[`- ${n.summary}`,...n.remediation.map(o=>` \u2192 ${o}`)])];super(t.join(`
2
- `)),this.name="MemoryCostPackageVersionGuardError",this.result=r}};function L(e={}){let r=R(e);if(!r.ok)throw new _(r);return r}var ye=["@kynver-app/runtime","@kynver-app/openclaw-agent-os","@kynver-app/mcp-agent-os"];function p(e){let r=e?.trim();return r||null}function Ee(e){return[...new Set(e.filter(r=>!!r))]}function ke(){let e=fe(),r=p(process.env.KYNVER_OPENCLAW_NPM_ROOT)??p(process.env.OPENCLAW_NPM_ROOT)??l.join(e,".openclaw","npm"),t=p(process.env.KYNVER_NPM_GLOBAL_ROOT)??p(process.env.KYNVER_NPM_GLOBAL_MODULES_ROOT)??(p(process.env.NPM_CONFIG_PREFIX)?l.join(p(process.env.NPM_CONFIG_PREFIX),"lib","node_modules"):l.join(e,".npm-global","lib","node_modules"));return Ee([l.join(r,"lib","node_modules"),l.join(r,"node_modules"),t.endsWith("node_modules")?t:l.join(t,"lib","node_modules")])}async function ve(e){try{let r=JSON.parse(await ge(e,"utf8"));return typeof r.version=="string"&&r.version.trim()?r.version.trim():null}catch{return null}}function Pe(e){let r=ke(),t=new Set,n=[];for(let o of r){let i=l.join(o,e,"package.json");t.has(i)||(t.add(i),n.push(i))}return n}async function j(e=new Date().toISOString()){let r={};for(let t of ye){let n=null;for(let o of Pe(t)){let i=await ve(o);i&&(!n||f(i,n.version)>0)&&(n={version:i,path:o})}n&&(r[t]={version:n.version,observedAt:e,path:n.path})}return r}import{existsSync as _e,readFileSync as Re}from"node:fs";import{dirname as S,join as W}from"node:path";import{fileURLToPath as U}from"node:url";function Se(e){let r=S(U(e));for(let t=0;t<6;t+=1){if(_e(W(r,"package.json")))return r;let n=S(r);if(n===r)break;r=n}throw new Error(`package.json not found above ${S(U(e))}`)}function Ce(e=import.meta.url){let r=W(Se(e),"package.json"),t=JSON.parse(Re(r,"utf8"));if(typeof t.version!="string"||!t.version.trim())throw new Error(`Missing package.json version at ${r}`);return t.version}var H=Ce();function Ae(e){let r={};for(let[t,n]of Object.entries(e))n?.version&&(r[t]={version:n.version,source:"installed",path:n.path});return r}async function C(e={}){let[r,t]=await Promise.all([j(),Promise.resolve(Y({cwd:e.cwd,repoRoot:e.repoRoot}))]),n={},o=e.selfPackageName==="@kynver-app/runtime"&&e.selfVersion?e.selfVersion:H;return n["@kynver-app/runtime"]={version:o,source:"self"},e.selfPackageName&&e.selfVersion&&e.selfPackageName!=="@kynver-app/runtime"&&(n[e.selfPackageName]={version:e.selfVersion,source:"self"}),{installed:Ae(r),repo:t,self:n}}async function he(e={}){let r=await C(e);return R(r)}async function Me(e={}){let r=await C(e);return L(r)}export{C as buildMemoryCostPackageGuardInput,Me as enforceMemoryCostPackageGuardAtStartup,he as evaluateMemoryCostPackageGuardAtStartup};
1
+ import{readFile as ye}from"node:fs/promises";import{homedir as Ee}from"node:os";import p from"node:path";import{existsSync as G,readFileSync as ce}from"node:fs";import y from"node:path";import{existsSync as _,readFileSync as V}from"node:fs";import{homedir as re}from"node:os";import u from"node:path";import{fileURLToPath as te}from"node:url";import{spawnSync as q}from"node:child_process";function N(e){return process.platform!=="win32"?e:{windowsHide:!0,...e}}var Q=["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"],be=new Set(Q);var Z=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN"],xe=new Set(Z);function w(e,r){try{let t=q("git",r,N({cwd:e,encoding:"utf8"}));return{status:t.status,stdout:t.stdout||"",stderr:t.stderr||"",error:t.error?t.error.message:null}}catch(t){return{status:null,stdout:"",stderr:"",error:t.message}}}import{homedir as b}from"node:os";import x from"node:path";function ee(e){return e==="~"?b():e.startsWith("~/")||e.startsWith("~\\")?x.join(b(),e.slice(2)):e}function I(e){return x.resolve(ee(e))}var ne=["Kynver","repos/Kynver","repos/kynver-source-main","code/Kynver","projects/Kynver"];function oe(e){let r=u.join(e,"package.json");if(!_(r))return null;try{let t=JSON.parse(V(r,"utf8"));return typeof t.name=="string"?t.name.trim():null}catch{return null}}function se(e){return oe(e)==="kynver"}function T(e){let r=u.resolve(e);if(!_(r))return null;let t=w(r,["rev-parse","--show-toplevel"]);if(t.status!==0)return null;let n=t.stdout.trim();return n.length?u.resolve(n):null}function ie(e=import.meta.url){let r=u.dirname(te(e));for(let t=0;t<8;t+=1){let n=u.join(r,"package.json");if(_(n))try{if(JSON.parse(V(n,"utf8")).name==="@kynver-app/runtime")return r}catch{}let o=u.dirname(r);if(o===r)break;r=o}return null}function P(e,r,t,n){if(!t)return;let o=u.resolve(t);e.has(o)||se(o)&&(e.add(o),r.push({repo:o,source:n}))}function ae(e){let r=e?.cwd??process.cwd(),t=new Set,n=[];P(t,n,T(r),"cwd_git");let o=ie(e?.runtimeModuleUrl??import.meta.url);o&&P(t,n,T(o),"runtime_checkout");let s=re();for(let a of ne)P(t,n,I(u.join(s,a)),"well_known_path");return n}function K(e){return ae(e)[0]??null}var $={"@kynver-app/runtime":"0.1.83","@kynver-app/openclaw-agent-os":"0.1.43","@kynver-app/mcp-agent-os":"0.3.34"},Y=Object.keys($),f={"@kynver-app/runtime":"Kynver runtime","@kynver-app/openclaw-agent-os":"OpenClaw AgentOS plugin","@kynver-app/mcp-agent-os":"AgentOS MCP server"},ue={"@kynver-app/runtime":"packages/kynver-runtime/package.json","@kynver-app/openclaw-agent-os":"packages/kynver-openclaw-agent-os/package.json","@kynver-app/mcp-agent-os":"packages/kynver-mcp-agent-os/package.json"};function D(e){let r=e.trim().split("-")[0]?.split("+")[0];if(!r)return null;let t=r.split(".");if(t.length<1||t.length>3)return null;let n=t.map(o=>Number.parseInt(o,10));if(n.some(o=>!Number.isFinite(o)||o<0))return null;for(;n.length<3;)n.push(0);return[n[0],n[1],n[2]]}function E(e,r){let t=D(e),n=D(r);if(!t||!n)return 0;for(let o=0;o<3;o+=1){if(t[o]>n[o])return 1;if(t[o]<n[o])return-1}return 0}function L(e,r){return E(e,r)>=0}function le(e){let r=null;for(let t of e)(!r||E(t,r)>0)&&(r=t);return r}function pe(e){try{let r=JSON.parse(ce(e,"utf8"));return typeof r.version=="string"&&r.version.trim()?r.version.trim():null}catch{return null}}function me(e,r){let t=[r,process.env.KYNVER_REPO,e].filter(o=>!!o?.trim());for(let o of t){let s=y.resolve(o);if(G(y.join(s,"packages/kynver-runtime/package.json"))&&G(y.join(s,"package.json")))return s}return K({cwd:e})?.repo??null}function j(e={}){let r=e.cwd??process.cwd(),t=me(r,e.repoRoot);if(!t)return{};let n={};for(let o of Y){let s=y.join(t,ue[o]),a=pe(s);a&&(n[o]={version:a,source:"repo",path:s})}return n}function ge(e){return e==="@kynver-app/runtime"?["npm run kynver:build","npm run kynver"]:[`npm run build -w ${e}`]}function de(e){let{packageName:r,minimumVersion:t,effectiveVersion:n,effectiveSource:o,repoVersion:s}=e,a=[];return s&&L(s,t)?(a.push(`Use the monorepo checkout (${s}) instead of a stale npm install: ${ge(r).join("; ")}.`),a.push("Do not publish npm packages or wait on an operator release."),a):(n?a.push(`Upgrade ${r} from ${n} to >= ${t} (npm install -g ${r}@latest or align OpenClaw npm prefix).`):a.push(`Install ${r} >= ${t} before running memory-heavy AgentOS paths.`),r==="@kynver-app/runtime"&&a.push("Repo-source alternative: npm run kynver:build && npm run kynver"),o==="installed"&&s&&a.push(`Repo checkout reports ${s}; rebuild/link repo source if you develop from the monorepo.`),a)}function fe(e){if(e.length===0)return{version:null,source:"unknown"};let r=le(e.map(n=>n.version));if(!r)return{version:null,source:"unknown"};let t=e.find(n=>n.version===r)??e[0];return{version:t.version,source:t.source}}function S(e={}){let r=(i,c)=>i?typeof i=="string"?{version:i,source:c}:i:null,t=Y.map(i=>{let c=$[i],g=[],C=r(e.installed?.[i],"installed"),k=r(e.repo?.[i],"repo"),M=r(e.self?.[i],"self");C&&g.push(C),k&&g.push(k),M&&g.push(M);let{version:l,source:d}=fe(g),J=k?.version??null,O=!!l,v=O?L(l,c):!0,z=v?[]:de({packageName:i,minimumVersion:c,effectiveVersion:l,effectiveSource:d,repoVersion:J}),X=v?O?`${f[i]} ${l} meets memory-cost minimum ${c} (${d}).`:`${f[i]} is not installed \u2014 memory-cost minimum ${c} applies when this package is present.`:`${f[i]} is below memory-cost minimum ${c}`+(l?` (effective ${l} via ${d})`:" (no version detected)")+".";return{packageName:i,displayName:f[i],minimumVersion:c,effectiveVersion:l,effectiveSource:d,ok:v,summary:X,remediation:z}}),n=t.filter(i=>!i.ok),o=t.filter(i=>i.effectiveVersion).length,s=n.length===0,a=s?o===0?"No managed AgentOS packages detected \u2014 memory-cost version guard has nothing to enforce.":o===t.length?"All managed AgentOS packages meet memory-cost minimum versions.":`Detected AgentOS packages meet memory-cost minimum versions (${o}/${t.length} present).`:`Memory-cost package guard blocked ${n.length} stale package(s): ${n.map(i=>`${i.packageName} < ${i.minimumVersion}`).join("; ")}.`;return{ok:s,summary:a,packages:t}}var R=class extends Error{result;constructor(r){let t=[r.summary,...r.packages.filter(n=>!n.ok).flatMap(n=>[`- ${n.summary}`,...n.remediation.map(o=>` \u2192 ${o}`)])];super(t.join(`
2
+ `)),this.name="MemoryCostPackageVersionGuardError",this.result=r}};function U(e={}){let r=S(e);if(!r.ok)throw new R(r);return r}var ke=["@kynver-app/runtime","@kynver-app/openclaw-agent-os","@kynver-app/mcp-agent-os"];function m(e){let r=e?.trim();return r||null}function ve(e){return[...new Set(e.filter(r=>!!r))]}function Pe(){let e=Ee(),r=m(process.env.KYNVER_OPENCLAW_NPM_ROOT)??m(process.env.OPENCLAW_NPM_ROOT)??p.join(e,".openclaw","npm"),t=m(process.env.KYNVER_NPM_GLOBAL_ROOT)??m(process.env.KYNVER_NPM_GLOBAL_MODULES_ROOT)??(m(process.env.NPM_CONFIG_PREFIX)?p.join(m(process.env.NPM_CONFIG_PREFIX),"lib","node_modules"):p.join(e,".npm-global","lib","node_modules"));return ve([p.join(r,"lib","node_modules"),p.join(r,"node_modules"),t.endsWith("node_modules")?t:p.join(t,"lib","node_modules")])}async function _e(e){try{let r=JSON.parse(await ye(e,"utf8"));return typeof r.version=="string"&&r.version.trim()?r.version.trim():null}catch{return null}}function Re(e){let r=Pe(),t=new Set,n=[];for(let o of r){let s=p.join(o,e,"package.json");t.has(s)||(t.add(s),n.push(s))}return n}async function W(e=new Date().toISOString()){let r={};for(let t of ke){let n=null;for(let o of Re(t)){let s=await _e(o);s&&(!n||E(s,n.version)>0)&&(n={version:s,path:o})}n&&(r[t]={version:n.version,observedAt:e,path:n.path})}return r}import{existsSync as Se,readFileSync as he}from"node:fs";import{dirname as h,join as F}from"node:path";import{fileURLToPath as H}from"node:url";function Ae(e){let r=h(H(e));for(let t=0;t<6;t+=1){if(Se(F(r,"package.json")))return r;let n=h(r);if(n===r)break;r=n}throw new Error(`package.json not found above ${h(H(e))}`)}function Ce(e=import.meta.url){let r=F(Ae(e),"package.json"),t=JSON.parse(he(r,"utf8"));if(typeof t.version!="string"||!t.version.trim())throw new Error(`Missing package.json version at ${r}`);return t.version}var B=Ce();function Me(e){let r={};for(let[t,n]of Object.entries(e))n?.version&&(r[t]={version:n.version,source:"installed",path:n.path});return r}async function A(e={}){let[r,t]=await Promise.all([W(),Promise.resolve(j({cwd:e.cwd,repoRoot:e.repoRoot}))]),n={},o=e.selfPackageName==="@kynver-app/runtime"&&e.selfVersion?e.selfVersion:B;return n["@kynver-app/runtime"]={version:o,source:"self"},e.selfPackageName&&e.selfVersion&&e.selfPackageName!=="@kynver-app/runtime"&&(n[e.selfPackageName]={version:e.selfVersion,source:"self"}),{installed:Me(r),repo:t,self:n}}async function Oe(e={}){let r=await A(e);return S(r)}async function Ne(e={}){let r=await A(e);return U(r)}export{A as buildMemoryCostPackageGuardInput,Ne as enforceMemoryCostPackageGuardAtStartup,Oe as evaluateMemoryCostPackageGuardAtStartup};
@@ -1,2 +1,2 @@
1
- var C=["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"],K=new Set(C);var P=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN"],I=new Set(P);var f={"@kynver-app/runtime":"0.1.83","@kynver-app/openclaw-agent-os":"0.1.43","@kynver-app/mcp-agent-os":"0.3.34"},O=Object.keys(f),g={"@kynver-app/runtime":"Kynver runtime","@kynver-app/openclaw-agent-os":"OpenClaw AgentOS plugin","@kynver-app/mcp-agent-os":"AgentOS MCP server"};function _(n){let e=n.trim().split("-")[0]?.split("+")[0];if(!e)return null;let o=e.split(".");if(o.length<1||o.length>3)return null;let t=o.map(s=>Number.parseInt(s,10));if(t.some(s=>!Number.isFinite(s)||s<0))return null;for(;t.length<3;)t.push(0);return[t[0],t[1],t[2]]}function E(n,e){let o=_(n),t=_(e);if(!o||!t)return 0;for(let s=0;s<3;s+=1){if(o[s]>t[s])return 1;if(o[s]<t[s])return-1}return 0}function R(n,e){return E(n,e)>=0}function M(n){let e=null;for(let o of n)(!e||E(o,e)>0)&&(e=o);return e}function N(n){return n==="@kynver-app/runtime"?["npm run kynver:build","npm run kynver"]:[`npm run build -w ${n}`]}function x(n){let{packageName:e,minimumVersion:o,effectiveVersion:t,effectiveSource:s,repoVersion:i}=n,r=[];return i&&R(i,o)?(r.push(`Use the monorepo checkout (${i}) instead of a stale npm install: ${N(e).join("; ")}.`),r.push("Do not publish npm packages or wait on an operator release."),r):(t?r.push(`Upgrade ${e} from ${t} to >= ${o} (npm install -g ${e}@latest or align OpenClaw npm prefix).`):r.push(`Install ${e} >= ${o} before running memory-heavy AgentOS paths.`),e==="@kynver-app/runtime"&&r.push("Repo-source alternative: npm run kynver:build && npm run kynver"),s==="installed"&&i&&r.push(`Repo checkout reports ${i}; rebuild/link repo source if you develop from the monorepo.`),r)}function b(n){if(n.length===0)return{version:null,source:"unknown"};let e=M(n.map(t=>t.version));if(!e)return{version:null,source:"unknown"};let o=n.find(t=>t.version===e)??n[0];return{version:o.version,source:o.source}}function k(n={}){let e=(r,a)=>r?typeof r=="string"?{version:r,source:a}:r:null,o=O.map(r=>{let a=f[r],u=[],y=e(n.installed?.[r],"installed"),d=e(n.repo?.[r],"repo"),S=e(n.self?.[r],"self");y&&u.push(y),d&&u.push(d),S&&u.push(S);let{version:c,source:l}=b(u),v=d?.version??null,m=c?R(c,a):!1,A=m?[]:x({packageName:r,minimumVersion:a,effectiveVersion:c,effectiveSource:l,repoVersion:v}),h=m?`${g[r]} ${c} meets memory-cost minimum ${a} (${l}).`:`${g[r]} is below memory-cost minimum ${a}`+(c?` (effective ${c} via ${l})`:" (no version detected)")+".";return{packageName:r,displayName:g[r],minimumVersion:a,effectiveVersion:c,effectiveSource:l,ok:m,summary:h,remediation:A}}),t=o.filter(r=>!r.ok),s=t.length===0,i=s?"All managed AgentOS packages meet memory-cost minimum versions.":`Memory-cost package guard blocked ${t.length} stale package(s): ${t.map(r=>`${r.packageName} < ${r.minimumVersion}`).join("; ")}.`;return{ok:s,summary:i,packages:o}}var p=class extends Error{result;constructor(e){let o=[e.summary,...e.packages.filter(t=>!t.ok).flatMap(t=>[`- ${t.summary}`,...t.remediation.map(s=>` \u2192 ${s}`)])];super(o.join(`
2
- `)),this.name="MemoryCostPackageVersionGuardError",this.result=e}};function w(n={}){let e=k(n);if(!e.ok)throw new p(e);return e}export{f as MEMORY_COST_PACKAGE_MIN_VERSIONS,p as MemoryCostPackageVersionGuardError,w as assertMemoryCostPackageVersionGuard,E as compareSemver,k as evaluateMemoryCostPackageVersionGuard};
1
+ var O=["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"],V=new Set(O);var M=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN"],D=new Set(M);var E={"@kynver-app/runtime":"0.1.83","@kynver-app/openclaw-agent-os":"0.1.43","@kynver-app/mcp-agent-os":"0.3.34"},N=Object.keys(E),m={"@kynver-app/runtime":"Kynver runtime","@kynver-app/openclaw-agent-os":"OpenClaw AgentOS plugin","@kynver-app/mcp-agent-os":"AgentOS MCP server"};function v(n){let e=n.trim().split("-")[0]?.split("+")[0];if(!e)return null;let t=e.split(".");if(t.length<1||t.length>3)return null;let r=t.map(s=>Number.parseInt(s,10));if(r.some(s=>!Number.isFinite(s)||s<0))return null;for(;r.length<3;)r.push(0);return[r[0],r[1],r[2]]}function y(n,e){let t=v(n),r=v(e);if(!t||!r)return 0;for(let s=0;s<3;s+=1){if(t[s]>r[s])return 1;if(t[s]<r[s])return-1}return 0}function R(n,e){return y(n,e)>=0}function x(n){let e=null;for(let t of n)(!e||y(t,e)>0)&&(e=t);return e}function b(n){return n==="@kynver-app/runtime"?["npm run kynver:build","npm run kynver"]:[`npm run build -w ${n}`]}function w(n){let{packageName:e,minimumVersion:t,effectiveVersion:r,effectiveSource:s,repoVersion:a}=n,i=[];return a&&R(a,t)?(i.push(`Use the monorepo checkout (${a}) instead of a stale npm install: ${b(e).join("; ")}.`),i.push("Do not publish npm packages or wait on an operator release."),i):(r?i.push(`Upgrade ${e} from ${r} to >= ${t} (npm install -g ${e}@latest or align OpenClaw npm prefix).`):i.push(`Install ${e} >= ${t} before running memory-heavy AgentOS paths.`),e==="@kynver-app/runtime"&&i.push("Repo-source alternative: npm run kynver:build && npm run kynver"),s==="installed"&&a&&i.push(`Repo checkout reports ${a}; rebuild/link repo source if you develop from the monorepo.`),i)}function T(n){if(n.length===0)return{version:null,source:"unknown"};let e=x(n.map(r=>r.version));if(!e)return{version:null,source:"unknown"};let t=n.find(r=>r.version===e)??n[0];return{version:t.version,source:t.source}}function A(n={}){let e=(o,c)=>o?typeof o=="string"?{version:o,source:c}:o:null,t=N.map(o=>{let c=E[o],l=[],S=e(n.installed?.[o],"installed"),g=e(n.repo?.[o],"repo"),_=e(n.self?.[o],"self");S&&l.push(S),g&&l.push(g),_&&l.push(_);let{version:u,source:p}=T(l),h=g?.version??null,k=!!u,f=k?R(u,c):!0,C=f?[]:w({packageName:o,minimumVersion:c,effectiveVersion:u,effectiveSource:p,repoVersion:h}),P=f?k?`${m[o]} ${u} meets memory-cost minimum ${c} (${p}).`:`${m[o]} is not installed \u2014 memory-cost minimum ${c} applies when this package is present.`:`${m[o]} is below memory-cost minimum ${c}`+(u?` (effective ${u} via ${p})`:" (no version detected)")+".";return{packageName:o,displayName:m[o],minimumVersion:c,effectiveVersion:u,effectiveSource:p,ok:f,summary:P,remediation:C}}),r=t.filter(o=>!o.ok),s=t.filter(o=>o.effectiveVersion).length,a=r.length===0,i=a?s===0?"No managed AgentOS packages detected \u2014 memory-cost version guard has nothing to enforce.":s===t.length?"All managed AgentOS packages meet memory-cost minimum versions.":`Detected AgentOS packages meet memory-cost minimum versions (${s}/${t.length} present).`:`Memory-cost package guard blocked ${r.length} stale package(s): ${r.map(o=>`${o.packageName} < ${o.minimumVersion}`).join("; ")}.`;return{ok:a,summary:i,packages:t}}var d=class extends Error{result;constructor(e){let t=[e.summary,...e.packages.filter(r=>!r.ok).flatMap(r=>[`- ${r.summary}`,...r.remediation.map(s=>` \u2192 ${s}`)])];super(t.join(`
2
+ `)),this.name="MemoryCostPackageVersionGuardError",this.result=e}};function K(n={}){let e=A(n);if(!e.ok)throw new d(e);return e}export{E as MEMORY_COST_PACKAGE_MIN_VERSIONS,d as MemoryCostPackageVersionGuardError,K as assertMemoryCostPackageVersionGuard,y as compareSemver,A as evaluateMemoryCostPackageVersionGuard};
@@ -0,0 +1,3 @@
1
+ export { parseExecutorRefRoutingIntent, executorRefRequestsNonCursorWorker, type ExecutorRefRoutingIntent, } from "../executor-ref-routing.js";
2
+ export { assessDispatchModelGuard, type DispatchModelGuardInput, type DispatchModelGuardResult, } from "../dispatch-model-guard.js";
3
+ export { GLOBAL_DEFAULT_MODEL, CURSOR_DEFAULT_MODEL, inferModelRoutingFromTask, resolveGlobalDefaultModel, resolveModelFallback, resolveWorkerLaunch, type ModelRoutingDecision, } from "../model-routing.js";
@@ -0,0 +1,5 @@
1
+ var s=(e,r,t)=>()=>{if(t)throw t[0];try{return e&&(r=e(e=0)),r}catch(n){throw t=[n],n}};var d=s(()=>{"use strict"});var yr,Mt,br,Ut,Y=s(()=>{"use strict";yr=["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"],Mt=new Set(yr),br=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN"],Ut=new Set(br)});var G=s(()=>{"use strict";d();Y()});var E=s(()=>{"use strict"});var z=s(()=>{"use strict";G();E()});var v=s(()=>{"use strict"});var P=s(()=>{"use strict"});var me=s(()=>{"use strict"});var en,rn,J=s(()=>{"use strict";en=25*1024*1024*1024,rn=12*1024*1024*1024});var an,ln,pe=s(()=>{"use strict";J();an=5*1024*1024*1024,ln=10*1024*1024*1024});var fn,gn,q=s(()=>{"use strict";pe();J();fn=30*1024*1024*1024,gn=15*1024*1024*1024});var ge=s(()=>{"use strict";d()});import kr from"node:path";var Sn,X=s(()=>{"use strict";E();ge();Sn=kr.join(".openclaw","harness")});var I=s(()=>{"use strict";R();v();P();N();X()});var be=s(()=>{"use strict";R();X();I();d()});var Q=s(()=>{"use strict";be();d()});var ve=s(()=>{"use strict";Q();d()});var Re=s(()=>{"use strict"});var ke=s(()=>{"use strict";Re();d()});var xe=s(()=>{"use strict"});var _e=s(()=>{"use strict";xe()});var Se=s(()=>{"use strict";_e();d()});var Ee=s(()=>{"use strict"});var Ce=s(()=>{"use strict"});var Oe=s(()=>{"use strict"});var ee=s(()=>{"use strict"});var Ae=s(()=>{"use strict"});var Pe=s(()=>{"use strict";ee();Ae()});var we=s(()=>{"use strict";ke();Se();Ee();Ce();G();Oe();Pe();ee();d()});var Ie=s(()=>{"use strict";we()});var Pr,wr,Ne=s(()=>{"use strict";me();R();v();P();N();q();Q();ve();Ie();d();Pr=500*1024*1024,wr=4*1024*1024*1024});var N=s(()=>{"use strict";Ne()});import{homedir as Ir}from"node:os";import Nr from"node:path";var Be,re=s(()=>{"use strict";Be=Nr.join(Ir(),".kynver",".env")});var De=s(()=>{"use strict"});var Ke=s(()=>{"use strict";De()});var Te=s(()=>{"use strict"});var te=s(()=>{"use strict";Ke();Te()});var We=s(()=>{"use strict"});var Me=s(()=>{"use strict";We()});var B=s(()=>{"use strict";re();E();R();te();Me()});var Ue=s(()=>{"use strict";v();v()});var Le=s(()=>{"use strict";re();te();B()});var Fe=s(()=>{"use strict";z();v();Ue();R();B();Le();d();I()});import{existsSync as Lr,mkdirSync as ks,readFileSync as Fr,writeFileSync as xs}from"node:fs";import{homedir as $r,totalmem as Ss}from"node:os";import ne from"node:path";function x(){if(!Lr($e))return{};try{return JSON.parse(Fr($e,"utf8"))}catch{return{}}}var He,$e,Ts,Ws,Ms,R=s(()=>{"use strict";z();E();d();v();P();N();q();B();Fe();I();He=ne.join($r(),".kynver"),$e=ne.join(He,"config.json"),Ts=ne.join(He,"credentials");Ws=500*1024*1024,Ms=4*1024*1024*1024});var mr=/^claude[-_]/i,pr=/^(?:opus|sonnet|haiku)\b/i;function ce(e){let r=e.trim();return mr.test(r)||pr.test(r)}function de(e){let r=e.trim().toLowerCase();return r.startsWith("gpt-")||r.startsWith("gpt5")||r.includes("codex")}function H(e){let r=e.trim().toLowerCase();return r.includes("composer")||r.includes("cursor")}function fr(e){return de(e)?"codex":ce(e)?"claude":(H(e),"cursor")}function gr(e){if(!e.startsWith("provider:"))return null;let r=e.slice(9),t=r.indexOf(":"),n=(t>=0?r.slice(0,t):r).trim().toLowerCase(),o=t>=0&&r.slice(t+1).trim()||void 0;return n?n==="claude"||n==="opus"||n==="anthropic"?{provider:"claude",model:o,rule:o?"executor_ref:provider_claude_model":"executor_ref:provider_claude"}:n==="codex"?{provider:"codex",model:o,rule:"executor_ref:provider_codex"}:n==="cursor"||n==="composer"?{provider:"cursor",model:o,rule:"executor_ref:provider_cursor"}:null:null}function hr(e){if(!e.startsWith("harness-lane:"))return null;let r=e.split(":").map(o=>o.trim()).filter(Boolean);if(r.length<2)return null;let t=r[1],n=r.slice(2).join(":");return n?ce(n)||de(n)||H(n)?{lane:t,model:n,provider:fr(n),rule:"executor_ref:harness_lane_model"}:{lane:t,rule:"executor_ref:harness_lane"}:{lane:t,rule:"executor_ref:harness_lane"}}function b(e){let r=typeof e=="string"?e.trim():"";return r?gr(r)??hr(r):null}function j(e){let r=b(e);return r?!!(r.provider&&r.provider!=="cursor"||r.model&&!H(r.model)):!1}R();var je={codex:{id:"codex",displayName:"Codex (BYO OAuth / Hermes openai-codex)",costTier:"low",authSources:["oauth_local","api_key_env","subscription_hermes"],supportsLowRiskOrchestration:!0,supportsPrivilegedPlatformActions:!1},cursor:{id:"cursor",displayName:"Cursor / Composer",costTier:"medium",authSources:["oauth_local","api_key_env"],supportsLowRiskOrchestration:!0,supportsPrivilegedPlatformActions:!0},claude:{id:"claude",displayName:"Claude Code",costTier:"high",authSources:["oauth_local"],supportsLowRiskOrchestration:!0,supportsPrivilegedPlatformActions:!0}};function _(e){return je[e]}function Ye(){return Object.values(je)}import{existsSync as jr}from"node:fs";import{homedir as Yr}from"node:os";import C from"node:path";import{createHash as Ve}from"node:crypto";import{statSync as Hr}from"node:fs";import{spawnSync as Ge}from"node:child_process";function g(e){try{let r=Hr(e),t=`${e}|${r.size}|${r.mtimeMs}`;return Ve("sha256").update(t).digest("hex").slice(0,16)}catch{return}}function S(e){return Ve("sha256").update(`env:${e}`).digest("hex").slice(0,16)}function m(e,r){for(let t of r){let n=process.env[t]?.trim();if(n)return n}return e}function p(e,r,t={}){let n=t.timeoutMs??8e3;try{let o=Ge(e,r,{encoding:"utf8",timeout:n,env:{...process.env,...t.env,CI:"1",NO_COLOR:"1"}});if(o.status===0)return{ok:!0,note:t.okNote??`${e} ${r.join(" ")}: ok`};let i=(o.stderr||o.stdout||"").trim(),a=t.failPrefix??`${e} ${r.join(" ")} failed`;return{ok:!1,note:i?`${a}: ${i.slice(0,200)}`:a}}catch(o){return{ok:!1,note:o instanceof Error?o.message:`${e} probe failed`}}}function D(e,r,t={}){let n=t.timeoutMs??8e3;try{return Ge(e,r,{stdio:"ignore",timeout:n,env:{...process.env,CI:"1",NO_COLOR:"1"}}).status===0?{ok:!0,note:t.okNote??`${e} authenticated`}:{ok:!1,note:t.failNote??`${e} not authenticated`}}catch(o){return{ok:!1,note:o instanceof Error?o.message:`${e} auth probe failed`}}}var Vr="codex";function Gr(){let e=Yr();return[process.env.CODEX_HOME?.trim()?C.join(C.resolve(process.env.CODEX_HOME.trim()),"auth.json"):null,C.join(e,".codex","auth.json"),C.join(e,".config","codex","auth.json")].filter(t=>!!t)}function zr(e){return C.dirname(e)}function Jr(e){let r,t;for(let n of Gr()){if(!jr(n))continue;r??=n;let o=p(e,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status",env:{CODEX_HOME:zr(n)}});if(t??=o,o.ok)return{authPath:n,login:o}}return{authPath:r,login:t??p(e,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status"})}}function ze(e=new Date().toISOString()){let r=m(Vr,["KYNVER_CODEX_BIN","CODEX_BIN"]);if(process.env.CODEX_API_KEY?.trim())return{providerId:"codex",ready:!0,authSource:"api_key_env",sessionFingerprint:S("CODEX_API_KEY"),checkedAt:e,note:"CODEX_API_KEY present (env binding \u2014 cloud credits path, no token stored in Kynver)"};let{authPath:t,login:n}=Jr(r),o=!!t&&n.ok;return{providerId:"codex",ready:o,authSource:"oauth_local",sessionFingerprint:t?g(t):void 0,checkedAt:e,note:o?"Local Codex OAuth session bound on runner":[n.note,t?void 0:"no Codex auth store found"].filter(Boolean).join("; ")}}import{existsSync as qr}from"node:fs";import{homedir as Xr}from"node:os";import oe from"node:path";function Zr(){let e=process.env.HERMES_HOME?.trim(),r=e?oe.resolve(e):oe.join(Xr(),".hermes");return oe.join(r,"auth.json")}function K(e=new Date().toISOString()){let r=m("hermes",["KYNVER_HERMES_BIN","HERMES_BIN"]),t=p(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=Zr(),o=qr(n),i=D(r,["auth","status","openai-codex"],{okNote:"hermes openai-codex: logged in",failNote:"hermes openai-codex: not logged in"}),a=t.ok&&i.ok;return{path:"hermes_openai_codex",ready:a,authSource:a?"subscription_hermes":"none",sessionFingerprint:o?g(n):void 0,checkedAt:e,note:a?"Hermes openai-codex subscription session bound (ChatGPT Codex OAuth)":[t.note,i.note,o?void 0:"no ~/.hermes/auth.json"].filter(Boolean).join("; ")}}function O(e=new Date().toISOString()){let r=ze(e);if(r.ready)return{...r,path:"codex_cli"};let t=K(e);return t.ready?{providerId:"codex",ready:!0,authSource:t.authSource,sessionFingerprint:t.sessionFingerprint,checkedAt:t.checkedAt,note:t.note,path:"hermes_openai_codex",hermesOpenAiCodex:t}:{providerId:"codex",ready:!1,authSource:"none",checkedAt:e,path:"none",hermesOpenAiCodex:t,note:[r.note,t.note].filter(Boolean).join("; ")||"Codex CLI and Hermes openai-codex unavailable"}}var Je=["low","medium","high"],qe={oauth_local:0,subscription_hermes:0,runner_token:1,api_key_env:2,none:3};function Xe(e,r){let t=_(e);return r==="privileged"?t.supportsPrivilegedPlatformActions:r==="low"?t.supportsLowRiskOrchestration:!0}function Qr(e,r){let t=_(e.providerId),n=_(r.providerId),o=Je.indexOf(t.costTier)-Je.indexOf(n.costTier);if(o!==0)return o;let i=qe[e.binding.authSource]-qe[r.binding.authSource];return i!==0?i:e.providerId.localeCompare(r.providerId)}function ie(e){let r=Ye().map(l=>({providerId:l.id,binding:e.inventory.bindings[l.id]})).filter(l=>l.binding.ready&&Xe(l.providerId,e.riskClass));if(r.length===0)return null;let n=[...r].sort(Qr)[0],o="codex";if(n.providerId===o)return{providerId:n.providerId,binding:n.binding};let i=e.inventory.bindings[o],a;return Xe(o,e.riskClass)?i.ready||(a=i.note??`${o} not bound`):a=`${e.riskClass} orchestration requires privileged-capable provider`,{providerId:n.providerId,binding:n.binding,escalatedFrom:o,escalatedReason:a}}import{existsSync as et}from"node:fs";import{homedir as rt}from"node:os";import tt from"node:path";var nt="claude";function ot(){let e=rt();return[tt.join(e,".claude",".credentials.json")]}function Ze(e=new Date().toISOString()){let r=m(nt,["KYNVER_CLAUDE_BIN","CLAUDE_BIN"]);if(process.env.ANTHROPIC_API_KEY?.trim())return{providerId:"claude",ready:!0,authSource:"api_key_env",sessionFingerprint:S("ANTHROPIC_API_KEY"),checkedAt:e,note:"ANTHROPIC_API_KEY present (env binding \u2014 cloud credits path, no token stored in Kynver)"};let t=p(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=ot().find(a=>et(a)),o=D(r,["auth","status"],{okNote:"claude auth status: authenticated",failNote:"claude auth status: not authenticated"}),i=t.ok&&(o.ok||!!n);return{providerId:"claude",ready:i,authSource:"oauth_local",sessionFingerprint:n?g(n):void 0,checkedAt:e,note:i?"Local Claude Code OAuth session bound on runner":[t.note,o.note,n?void 0:"no ~/.claude/.credentials.json"].filter(Boolean).join("; ")}}import{existsSync as it}from"node:fs";import{homedir as st}from"node:os";import at from"node:path";var lt="agent";function ut(){let e=st();return[at.join(e,".config","cursor","auth.json")]}function Qe(e=new Date().toISOString()){let r=m(lt,["KYNVER_CURSOR_AGENT_BIN","CURSOR_AGENT_BIN"]);if(process.env.CURSOR_API_KEY?.trim())return{providerId:"cursor",ready:!0,authSource:"api_key_env",sessionFingerprint:S("CURSOR_API_KEY"),checkedAt:e,note:"CURSOR_API_KEY present (env binding \u2014 cloud credits path, no token stored in Kynver)"};let t=p(r,["-v"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=ut().find(i=>it(i)),o=!!n&&t.ok;return{providerId:"cursor",ready:o,authSource:"oauth_local",sessionFingerprint:n?g(n):void 0,checkedAt:e,note:o?"Local Cursor/Composer OAuth session bound on runner":[t.note,n?void 0:"no ~/.config/cursor/auth.json"].filter(Boolean).join("; ")}}import{existsSync as ct,readFileSync as dt}from"node:fs";import{homedir as mt}from"node:os";import se from"node:path";var pt=["OPENAI_API_KEY","ANTHROPIC_API_KEY","KYNVER_API_KEY","KYNVER_BASE_URL"];function ft(){let e=process.env.HERMES_HOME?.trim(),r=e?se.resolve(e):se.join(mt(),".hermes");return se.join(r,".env")}function gt(e){try{let r=dt(e,"utf8"),t=[];for(let n of pt)new RegExp(`^${n}=`,"m").test(r)&&t.push(n);return t}catch{return[]}}function er(e=new Date().toISOString()){let r=m("hermes",["KYNVER_HERMES_BIN","HERMES_BIN"]),t=p(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=ft(),o=ct(n),i=o?gt(n):[],l=i.some(u=>u.endsWith("_API_KEY"))?"api_key_env":o?"oauth_local":"none",c=t.ok&&o;return{adapterId:"hermes",cliAvailable:t.ok,profileBound:o,authSource:l,sessionFingerprint:o?g(n):void 0,checkedAt:e,note:c?`Hermes profile bound (${i.length?`keys: ${i.join(", ")}`:"no API keys detected"})`:[t.note,o?void 0:"no ~/.hermes/.env"].filter(Boolean).join("; ")}}function rr(e={}){let r=e.nowIso?.()??new Date().toISOString(),t=O(r),n={codex:t,cursor:Qe(r),claude:Ze(r)},o=Object.values(n).filter(i=>i.ready).length;return{generatedAt:r,bindings:n,cloudApiCredits:{anthropicApiKey:!!process.env.ANTHROPIC_API_KEY?.trim(),openaiApiKey:!!process.env.OPENAI_API_KEY?.trim(),codexApiKey:!!process.env.CODEX_API_KEY?.trim()},hermes:er(r),hermesOpenAiCodex:K(r),codexAdapterPath:t.path,readyCount:o}}var ht=[/\bprivileged\b/i,/\bproduction\s+db\b/i,/\bdb:push\b/i,/\bmigration\b/i,/\bdeploy\b/i,/\bsecrets?\b/i,/\bstripe\b/i,/\[require-approval\]/i,/\[operator-only\]/i],yt=[/\borchestration\b/i,/\bplan[- ]?progress\b/i,/\bstatus\s+sync\b/i,/\bheartbeat\b/i,/\bboard[- ]?drain\b/i,/\bmaintenance\b/i,/\[orchestration:\s*low-risk\]/i];function ae(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function bt(e){let r=ae(e,"executorRef").toLowerCase(),t=ae(e,"title").toLowerCase(),n=ae(e,"description").toLowerCase(),o=`${r}
2
+ ${t}
3
+ ${n}`;return ht.some(i=>i.test(o))?"privileged":r.includes("provider:claude")||r.includes("deep_review")||r.includes("security")||r.includes("landing")||r.includes("review")||t.startsWith("land:")||r.includes("implementer")||r.includes("repair")||t.includes("implement")?"elevated":yt.some(i=>i.test(o))?"low":"elevated"}function vt(e){let r=_(e.provider),t=e.escalatedFrom&&e.escalatedReason?`Escalated from ${e.escalatedFrom} (${e.escalatedReason}); using ${r.displayName} (${r.costTier} tier)`:`${r.displayName} selected for ${e.riskClass} orchestration (${r.costTier} tier, auth=${e.authSource})`;return{provider:e.provider,model:e.model,authSource:e.authSource,costTier:r.costTier,riskClass:e.riskClass,costRationale:t,routingRule:e.routingRule,escalatedFrom:e.escalatedFrom,escalatedReason:e.escalatedReason}}function Rt(e){let r=e.inventory??rr();return e.codexBinding?{...r,bindings:{...r.bindings,codex:e.codexBinding}}:r}function k(e){let r=vt({provider:e.providerId,model:e.model,authSource:e.binding.authSource,riskClass:e.riskClass,routingRule:e.routingRule,escalatedFrom:e.escalatedFrom,escalatedReason:e.escalatedReason});return{provider:e.providerId,model:e.model,rule:r.routingRule,audit:r}}function tr(e){let r=e.task??{},t=bt(r),n=Rt({inventory:e.inventory,codexBinding:e.codexBinding??(e.inventory?null:O())}),o=e.preferLowCost===!1?null:e.explicitProvider?.trim().toLowerCase(),i=e.explicitModel?.trim()||void 0,a=le;if(o==="codex"||o==="provider:codex"){let u=n.bindings.codex;if(!u.ready){let f=ie({inventory:n,riskClass:t});return k(f?{providerId:f.providerId,binding:f.binding,riskClass:t,routingRule:"orchestration:explicit_codex_unavailable_cost_aware",model:i,escalatedFrom:"codex",escalatedReason:u.note??"codex oauth not bound"}:{providerId:a,binding:n.bindings[a],riskClass:t,routingRule:"orchestration:codex_unavailable_escalate_cursor",model:i,escalatedFrom:"codex",escalatedReason:u.note??"codex oauth not bound"})}return k({providerId:"codex",binding:u,riskClass:t,routingRule:"orchestration:explicit_codex",model:i})}if(o==="cursor"||o==="provider:cursor"){let u=n.bindings.cursor;if(u.ready)return k({providerId:"cursor",binding:u,riskClass:t,routingRule:"orchestration:explicit_cursor",model:i})}if(o==="claude"||o==="provider:claude"){let u=n.bindings.claude;if(u.ready)return k({providerId:"claude",binding:u,riskClass:t,routingRule:"orchestration:explicit_claude",model:i})}let l=ie({inventory:n,riskClass:t});if(l)return k({providerId:l.providerId,binding:l.binding,riskClass:t,routingRule:`orchestration:cost_aware_${l.providerId}`,model:i,escalatedFrom:l.escalatedFrom,escalatedReason:l.escalatedReason});let c=n.bindings.codex;return k({providerId:a,binding:n.bindings[a],riskClass:t,routingRule:c.ready?"orchestration:inventory_empty_default_cursor":"orchestration:codex_unavailable_default_cursor",model:i,...c.ready?{}:{escalatedFrom:"codex",escalatedReason:c.note??"codex oauth not bound"}})}Y();d();var T="claude-sonnet-4-6",A="claude-opus-4-8";d();d();var Ya=process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.4";function xt(){return process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||"gpt-5.4"}var W=xt();var sr="claude-sonnet-4-6",L="composer-2.5";function h(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function _t(e){if(!e)return;let r=h(e,"workerModelOverride")||h(e,"modelOverride");return r||`${h(e,"title")}
4
+ ${h(e,"description")}
5
+ ${h(e,"executorRef")}`.match(/\[(?:worker-)?model:\s*([^\]\n]+)\]/i)?.[1]?.trim()||void 0}function or(e){return e.toLowerCase()}function F(e=x()){let r=e.defaultModel?.trim();if(r)return r;let t=process.env.KYNVER_DEFAULT_MODEL?.trim();return t||sr}function M(e){let r=(e??"").toLowerCase();return!r||r.includes("composer")||r.includes("cursor")||r.includes("codex")||r.startsWith("gpt-")||r.startsWith("gpt5")?"cursor":/^claude[-_]/i.test(r)||/^(?:opus|sonnet|haiku)\b/i.test(r)?"claude":"cursor"}function St(e,r){let t=e.trim().toLowerCase(),n=r?.trim();return t==="cursor"?{model:L,provider:"cursor",rule:n&&n!=="cursor"?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:t==="claude"||t==="anthropic"?{model:T,provider:"claude",rule:n&&n!=="claude"?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:null}function ir(e,r){return!!(e.includes("deep")&&e.includes("review")||e.includes("security")||e.includes("plan_author")||e.includes("plan-author")||r.includes("deep review")||r.includes("security review")||e.includes("plan")&&!e.includes("review")&&(e.includes("author")||e.includes("strategy")))}var Et=new Set(["report_reviewer","deep_reviewer","plan_reviewer"]);function ar(e,r,t){return Et.has(e)?A:r.includes("review")||/^review[\s:]/.test(t)||t.includes("critique")?A:T}function lr(e){let r=or(h(e,"executorRef")),t=h(e,"title").toLowerCase(),n=h(e,"priority")||"normal",o=or(h(e,"roleLane"));if(r.includes("provider:claude")||r.startsWith("claude:")){let a=ar(o,r,t);return{provider:"claude",model:a,rule:a===A?"factory:claude_review":"factory:claude_implementation"}}if(r.includes("provider:codex")||r.startsWith("codex:"))return{provider:"codex",model:W,rule:"lane:codex_orchestration"};if(r.includes("cursor")||r.includes("composer")||r.includes("copilot")||o==="implementer"||o==="repair_implementer")return{provider:"cursor",rule:"lane:implementation"};if(r.includes("codex"))return{provider:"codex",model:W,rule:"lane:codex_orchestration"};if(r.includes("landing")||t.startsWith("land:")||t.includes(" merge"))return{provider:"cursor",rule:"lane:landing"};if(r.includes("review")||/^review[\s:]/.test(t)||o.includes("review"))return ir(r,t)||o==="deep_reviewer"?{provider:"cursor",rule:"lane:deep_review"}:{provider:"cursor",rule:"lane:review"};if(ir(r,t)||o==="plan_author")return{provider:"cursor",rule:"lane:planning"};if(n==="critical")return{provider:"cursor",rule:"priority:critical"};if(n==="high")return{provider:"cursor",rule:"priority:high"};if(n==="low")return{provider:"cursor",rule:"priority:low"};let i=F();return{model:i,provider:M(i),rule:"default:global"}}function Ct(e){return e?b(h(e,"executorRef")):null}function Ot(e){let r,t=Ct(e.task),n=e.explicitModel?.trim()?void 0:t?.model?.trim(),o=!e.explicitProvider?.trim()&&t?.provider?.trim()?t.provider.trim():void 0;if(e.explicitModel?.trim()){let l=e.explicitModel.trim(),c=St(l,e.explicitProvider);c?r=c:r={model:l,provider:e.explicitProvider?.trim()||M(l),rule:"explicit:cli",requestedModel:l}}else if(n)r={model:n,provider:o||M(n),rule:t?.rule??"executor_ref:model",requestedModel:n};else if(e.task&&U(e.task)){let l=_t(e.task),c,u;if(l)c=l,u="task:provider_override";else{let f=typeof e.task.roleLane=="string"?e.task.roleLane.toLowerCase():"",ue=typeof e.task.executorRef=="string"?e.task.executorRef.toLowerCase():"",dr=typeof e.task.title=="string"?e.task.title.toLowerCase():"";c=ar(f,ue,dr),u=c===A?"factory:claude_review":"factory:claude_implementation"}r={model:c,provider:"claude",rule:u,requestedModel:c}}else if(e.task&&Object.keys(e.task).length>0){let l=lr(e.task);r={...l,requestedModel:l.model}}else{let l=F();r={model:l,provider:e.explicitProvider?.trim()||M(l),rule:"default:global",requestedModel:l}}let i=ur({routing:r,task:e.task,explicitProvider:e.explicitProvider,explicitProviderIsOperatorOverride:e.explicitProviderIsOperatorOverride});if(!e.task||Object.keys(e.task).length===0||i.rule==="explicit:model_provider_alias"||i.rule==="explicit:model_provider_alias_overrode_provider"||i.rule==="explicit:cli"||y(i.provider)&&(e.explicitProviderIsOperatorOverride||U(e.task)))return i;let a=tr({task:e.task,explicitProvider:e.explicitProvider??i.provider,explicitModel:i.model,inventory:e.orchestrationInventory??void 0});return{provider:a.provider,model:a.provider==="codex"?a.model??i.model??W:i.model,rule:a.rule,requestedModel:i.requestedModel,orchestrationAudit:a.audit}}function At(e,r,t){return e||r||t||F()||T}var le="cursor",Pt=new Set(["claude","opus","anthropic"]),wt=[/\[worker-provider:\s*claude\]/i,/\[use-claude-worker\]/i,/\[operator-worker-provider:\s*claude\]/i];function $(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function y(e){if(!e?.trim())return!1;let r=e.trim().toLowerCase();return Pt.has(r)?!0:r.includes("claude")||r.includes("opus")}function U(e){if(!e)return!1;let r=e.workerProviderOverride;if(typeof r=="string"&&y(r))return!0;let 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=b($(e,"executorRef"));if(n?.provider&&y(n.provider)||n?.model&&y(It(n.model)))return!0;let o=$(e,"description");if(wt.some(a=>a.test(o)))return!0;let i=$(e,"title");return!!/\[use-claude-worker\]/i.test(i)}function It(e){let r=e.trim().toLowerCase();return/^claude[-_]/.test(r)||/^(?:opus|sonnet|haiku)\b/.test(r)?"claude":r}function Nt(e,r){return{provider:le,model:L,rule:`policy:cursor_default${r}`,requestedModel:e}}function ur(e){let{routing:r,task:t}=e,n=e.explicitProvider?.trim().toLowerCase();if(e.explicitProviderIsOperatorOverride&&y(n))return{...r,provider:"claude",rule:r.rule.startsWith("explicit:")?r.rule:"explicit:operator_provider"};if(U(t)||r.rule==="explicit:cli"&&y(r.provider)||!y(r.provider))return r;let o=r.rule&&r.rule!=="default:global"?`:${r.rule.replace(/:/g,"_")}`:"";return Nt(r.model,o)}function Bt(e){let r=e?.executorRef;return typeof r=="string"?r.trim():""}function cr(e){return e?.trim()||void 0}function Dt(e){let r=Bt(e.task),t=b(r),n=e.explicitProvider?.trim().toLowerCase(),o=cr(e.explicitModel??void 0),i=n||t?.provider,a=o||t?.model,l=n||o?"cli":t?.rule??"none";if(!i&&!a)return{ok:!0};!i&&a&&(/^claude[-_]/i.test(a)||/^(?:opus|sonnet|haiku)\b/i.test(a))&&(i="claude");let c=e.routing.provider,u=cr(e.routing.model),f={provider:c,model:u,rule:e.routing.rule};return i&&i!=="cursor"||r&&j(r)||n&&n!=="cursor"?c==="cursor"?{ok:!1,error:`model_routing_mismatch: requested ${i??"non-cursor"}${a?` model=${a}`:""} (${l}) but routing resolved to cursor (${e.routing.rule})`,requested:{provider:i,model:a,source:l},resolved:f}:a&&u&&a!==u&&!y(c)?{ok:!1,error:`model_routing_mismatch: requested model=${a} (${l}) but routing resolved model=${u} (${e.routing.rule})`,requested:{provider:i,model:a,source:l},resolved:f}:{ok:!0,requested:{provider:i,model:a,source:l},resolved:f}:{ok:!0,resolved:f}}export{L as CURSOR_DEFAULT_MODEL,sr as GLOBAL_DEFAULT_MODEL,Dt as assessDispatchModelGuard,j as executorRefRequestsNonCursorWorker,lr as inferModelRoutingFromTask,b as parseExecutorRefRoutingIntent,F as resolveGlobalDefaultModel,At as resolveModelFallback,Ot as resolveWorkerLaunch};
@@ -0,0 +1 @@
1
+ export { evaluateNodeRuntimePolicy, KYNVER_NODE_PATCH_FLOOR, PRIVATE_ROOT_NODE_RANGE, PUBLISHED_NODE_RANGE, type NodeRuntimePolicyStatus, type NodeRuntimePolicyVerdict, } from "../node-runtime-policy.js";
@@ -0,0 +1 @@
1
+ var s="24.11.0",l=">=24.11.0",c=">=24.11.0 <25";function a(r){let e=r.trim().replace(/^v/,""),o=/^(\d+)\.(\d+)\.(\d+)$/.exec(e);return o?{major:Number(o[1]),minor:Number(o[2]),patch:Number(o[3])}:null}function u(r,e){return r.major!==e.major?r.major-e.major:r.minor!==e.minor?r.minor-e.minor:r.patch-e.patch}function d(r){let e=r.trim().split(/\s+/),o=null,i=null;for(let t of e)if(t.startsWith(">="))o=a(t.slice(2));else if(t.startsWith("<")){let n=t.slice(1);i=a(n)??(/^\d+$/.test(n)?{major:Number(n),minor:0,patch:0}:null)}if(!o)throw new Error(`Unsupported node policy range: ${r}`);return{floor:o,below:i}}function m(r,e=l){let{floor:o,below:i}=d(e),t=a(r);if(!t)return{status:"invalid_version",currentVersion:r.trim(),requiredRange:e,remediation:`Node version could not be parsed as X.Y.Z (prereleases are unsupported). Install Node ${s} or a later release within the supported range.`};let n=`${t.major}.${t.minor}.${t.patch}`;return u(t,o)<0?{status:"upgrade_required",currentVersion:n,requiredRange:e,remediation:`Upgrade Node to >=${s}. See docs/runbooks/node-24-fleet-migration.md for the per-host procedure.`}:i&&u(t,i)>=0?{status:"unsupported_major",currentVersion:n,requiredRange:e,remediation:`Node ${t.major}.x is newer than this artifact's qualified range (${e}). Use a qualified Node major or wait for the next runtime qualification.`}:{status:"compatible",currentVersion:n,requiredRange:e,remediation:null}}export{s as KYNVER_NODE_PATCH_FLOOR,c as PRIVATE_ROOT_NODE_RANGE,l as PUBLISHED_NODE_RANGE,m as evaluateNodeRuntimePolicy};
@@ -0,0 +1 @@
1
+ export { buildPrompt, buildPromptWithReceipt, RUNTIME_PROMPT_ENFORCEMENT, type BuildPromptInput, } from "../prompt.js";
@@ -0,0 +1,19 @@
1
+ function m(e){return["Repair target PR policy:","- Work on the existing target PR branch \u2014 do not open a duplicate repair PR by default.",`- Canonical target PR: ${e.targetPrUrl}`,...e.targetPrBranch?[`- Canonical target branch: \`${e.targetPrBranch}\` (checkout is already on this branch).`]:[],`- Reconcile ${e.targetPrUrl} in structured finalResult.targetPrReconciliation.`,"- Only supersede the original when the branch is inaccessible: set supersedesOriginalTargetPr: true with reason and close/comment on the original PR."]}var x="embedded-1",y=[{slug:"ghost",displayName:"Ghost",description:"Orchestration persona.",dispatchLane:null,defaultRoleLane:"system"},{slug:"astra",displayName:"Astra",description:"Planning persona.",dispatchLane:"implementation",defaultRoleLane:"plan_author"},{slug:"rhea",displayName:"Rhea",description:"Implementation persona.",dispatchLane:"implementation",defaultRoleLane:"implementer"},{slug:"mnemo",displayName:"Mnemo",description:"Implementation persona.",dispatchLane:"implementation",defaultRoleLane:"implementer"},{slug:"sentinel",displayName:"Sentinel",description:"Review persona.",dispatchLane:"review",defaultRoleLane:"deep_reviewer"},{slug:"pixel",displayName:"Pixel",description:"Implementation persona.",dispatchLane:"implementation",defaultRoleLane:"implementer"},{slug:"schema",displayName:"Schema",description:"Implementation persona.",dispatchLane:"implementation",defaultRoleLane:"implementer"},{slug:"atlas",displayName:"Atlas",description:"Implementation persona.",dispatchLane:"implementation",defaultRoleLane:"runtime_verifier"},{slug:"bridge",displayName:"Bridge",description:"Implementation persona.",dispatchLane:"implementation",defaultRoleLane:"implementer"},{slug:"catalyst",displayName:"Catalyst",description:"Implementation persona.",dispatchLane:"implementation",defaultRoleLane:"implementer"},{slug:"lorentz",displayName:"Lorentz",description:"Review persona.",dispatchLane:"review",defaultRoleLane:"report_reviewer"},{slug:"dalton",displayName:"Dalton",description:"Landing persona.",dispatchLane:"landing",defaultRoleLane:"implementer"}],w={"worker.prompt.core_rules":["Structured final result (recommended): record completion as JSON with summary, files, PR URLs, verification, risks, and blockers.","Completion handoff (required): before you stop, summarize the outcome in your last message and append a heartbeat line with phase `complete` and a structured finalResult object. Commit your work cleanly and open a GitHub PR (draft OK) for substantial changes \u2014 never leave uncommitted changes behind without reporting them.","Review-only workers must not open new implementation PRs \u2014 review the existing PR and record a verdict in the final result. Prefer `gh pr view` / `gh pr diff`; if a local checkout is needed, use a disposable ref or detached worktree, not a checked-out `pr-*` branch.","Keep verification targeted to touched paths; avoid full-monorepo verification unless explicitly requested.","Do not run `npm publish`.","If verification fails, append a heartbeat line immediately with the failing command, reason, and next action."].join(`
2
+ `),"worker.prompt.progress.compact":"Plan progress: when planId is set, report progress with `kynver plan progress --plan <planId> --row <rowKey> --role implementer --status in_progress|running|partial|blocked`. Do not mark rows done from the worker CLI.","worker.prompt.progress.full":["Structured plan progress (required when planId is set):","- Report checkpoints with `kynver plan progress --plan <planId> --row <rowKey> --role implementer --status in_progress|running|partial|blocked`.","- When a slice is finished, emit `partial` with evidence (`--evidence pr:<url>`, `--evidence path:<file>`, or `--evidence command:<cmd>`).","- Do not propose or confirm row `done` from the worker CLI."].join(`
3
+ `),"worker.prompt.merge_gate.compact":"Verification cost control: prefer local verification before requesting CI runs; do not push empty commits to re-trigger CI; record verification evidence on the PR.","worker.prompt.merge_gate.full":["Verification cost control:","- Prefer local verification of touched paths before requesting any CI run.","- Do not push empty commits to re-trigger CI.","- Record verification evidence on the PR before requesting review."].join(`
4
+ `),"worker.prompt.plan_artifacts.compact":"Plan artifacts: when authoring or revising plan documents, open a GitHub PR early and iterate from that PR branch; do not leave the canonical plan only in a local worktree.","worker.prompt.plan_artifacts.full":["Plan artifacts (when authoring or revising plan documents):","- Create a feature branch and open a GitHub PR (draft OK) before substantial drafting; commit and push the plan file.","- Iterate on that PR branch and link the PR URL on the related task and progress evidence."].join(`
5
+ `)},b={"harness.maxTaskAttempts":4,"harness.dispatchCooldownMs":5e3,"daemon.idleIntervalMs":5*6e4,"daemon.maxIdleStreak":10},g={version:x,generatedAt:"1970-01-01T00:00:00.000Z",personas:y,instructions:w,policyThresholds:b};var P=g;function i(e){let t=P.instructions[e];if(typeof t=="string"&&t.trim())return t;let r=g.instructions[e];return typeof r=="string"?r:""}var v="runtime-context-budget-receipt.v2";function h(e){return!Number.isFinite(e)||e<=0?0:Math.ceil(e/4)}function c(e,t,r){let o=t?.length??0;return{section:e,chars:o,estimatedTokens:h(o),...r}}function S(e,t){let r=e.reduce((n,a)=>n+a.chars,0),o=e.reduce((n,a)=>n+a.estimatedTokens,0),s=e.reduce((n,a)=>n+(a.omittedCount??0),0),l=e.reduce((n,a)=>n+(a.duplicatesCollapsed??0),0);return{totalChars:r,estimatedTokens:o,duplicatesCollapsed:t?.duplicatesCollapsed??l,omittedCount:t?.omittedCount??s}}function R(e){let t=S(e.sections,{duplicatesCollapsed:e.duplicatesCollapsed,omittedCount:e.omittedCount});return{schemaVersion:v,surface:e.surface,agentOsId:e.agentOsId?.trim()||null,taskId:e.taskId?.trim()||null,planId:e.planId?.trim()||null,personaSlug:e.personaSlug?.trim().toLowerCase()||null,mode:e.mode,generatedAt:e.generatedAt,...t,finalSerializedChars:e.finalSerializedChars,finalSerializedTokens:h(e.finalSerializedChars),usefulContextCoverage:e.usefulContextCoverage,budgetSatisfied:e.budgetSatisfied??!0,overBudgetReason:e.overBudgetReason??null,activeStateLookups:e.activeStateLookups??[],sections:e.sections}}var u=2e5,f=500;function C(e){let t=e.ownedPaths.length?`Owned paths: ${e.ownedPaths.join(", ")}. Do not edit outside these paths without stopping and reporting why.`:"Owned paths: unrestricted for this worker, but keep edits tightly scoped.",r=!!e.model?.toLowerCase().includes("haiku"),o=r?"compact":"full",s=r?e.planId?`Active planId: ${e.planId}`:"No planId on this worker.":e.planId?`Active planId: ${e.planId}${e.taskId?` \xB7 taskId: ${e.taskId}`:""}`:"No planId on this worker \u2014 still emit progress when you touch plan-scoped work.",l=[...i(`worker.prompt.progress.${o}`).split(`
6
+ `),s],n=i(`worker.prompt.merge_gate.${o}`).split(`
7
+ `),a=i(`worker.prompt.plan_artifacts.${o}`).split(`
8
+ `);return["You are running under the Kynver AgentOS runtime.","Immediately state your plan before editing.",t,`Worktree: ${e.worktreePath}`,`Progress heartbeat file: ${e.heartbeatPath}`,"After each major step, append one JSON line to the heartbeat file with fields: ts, phase, summary, changedFiles, blocker.","Before exiting, append a terminal heartbeat with phase `complete` and a structured finalResult object; if you cannot complete, append blocker plus the recovery next action instead of exiting silently.","Final response must include files changed, verification commands, and unresolved risks.",...i("worker.prompt.core_rules").split(`
9
+ `),"",...l,"",...n,"",...a,"",...e.runtimeEnvelopeMarkdown?.trim()?[e.runtimeEnvelopeMarkdown.trim(),""]:[],...e.contextEnvelopeMarkdown?.trim()?[e.contextEnvelopeMarkdown.trim(),""]:[],...e.personaMarkdown?.trim()?[e.personaMarkdown.trim(),""]:[],...e.instructionPolicyMarkdown?.trim()?["Operating rules (from AgentOS memory policy):",e.instructionPolicyMarkdown.trim(),""]:[],...e.memoryQualityMarkdown?.trim()?[e.memoryQualityMarkdown.trim(),""]:[],...e.repairTargetPrUrl?[...m({targetPrUrl:e.repairTargetPrUrl,targetPrBranch:e.repairTargetBranch??null}),""]:[],"Task:",e.task].join(`
10
+ `)}function _(e){let t=e.ownedPaths.length?`Owned paths: ${e.ownedPaths.join(", ")}. Do not edit outside these paths without stopping and reporting why.`:"Owned paths: unrestricted for this worker, but keep edits tightly scoped.",r=!!e.model?.toLowerCase().includes("haiku"),o=r?"compact":"full",s=r?e.planId?`Active planId: ${e.planId}`:"No planId on this worker.":e.planId?`Active planId: ${e.planId}${e.taskId?` \xB7 taskId: ${e.taskId}`:""}`:"No planId on this worker \u2014 still emit progress when you touch plan-scoped work.",l=[...i(`worker.prompt.progress.${o}`).split(`
11
+ `),s],n=i(`worker.prompt.merge_gate.${o}`).split(`
12
+ `),a=i(`worker.prompt.plan_artifacts.${o}`).split(`
13
+ `),d=e.repairTargetPrUrl?m({targetPrUrl:e.repairTargetPrUrl,targetPrBranch:e.repairTargetBranch??null}).join(`
14
+ `):null;return["You are running under the Kynver AgentOS runtime.","Immediately state your plan before editing.",t,`Worktree: ${e.worktreePath}`,`Progress heartbeat file: ${e.heartbeatPath}`,"After each major step, append one JSON line to the heartbeat file with fields: ts, phase, summary, changedFiles, blocker.","Before exiting, append a terminal heartbeat with phase `complete` and a structured finalResult object; if you cannot complete, append blocker plus the recovery next action instead of exiting silently.","Final response must include files changed, verification commands, and unresolved risks.",...i("worker.prompt.core_rules").split(`
15
+ `),l.join(`
16
+ `),n.join(`
17
+ `),a.join(`
18
+ `),d,e.task].filter(p=>!!p).join(`
19
+ `)}function E(e){let t=C(e),r=_(e),o=e.surface??"runtime_prompt",s=[c("structural",r),c("memory_preview",e.runtimeEnvelopeMarkdown),c("task_envelope",e.contextEnvelopeMarkdown),c("persona",e.personaMarkdown),c("instruction_policy",e.instructionPolicyMarkdown),c("memory_quality",e.memoryQualityMarkdown)],l=e.enforcementEnabled??!1,n=t.length,a=Buffer.byteLength(t,"utf8"),d=n>u,p=d?u>=f:n>=f,I=d?`runtime_prompt exceeds hard cap: ${n} chars (${a} UTF-8 bytes) > ${u} (${l?"active":"shadow"} mode; no truncation applied)`:null,k=R({surface:o,agentOsId:e.agentOsId??null,taskId:e.taskId??null,planId:e.planId??null,personaSlug:e.personaSlug??null,mode:e.mode??"routine",generatedAt:e.generatedAt??new Date(0).toISOString(),finalSerializedChars:n,sections:s,usefulContextCoverage:{requiredOperatingRuleSlugsPresent:[],requiredOperatingRuleDenominator:0,activeTaskHandlePresent:!!e.taskId,planHandlePresent:!!e.planId,selectedHandles:[],omittedHandles:[],expansionRoutes:[],memoryQualityTraceId:null},budgetSatisfied:!d&&p,overBudgetReason:I});return{prompt:t,receipt:k}}var B={hardCapChars:u,safeFloorChars:f};export{B as RUNTIME_PROMPT_ENFORCEMENT,C as buildPrompt,E as buildPromptWithReceipt};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kynver-app/runtime",
3
- "version": "0.2.19",
3
+ "version": "0.2.23",
4
4
  "description": "Kynver AgentOS local execution runtime and CLI",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -49,6 +49,36 @@
49
49
  "import": "./dist/server/orchestration.js",
50
50
  "default": "./dist/server/orchestration.js"
51
51
  },
52
+ "./server/adapter-contract": {
53
+ "types": "./dist/server/adapter-contract.d.ts",
54
+ "import": "./dist/server/adapter-contract.js",
55
+ "default": "./dist/server/adapter-contract.js"
56
+ },
57
+ "./server/context-budget-receipt": {
58
+ "types": "./dist/server/context-budget-receipt.d.ts",
59
+ "import": "./dist/server/context-budget-receipt.js",
60
+ "default": "./dist/server/context-budget-receipt.js"
61
+ },
62
+ "./server/prompt": {
63
+ "types": "./dist/server/prompt.d.ts",
64
+ "import": "./dist/server/prompt.js",
65
+ "default": "./dist/server/prompt.js"
66
+ },
67
+ "./server/node-runtime-policy": {
68
+ "types": "./dist/server/node-runtime-policy.d.ts",
69
+ "import": "./dist/server/node-runtime-policy.js",
70
+ "default": "./dist/server/node-runtime-policy.js"
71
+ },
72
+ "./server/model-routing": {
73
+ "types": "./dist/server/model-routing.d.ts",
74
+ "import": "./dist/server/model-routing.js",
75
+ "default": "./dist/server/model-routing.js"
76
+ },
77
+ "./server/db-credentials": {
78
+ "types": "./dist/server/db-credentials.d.ts",
79
+ "import": "./dist/server/db-credentials.js",
80
+ "default": "./dist/server/db-credentials.js"
81
+ },
52
82
  "./server/heavy-verification": {
53
83
  "types": "./dist/server/heavy-verification.d.ts",
54
84
  "import": "./dist/server/heavy-verification.js",
@@ -108,7 +138,7 @@
108
138
  "README.md"
109
139
  ],
110
140
  "scripts": {
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",
141
+ "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/adapter-contract.ts src/server/context-budget-receipt.ts src/server/prompt.ts src/server/node-runtime-policy.ts src/server/model-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 && tsc -p tsconfig.json --emitDeclarationOnly && node scripts/chmod-cli-bin.mjs",
112
142
  "typecheck": "tsc -p tsconfig.json --noEmit",
113
143
  "test": "vitest run --config vitest.config.ts",
114
144
  "prepublishOnly": "node ../../scripts/npm-publish-guard.mjs && npm run build"