@kynver-app/runtime 0.2.99 → 0.2.100
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/cli.js +121 -117
- package/dist/desktop-entry.js +85 -81
- package/dist/index.js +144 -140
- package/dist/local-run-store/index.js +12 -12
- package/dist/server/cleanup.js +14 -14
- package/dist/server/default-repo.js +1 -1
- package/dist/server/dispatch-routing.js +3 -3
- package/dist/server/model-routing.js +3 -3
- package/dist/server/monitor.js +7 -7
- package/dist/server/worker-policy.js +2 -2
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
var
|
|
2
|
-
`),In(t,e)}catch(n){try{Tn(t,{force:!0})}catch{}throw n}}function se(e){return String(e).replace(/\/+$/,"")}var k=l(()=>{"use strict";Pr()});var Ln,ci,Mn,ui,Dr=l(()=>{"use strict";Ln=["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"],ci=new Set(Ln),Mn=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],ui=new Set(Mn)});var ie=l(()=>{"use strict";V();k();Dr()});var Lr=l(()=>{"use strict";ie()});var Me=l(()=>{"use strict";ie();V();Lr()});function Fr(e){let r=se(e);try{let t=new URL(r);return t.hostname.toLowerCase()===Mr?(t.hostname=`www.${Mr}`,se(t.toString())):r}catch{return r}}function Ke(e){if(e?.trim())return Fr(se(e.trim()))}async function ae(e,r,t=fetch){let n=Fr(e),o=new Headers(r?.headers),s=0;for(;s<=Kr;){let i=await t(n,{...r,headers:o,redirect:"manual"});if(![301,302,303,307,308].includes(i.status))return i;let a=i.headers.get("location");if(!a)return i;let u=new URL(a,n);if(u.origin!==new URL(n).origin||u.username||u.password)throw await i.body?.cancel(),new Error("kynver API fetch refused unsafe redirect (origin change or embedded credentials)");let c=(r?.method??"GET").toUpperCase();if(!["GET","HEAD"].includes(c)&&i.status!==307&&i.status!==308)return i;await i.body?.cancel(),n=u.toString(),s+=1}throw new Error(`kynver API fetch exceeded ${Kr} redirects for ${e}`)}var Mr,Kr,le=l(()=>{"use strict";k();Mr="kynver.com";Kr=10});function F(e){let r=(e??"").trim().toLowerCase();return r==="ghost"||r==="forge"||r==="box"?r:r.includes("forge")?"forge":r.includes("ghost")||r.includes("openclaw")?"ghost":"box"}function ce(e,r){return e[r]?.trim()||null}function Ur(e){let r=e?.split(":")[0]?.trim();return r?F(r):null}function G(e=process.env,r={}){let t=[],n=Ur(r.boxId),o=Ur(ce(e,"KYNVER_BOX_ID")),s=r.boxKind?.trim();if(s)return n&&n!==F(s)&&t.push(`config.boxId=${r.boxId} conflicts with boxKind=${s}; using explicit boxKind=${s}`),{boxKind:F(s),source:"config",slugInferenceBlocked:!1,warnings:t};let i=ce(e,"KYNVER_BOX_KIND");if(i)return o&&o!==F(i)&&t.push(`KYNVER_BOX_ID=${ce(e,"KYNVER_BOX_ID")} conflicts with KYNVER_BOX_KIND=${i}; using explicit KYNVER_BOX_KIND=${i}`),{boxKind:F(i),source:"env",slugInferenceBlocked:!1,warnings:t};if(n)return{boxKind:n,source:"config",slugInferenceBlocked:!1,warnings:t};if(o)return{boxKind:o,source:"env",slugInferenceBlocked:!1,warnings:t};let a=ce(e,"KYNVER_AGENT_OS_SLUG");return a&&t.push(`KYNVER_AGENT_OS_SLUG=${a} is a workspace slug, not box identity \u2014 operators set boxKind via \`kynver setup --box-kind forge|ghost\` or KYNVER_BOX_KIND; customers default to box`),{boxKind:"box",source:"default",slugInferenceBlocked:!!a,warnings:t}}var M=l(()=>{"use strict"});function Fe(e,r){return e==="forge"?4:Math.max(1,r)}function ue(e,r){return e==="forge"?Math.min(Math.max(1,r),4):Math.max(1,r)}var de=l(()=>{"use strict"});var Br=l(()=>{"use strict"});var Ti,Ni,Ue=l(()=>{"use strict";Ti=25*1024*1024*1024,Ni=12*1024*1024*1024});var Ki,Fi,Wr=l(()=>{"use strict";Ue();Ki=5*1024*1024*1024,Fi=10*1024*1024*1024});var ji,Yi,Be=l(()=>{"use strict";Wr();Ue();ji=30*1024*1024*1024,Yi=15*1024*1024*1024});function $r(){return jr()}var pe=l(()=>{"use strict";$e();k()});var Yr=l(()=>{"use strict";pe();k()});var Vr=l(()=>{"use strict"});var Gr=l(()=>{"use strict";Vr();k()});var qr=l(()=>{"use strict"});var Jr=l(()=>{"use strict";qr()});var me=l(()=>{"use strict"});var zr=l(()=>{"use strict";Jr();k();me()});var Xr=l(()=>{"use strict";me()});var Qr=l(()=>{"use strict"});var Zr=l(()=>{"use strict"});var He=l(()=>{"use strict"});var et=l(()=>{"use strict"});var rt=l(()=>{"use strict";He();et()});var tt=l(()=>{"use strict";Gr();zr();me();Xr();Qr();ie();Zr();rt();He();k()});var nt=l(()=>{"use strict";tt()});function ot(e,r={}){let t=r.perWorkerMemBytes??je,n=r.memReserveBytes??Ye,o=r.memUtilization??Ve,s=Math.max(0,Math.floor(e*o)-n),i=Math.max(1,Math.floor(s/t));return Math.min(i,fe)}var je,Ye,Ve,fe,st=l(()=>{"use strict";Br();I();M();de();ge();Be();pe();Yr();nt();k();je=500*1024*1024,Ye=4*1024*1024*1024,Ve=.85,fe=64});function Z(e,r){let t=Number(e);return!Number.isFinite(t)||t<=0?r:Math.floor(t)}function Ge(e){let r=e.config??{},t=e.env??process.env,n=Z(r.perWorkerMemBytes,je),o=Z(r.memReserveBytes,Ye),s=Math.min(1,Math.max(.1,Number(r.memUtilization)>0?Number(r.memUtilization):Ve)),i=ot(e.totalMemBytes,{perWorkerMemBytes:n,memReserveBytes:o,memUtilization:s});if(e.configuredMaxWorkersOverride!==void 0&&e.configuredMaxWorkersOverride!==null)return{configuredMaxWorkers:Z(e.configuredMaxWorkersOverride,i),autoCap:i,workerCapSource:"workspace_override"};if(r.maxConcurrentWorkers!==void 0&&r.maxConcurrentWorkers!==null){let c=Z(r.maxConcurrentWorkers,0)||null;if(c)return{configuredMaxWorkers:Math.min(c,fe),autoCap:i,workerCapSource:"config"}}let u=(t.KYNVER_MAX_WORKERS_INTENTIONAL==="1"||t.KYNVER_MAX_WORKERS_INTENTIONAL==="true")&&t.KYNVER_MAX_WORKERS&&Z(t.KYNVER_MAX_WORKERS,0)||null;return u?{configuredMaxWorkers:Math.min(u,fe),autoCap:i,workerCapSource:"env"}:{configuredMaxWorkers:null,autoCap:i,workerCapSource:"auto"}}var ge=l(()=>{"use strict";st()});import{homedir as Yn}from"node:os";import Vn from"node:path";var it,qe=l(()=>{"use strict";it=Vn.join(Yn(),".kynver",".env")});var at=l(()=>{"use strict"});var lt=l(()=>{"use strict";at()});var ct=l(()=>{"use strict"});var ut=l(()=>{"use strict";k()});var Je=l(()=>{"use strict";lt();ct();ut()});var dt=l(()=>{"use strict"});var pt=l(()=>{"use strict";dt()});var he=l(()=>{"use strict";qe();V();I();Je();pt()});var mt=l(()=>{"use strict";M();M()});var ft=l(()=>{"use strict";qe();Je();he()});function yt(e){if(!ht)return e;if(!gt)throw new ze;return gt}function Qe(){if(ht)throw new Xe}var ze,Xe,ht,gt,Ze=l(()=>{"use strict";ze=class extends Error{constructor(){super("desktop credential provider is not installed; refusing to fall back to file or env credentials"),this.name="DesktopCredentialProviderMissingError"}},Xe=class extends Error{constructor(){super("the credentials file is disabled in desktop mode"),this.name="LegacyCredentialStoreDisabledError"}},ht=!1,gt=null});import{existsSync as T,mkdirSync as zn,readdirSync as ye,renameSync as Rt,statSync as Xn}from"node:fs";import N from"node:path";function bt(e){try{return Xn(e).isDirectory()}catch{return!1}}function Qn(e){if(!T(e))return!0;for(let r of St){let t=N.join(e,r);if(T(t)&&(!bt(t)||ye(t).length>0))return!1}return!0}function Zn(e){let r=N.join(e,"runs");if(!T(r)||!bt(r))return!1;for(let t of ye(r,{withFileTypes:!0})){if(!t.isDirectory()||t.name==="runs")continue;let n=N.join(r,t.name,"run.json");if(Q(n,void 0)?.id)return!0}return!1}function eo(e){let r=N.join(e,"runs");if(!T(r))return!1;for(let t of ye(r,{withFileTypes:!0})){if(!t.isDirectory())continue;if(Q(N.join(r,t.name,"run.json"),void 0)?.boxKind==="ghost")return!0}return!1}function ro(e){let r=N.join(e,"ghost");return T(r)?!T(N.join(r,"runs")):eo(e)}function kt(e){return Zn(e.sharedRoot)?Qn(e.forgeRoot)?ro(e.sharedRoot)?{action:"blocked",blocker:"Forge legacy harness migration blocked: Ghost pool is co-hosted on this host (ghost namespace or ghost-attributed runs under ~/.kynver/harness). Drain in-flight Ghost runs from the shared root, or get operator sign-off for a fresh Forge cutover before enabling box-scoped isolation."}:{action:"migrate"}:{action:"none"}:{action:"none"}}function vt(e,r){zn(r,{recursive:!0});for(let t of St){let n=N.join(e,t),o=N.join(r,t);if(T(n)){if(T(o)&&ye(o).length>0)throw new Error(`Forge legacy harness migration failed: ${o} is not empty`);if(T(o)){Rt(n,o);continue}Rt(n,o)}}}var St,xt=l(()=>{"use strict";k();St=["runs","worktrees"]});import{existsSync as b}from"node:fs";import{homedir as to}from"node:os";import S from"node:path";function er(e=process.env){return e.HOME?.trim()||to()}function rr(e=process.env){return S.join(er(e),".kynver","harness")}function Re(e){let r=S.resolve(K(e.trim()));for(;no.has(S.basename(r));)r=S.dirname(r);return r}function oo(e,r=process.env){return S.join(rr(r),e)}function so(e=process.env){let r=rr(e);if(b(S.join(r,"runs")))return!0;if(b(r)&&!b(S.join(r,"ghost"))&&!b(S.join(r,"forge")))return b(r);let t=S.join(er(e),_t);return b(t)}function Se(e){let r=e.env??process.env,t=r.KYNVER_HARNESS_ROOT?.trim()||r.OPUS_HARNESS_ROOT?.trim();if(t)return{harnessRoot:Re(t),source:"env"};let n=e.configuredHarnessRoot?.trim();if(n)return{harnessRoot:Re(n),source:"config"};let o=oo(e.boxKind,r);if(b(S.join(o,"runs"))||b(o)&&!io(o))return{harnessRoot:o,source:"box_scoped"};let i=rr(r);if(e.boxKind==="forge"){let a=kt({sharedRoot:i,forgeRoot:o});if(a.action==="blocked")return{harnessRoot:o,source:"box_scoped",migrationBlocker:a.blocker};if(a.action==="migrate")return e.allowForgeLegacyMigration!==!1&&vt(i,o),{harnessRoot:o,source:"legacy_migrated"}}if(e.boxKind==="ghost"&&so(r)){if(b(S.join(i,"runs")))return{harnessRoot:i,source:"legacy_shared"};if(b(i)&&!b(S.join(i,"ghost"))&&!b(S.join(i,"forge")))return{harnessRoot:i,source:"legacy_shared"};let u=S.join(er(r),_t);if(b(u))return{harnessRoot:u,source:"legacy_shared"}}return{harnessRoot:o,source:"box_scoped"}}function io(e){if(!b(e))return!0;for(let r of["runs","worktrees"]){let t=S.join(e,r);if(b(t))return!1}return!0}var _t,no,tr=l(()=>{"use strict";V();xt();_t=S.join(".openclaw","harness");no=new Set(["runs","worktrees"])});import Et from"node:os";function be(e){return e?.trim()?e.trim():null}function ao(e,r){let t=r.trim().toLowerCase()||"host";return`${e}-${t}`.replace(/[^a-z0-9._-]+/g,"-")}function lo(e){return e.KYNVER_DISPATCH_STRICT_IDENTITY==="1"||e.KYNVER_DISPATCH_STRICT_IDENTITY==="true"||e.KYNVER_DAEMON_STRICT_IDENTITY==="1"||e.KYNVER_DAEMON_STRICT_IDENTITY==="true"}function ke(e=_(),r=process.env,t={}){let n=G(r,e),o=[...n.warnings],s=[],i=!!(e.boxKind?.trim()||be(r.KYNVER_BOX_KIND)),a=t.strict===!0||lo(r);if((t.requireExplicitBoxKind||a)&&!i&&s.push("boxKind is not persisted in ~/.kynver/config.json and KYNVER_BOX_KIND is unset \u2014 run `kynver setup` (customers: boxKind=box) or `kynver setup --box-kind forge|ghost` for operator pools before dispatch"),n.slugInferenceBlocked&&!i){let H="ambiguous box identity: KYNVER_AGENT_OS_SLUG is set without KYNVER_BOX_KIND or config.boxKind";a||t.requireExplicitBoxKind?s.push(H):o.push(`${H} \u2014 defaulting box kind to box (customer), not forge/ghost`)}let u=be(e.runnerId),c=be(r.KYNVER_RUNTIME_ID)??be(r.OPENCLAW_RUNTIME_ID),p=u??c??ao(n.boxKind,Et.hostname()),m=u?"config":c?"env":"derived";m==="derived"&&o.push(`runnerId not persisted \u2014 using derived id "${p}"; run \`kynver setup --box-kind ${n.boxKind}\` to persist runner identity`);let d=Ge({config:e,env:r,totalMemBytes:Et.totalmem()}),$=ue(n.boxKind,d.configuredMaxWorkers??Fe(n.boxKind,d.autoCap)),v=Se({boxKind:n.boxKind,configuredHarnessRoot:e.harnessRoot,env:r});return v.migrationBlocker&&s.push(v.migrationBlocker),s.length>0?{ok:!1,identity:null,errors:s,warnings:o}:{ok:!0,identity:{boxKind:n.boxKind,boxKindSource:n.source,runnerId:p,runnerIdSource:m,maxConcurrentWorkers:$,workerCapSource:d.workerCapSource,harnessRoot:v.harnessRoot,harnessRootSource:v.source},errors:s,warnings:o}}var ve=l(()=>{"use strict";I();M();de();ge();tr()});var Ct=l(()=>{"use strict";Me();M();mt();I();he();ft();le();Ze();ve()});var po,jc,At=l(()=>{"use strict";po=["claude","cursor","codex","gemini","gemini-api","openai-compatible"],jc=po.join("|")});import{existsSync as It,mkdirSync as mo,readFileSync as Tt,writeFileSync as fo}from"node:fs";import{homedir as go,totalmem as eu}from"node:os";import or from"node:path";function ho(e){return{...e,...e.harnessRoot?.trim()?{harnessRoot:K(e.harnessRoot.trim())}:{},...e.defaultRepo?.trim()?{defaultRepo:K(e.defaultRepo.trim())}:{}}}function _(){if(!It(wt))return{};try{return ho(JSON.parse(Tt(wt,"utf8")))}catch{return{}}}function xe(){if(Qe(),!It(nr))return{};try{return JSON.parse(Tt(nr,"utf8"))}catch{return{}}}function Ot(e){Qe(),mo(sr,{recursive:!0}),fo(nr,`${JSON.stringify(e,null,2)}
|
|
3
|
-
`,{mode:384})}function
|
|
4
|
-
`)){let n=t.trim().split(/\s+/);n.length<3||r.push({mountPoint:
|
|
1
|
+
var a=(e,r,t)=>()=>{if(t)throw t[0];try{return e&&(r=e(e=0)),r}catch(n){throw t=[n],n}};import{homedir as Tr}from"node:os";import Pr from"node:path";function On(e){return e==="~"?Tr():e.startsWith("~/")||e.startsWith("~\\")?Pr.join(Tr(),e.slice(2)):e}function K(e){return Pr.resolve(On(e))}var V=a(()=>{"use strict"});var Nr=a(()=>{"use strict"});import{existsSync as oi,mkdirSync as In,readFileSync as Tn,readdirSync as si,renameSync as Pn,rmSync as Nn,statSync as ii,writeFileSync as Dn}from"node:fs";import{randomBytes as Ln}from"node:crypto";import Mn from"node:path";function Le(e){console.error(e),process.exit(1)}function Q(e,r){try{return JSON.parse(Tn(e,"utf8"))}catch(t){if(arguments.length>1)return r;Le(`failed to read ${e}: ${t.message}`)}}function oe(e,r){In(Mn.dirname(e),{recursive:!0});let t=`${e}.${process.pid}.${Ln(4).toString("hex")}.tmp`;try{Dn(t,`${JSON.stringify(r,null,2)}
|
|
2
|
+
`),Pn(t,e)}catch(n){try{Nn(t,{force:!0})}catch{}throw n}}function se(e){return String(e).replace(/\/+$/,"")}var k=a(()=>{"use strict";Nr()});var Kn,di,Fn,pi,Dr=a(()=>{"use strict";Kn=["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"],di=new Set(Kn),Fn=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],pi=new Set(Fn)});var ie=a(()=>{"use strict";V();k();Dr()});var Lr=a(()=>{"use strict";ie()});var Me=a(()=>{"use strict";ie();V();Lr()});function Fr(e){let r=se(e);try{let t=new URL(r);return t.hostname.toLowerCase()===Mr?(t.hostname=`www.${Mr}`,se(t.toString())):r}catch{return r}}function Ke(e){if(e?.trim())return Fr(se(e.trim()))}async function ae(e,r,t=fetch){let n=Fr(e),o=new Headers(r?.headers),s=0;for(;s<=Kr;){let i=await t(n,{...r,headers:o,redirect:"manual"});if(![301,302,303,307,308].includes(i.status))return i;let l=i.headers.get("location");if(!l)return i;let c=new URL(l,n);if(c.origin!==new URL(n).origin||c.username||c.password)throw await i.body?.cancel(),new Error("kynver API fetch refused unsafe redirect (origin change or embedded credentials)");let u=(r?.method??"GET").toUpperCase();if(!["GET","HEAD"].includes(u)&&i.status!==307&&i.status!==308)return i;await i.body?.cancel(),n=c.toString(),s+=1}throw new Error(`kynver API fetch exceeded ${Kr} redirects for ${e}`)}var Mr,Kr,le=a(()=>{"use strict";k();Mr="kynver.com";Kr=10});function F(e){let r=(e??"").trim().toLowerCase();return r==="ghost"||r==="forge"||r==="box"?r:r.includes("forge")?"forge":r.includes("ghost")||r.includes("openclaw")?"ghost":"box"}function ue(e,r){return e[r]?.trim()||null}function Ur(e){let r=e?.split(":")[0]?.trim();return r?F(r):null}function G(e=process.env,r={}){let t=[],n=Ur(r.boxId),o=Ur(ue(e,"KYNVER_BOX_ID")),s=r.boxKind?.trim();if(s)return n&&n!==F(s)&&t.push(`config.boxId=${r.boxId} conflicts with boxKind=${s}; using explicit boxKind=${s}`),{boxKind:F(s),source:"config",slugInferenceBlocked:!1,warnings:t};let i=ue(e,"KYNVER_BOX_KIND");if(i)return o&&o!==F(i)&&t.push(`KYNVER_BOX_ID=${ue(e,"KYNVER_BOX_ID")} conflicts with KYNVER_BOX_KIND=${i}; using explicit KYNVER_BOX_KIND=${i}`),{boxKind:F(i),source:"env",slugInferenceBlocked:!1,warnings:t};if(n)return{boxKind:n,source:"config",slugInferenceBlocked:!1,warnings:t};if(o)return{boxKind:o,source:"env",slugInferenceBlocked:!1,warnings:t};let l=ue(e,"KYNVER_AGENT_OS_SLUG");return l&&t.push(`KYNVER_AGENT_OS_SLUG=${l} is a workspace slug, not box identity \u2014 operators set boxKind via \`kynver setup --box-kind forge|ghost\` or KYNVER_BOX_KIND; customers default to box`),{boxKind:"box",source:"default",slugInferenceBlocked:!!l,warnings:t}}var M=a(()=>{"use strict"});function Fe(e,r){return e==="forge"?4:Math.max(1,r)}function ce(e,r){return e==="forge"?Math.min(Math.max(1,r),4):Math.max(1,r)}var de=a(()=>{"use strict"});var Br=a(()=>{"use strict"});var Ni,Di,Ue=a(()=>{"use strict";Ni=25*1024*1024*1024,Di=12*1024*1024*1024});var Ui,Bi,Wr=a(()=>{"use strict";Ue();Ui=5*1024*1024*1024,Bi=10*1024*1024*1024});var Vi,Gi,Be=a(()=>{"use strict";Wr();Ue();Vi=30*1024*1024*1024,Gi=15*1024*1024*1024});function $r(){return jr()}var pe=a(()=>{"use strict";$e();k()});var Yr=a(()=>{"use strict";pe();k()});var Vr=a(()=>{"use strict"});var Gr=a(()=>{"use strict";Vr();k()});var qr=a(()=>{"use strict"});var Jr=a(()=>{"use strict";qr()});var me=a(()=>{"use strict"});var zr=a(()=>{"use strict"});var Xr=a(()=>{"use strict"});var Qr=a(()=>{"use strict";Jr();k();me();zr();Xr()});var Zr=a(()=>{"use strict";me()});var et=a(()=>{"use strict"});var rt=a(()=>{"use strict"});var He=a(()=>{"use strict"});var tt=a(()=>{"use strict"});var nt=a(()=>{"use strict";He();tt()});var ot=a(()=>{"use strict";Gr();Qr();me();Zr();et();ie();rt();nt();He();k()});var st=a(()=>{"use strict";ot()});function it(e,r={}){let t=r.perWorkerMemBytes??je,n=r.memReserveBytes??Ye,o=r.memUtilization??Ve,s=Math.max(0,Math.floor(e*o)-n),i=Math.max(1,Math.floor(s/t));return Math.min(i,fe)}var je,Ye,Ve,fe,at=a(()=>{"use strict";Br();I();M();de();ge();Be();pe();Yr();st();k();je=500*1024*1024,Ye=4*1024*1024*1024,Ve=.85,fe=64});function Z(e,r){let t=Number(e);return!Number.isFinite(t)||t<=0?r:Math.floor(t)}function Ge(e){let r=e.config??{},t=e.env??process.env,n=Z(r.perWorkerMemBytes,je),o=Z(r.memReserveBytes,Ye),s=Math.min(1,Math.max(.1,Number(r.memUtilization)>0?Number(r.memUtilization):Ve)),i=it(e.totalMemBytes,{perWorkerMemBytes:n,memReserveBytes:o,memUtilization:s});if(e.configuredMaxWorkersOverride!==void 0&&e.configuredMaxWorkersOverride!==null)return{configuredMaxWorkers:Z(e.configuredMaxWorkersOverride,i),autoCap:i,workerCapSource:"workspace_override"};if(r.maxConcurrentWorkers!==void 0&&r.maxConcurrentWorkers!==null){let u=Z(r.maxConcurrentWorkers,0)||null;if(u)return{configuredMaxWorkers:Math.min(u,fe),autoCap:i,workerCapSource:"config"}}let c=(t.KYNVER_MAX_WORKERS_INTENTIONAL==="1"||t.KYNVER_MAX_WORKERS_INTENTIONAL==="true")&&t.KYNVER_MAX_WORKERS&&Z(t.KYNVER_MAX_WORKERS,0)||null;return c?{configuredMaxWorkers:Math.min(c,fe),autoCap:i,workerCapSource:"env"}:{configuredMaxWorkers:null,autoCap:i,workerCapSource:"auto"}}var ge=a(()=>{"use strict";at()});import{homedir as Gn}from"node:os";import qn from"node:path";var lt,qe=a(()=>{"use strict";lt=qn.join(Gn(),".kynver",".env")});var ut=a(()=>{"use strict"});var ct=a(()=>{"use strict";ut()});var dt=a(()=>{"use strict"});var pt=a(()=>{"use strict";k()});var Je=a(()=>{"use strict";ct();dt();pt()});var mt=a(()=>{"use strict"});var ft=a(()=>{"use strict";mt()});var ye=a(()=>{"use strict";qe();V();I();Je();ft()});var gt=a(()=>{"use strict";M();M()});var yt=a(()=>{"use strict";qe();Je();ye()});function St(e){if(!Rt)return e;if(!ht)throw new ze;return ht}function Qe(){if(Rt)throw new Xe}var ze,Xe,Rt,ht,Ze=a(()=>{"use strict";ze=class extends Error{constructor(){super("desktop credential provider is not installed; refusing to fall back to file or env credentials"),this.name="DesktopCredentialProviderMissingError"}},Xe=class extends Error{constructor(){super("the credentials file is disabled in desktop mode"),this.name="LegacyCredentialStoreDisabledError"}},Rt=!1,ht=null});import{existsSync as T,mkdirSync as Qn,readdirSync as he,renameSync as bt,statSync as Zn}from"node:fs";import P from"node:path";function vt(e){try{return Zn(e).isDirectory()}catch{return!1}}function eo(e){if(!T(e))return!0;for(let r of kt){let t=P.join(e,r);if(T(t)&&(!vt(t)||he(t).length>0))return!1}return!0}function ro(e){let r=P.join(e,"runs");if(!T(r)||!vt(r))return!1;for(let t of he(r,{withFileTypes:!0})){if(!t.isDirectory()||t.name==="runs")continue;let n=P.join(r,t.name,"run.json");if(Q(n,void 0)?.id)return!0}return!1}function to(e){let r=P.join(e,"runs");if(!T(r))return!1;for(let t of he(r,{withFileTypes:!0})){if(!t.isDirectory())continue;if(Q(P.join(r,t.name,"run.json"),void 0)?.boxKind==="ghost")return!0}return!1}function no(e){let r=P.join(e,"ghost");return T(r)?!T(P.join(r,"runs")):to(e)}function xt(e){return ro(e.sharedRoot)?eo(e.forgeRoot)?no(e.sharedRoot)?{action:"blocked",blocker:"Forge legacy harness migration blocked: Ghost pool is co-hosted on this host (ghost namespace or ghost-attributed runs under ~/.kynver/harness). Drain in-flight Ghost runs from the shared root, or get operator sign-off for a fresh Forge cutover before enabling box-scoped isolation."}:{action:"migrate"}:{action:"none"}:{action:"none"}}function _t(e,r){Qn(r,{recursive:!0});for(let t of kt){let n=P.join(e,t),o=P.join(r,t);if(T(n)){if(T(o)&&he(o).length>0)throw new Error(`Forge legacy harness migration failed: ${o} is not empty`);if(T(o)){bt(n,o);continue}bt(n,o)}}}var kt,Et=a(()=>{"use strict";k();kt=["runs","worktrees"]});import{existsSync as b}from"node:fs";import{homedir as oo}from"node:os";import S from"node:path";function er(e=process.env){return e.HOME?.trim()||oo()}function rr(e=process.env){return S.join(er(e),".kynver","harness")}function Re(e){let r=S.resolve(K(e.trim()));for(;so.has(S.basename(r));)r=S.dirname(r);return r}function io(e,r=process.env){return S.join(rr(r),e)}function ao(e=process.env){let r=rr(e);if(b(S.join(r,"runs")))return!0;if(b(r)&&!b(S.join(r,"ghost"))&&!b(S.join(r,"forge")))return b(r);let t=S.join(er(e),Ct);return b(t)}function Se(e){let r=e.env??process.env,t=r.KYNVER_HARNESS_ROOT?.trim()||r.OPUS_HARNESS_ROOT?.trim();if(t)return{harnessRoot:Re(t),source:"env"};let n=e.configuredHarnessRoot?.trim();if(n)return{harnessRoot:Re(n),source:"config"};let o=io(e.boxKind,r);if(b(S.join(o,"runs"))||b(o)&&!lo(o))return{harnessRoot:o,source:"box_scoped"};let i=rr(r);if(e.boxKind==="forge"){let l=xt({sharedRoot:i,forgeRoot:o});if(l.action==="blocked")return{harnessRoot:o,source:"box_scoped",migrationBlocker:l.blocker};if(l.action==="migrate")return e.allowForgeLegacyMigration!==!1&&_t(i,o),{harnessRoot:o,source:"legacy_migrated"}}if(e.boxKind==="ghost"&&ao(r)){if(b(S.join(i,"runs")))return{harnessRoot:i,source:"legacy_shared"};if(b(i)&&!b(S.join(i,"ghost"))&&!b(S.join(i,"forge")))return{harnessRoot:i,source:"legacy_shared"};let c=S.join(er(r),Ct);if(b(c))return{harnessRoot:c,source:"legacy_shared"}}return{harnessRoot:o,source:"box_scoped"}}function lo(e){if(!b(e))return!0;for(let r of["runs","worktrees"]){let t=S.join(e,r);if(b(t))return!1}return!0}var Ct,so,tr=a(()=>{"use strict";V();Et();Ct=S.join(".openclaw","harness");so=new Set(["runs","worktrees"])});import At from"node:os";function be(e){return e?.trim()?e.trim():null}function uo(e,r){let t=r.trim().toLowerCase()||"host";return`${e}-${t}`.replace(/[^a-z0-9._-]+/g,"-")}function co(e){return e.KYNVER_DISPATCH_STRICT_IDENTITY==="1"||e.KYNVER_DISPATCH_STRICT_IDENTITY==="true"||e.KYNVER_DAEMON_STRICT_IDENTITY==="1"||e.KYNVER_DAEMON_STRICT_IDENTITY==="true"}function ke(e=_(),r=process.env,t={}){let n=G(r,e),o=[...n.warnings],s=[],i=!!(e.boxKind?.trim()||be(r.KYNVER_BOX_KIND)),l=t.strict===!0||co(r);if((t.requireExplicitBoxKind||l)&&!i&&s.push("boxKind is not persisted in ~/.kynver/config.json and KYNVER_BOX_KIND is unset \u2014 run `kynver setup` (customers: boxKind=box) or `kynver setup --box-kind forge|ghost` for operator pools before dispatch"),n.slugInferenceBlocked&&!i){let H="ambiguous box identity: KYNVER_AGENT_OS_SLUG is set without KYNVER_BOX_KIND or config.boxKind";l||t.requireExplicitBoxKind?s.push(H):o.push(`${H} \u2014 defaulting box kind to box (customer), not forge/ghost`)}let c=be(e.runnerId),u=be(r.KYNVER_RUNTIME_ID)??be(r.OPENCLAW_RUNTIME_ID),p=c??u??uo(n.boxKind,At.hostname()),m=c?"config":u?"env":"derived";m==="derived"&&o.push(`runnerId not persisted \u2014 using derived id "${p}"; run \`kynver setup --box-kind ${n.boxKind}\` to persist runner identity`);let d=Ge({config:e,env:r,totalMemBytes:At.totalmem()}),$=ce(n.boxKind,d.configuredMaxWorkers??Fe(n.boxKind,d.autoCap)),v=Se({boxKind:n.boxKind,configuredHarnessRoot:e.harnessRoot,env:r});return v.migrationBlocker&&s.push(v.migrationBlocker),s.length>0?{ok:!1,identity:null,errors:s,warnings:o}:{ok:!0,identity:{boxKind:n.boxKind,boxKindSource:n.source,runnerId:p,runnerIdSource:m,maxConcurrentWorkers:$,workerCapSource:d.workerCapSource,harnessRoot:v.harnessRoot,harnessRootSource:v.source},errors:s,warnings:o}}var ve=a(()=>{"use strict";I();M();de();ge();tr()});var wt=a(()=>{"use strict";Me();M();gt();I();ye();yt();le();Ze();ve()});var fo,rc,Ot=a(()=>{"use strict";fo=["claude","cursor","codex","gemini","gemini-api","openai-compatible"],rc=fo.join("|")});import{existsSync as Pt,mkdirSync as go,readFileSync as Nt,writeFileSync as yo}from"node:fs";import{homedir as ho,totalmem as dc}from"node:os";import or from"node:path";function Ro(e){return{...e,...e.harnessRoot?.trim()?{harnessRoot:K(e.harnessRoot.trim())}:{},...e.defaultRepo?.trim()?{defaultRepo:K(e.defaultRepo.trim())}:{}}}function _(){if(!Pt(It))return{};try{return Ro(JSON.parse(Nt(It,"utf8")))}catch{return{}}}function xe(){if(Qe(),!Pt(nr))return{};try{return JSON.parse(Nt(nr,"utf8"))}catch{return{}}}function Tt(e){Qe(),go(sr,{recursive:!0}),yo(nr,`${JSON.stringify(e,null,2)}
|
|
3
|
+
`,{mode:384})}function Dt(){return St(So)}function Lt(){return Dt().getApiKey()}function bo(e,r){Dt().persistRunnerToken(e,r)}function ko(e){let r=Mt(e);return r||xo("requires --base-url, KYNVER_API_URL, KYNVER_CRON_FIRE_BASE_URL, or ~/.kynver/config.json apiBaseUrl"),r}function Mt(e){let r=e||process.env.KYNVER_API_URL||process.env.KYNVER_CRON_FIRE_BASE_URL||process.env.OPENCLAW_CRON_FIRE_BASE_URL||_().apiBaseUrl;return Ke(r)}async function Kt(e,r,t){let n=Lt(),o=Mt(t?.baseUrl);if(!n)return{ok:!1,reason:"KYNVER_API_KEY is required to refresh a rejected runner token"};if(!r)return{ok:!1,reason:"agentOsId is required to refresh a rejected runner token"};if(!o)return{ok:!1,reason:"KYNVER_API_URL or --base-url is required to refresh a rejected runner token"};try{let s=await vo(r,{baseUrl:o,apiKey:n});return s&&s!==e?(bo(r,s),{ok:!0,token:s}):{ok:!1,reason:"runner credential refresh returned the rejected token"}}catch(s){return{ok:!1,reason:s.message}}}async function vo(e,r){let t=r?.apiKey||Lt();if(!t)throw new Error("API key required \u2014 run `kynver login` first");let o=`${ko(r?.baseUrl)}/api/agent-os/by-id/${encodeURIComponent(e)}/runner-credentials`,s=await ae(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`},body:JSON.stringify(r?.enableMcpUpdates?{enableMcpUpdates:!0}:{})}),i=await s.text(),l=null;try{l=JSON.parse(i)}catch{l=null}if(!s.ok||!l?.token)throw new Error(`runner credential mint failed (${s.status}): ${l?.error??i.slice(0,200)}`);return l.token}function xo(e){console.error(e),process.exit(1)}var sr,It,nr,Ec,Cc,So,I=a(()=>{"use strict";Me();V();le();M();de();ge();Be();ye();wt();Ot();ve();Ze();sr=or.join(ho(),".kynver"),It=or.join(sr,"config.json"),nr=or.join(sr,"credentials");Ec=500*1024*1024,Cc=4*1024*1024*1024;So={kind:"file",getApiKey(){return process.env.KYNVER_API_KEY?process.env.KYNVER_API_KEY:xe().apiKey},getRunnerToken(e){let r=xe();if(!!r.runnerToken&&!!e&&r.runnerTokenAgentOsId===e)return r.runnerToken;let n=process.env.KYNVER_RUNNER_TOKEN?.trim();if(n)return n;if(r.runnerToken&&!(e&&r.runnerTokenAgentOsId&&r.runnerTokenAgentOsId!==e))return r.runnerToken},persistApiKey(e){Tt({...xe(),apiKey:e})},persistRunnerToken(e,r){Tt({...xe(),runnerToken:r,runnerTokenAgentOsId:e})}}});import Ft from"node:path";function _e(e){return Re(e)}function ir(){let e=process.env.KYNVER_HARNESS_ROOT||process.env.OPUS_HARNESS_ROOT;if(e)return _e(e);let r=_(),t=r.harnessRoot?.trim();if(t)return _e(t);let n=ke(r,process.env);return n.identity?n.identity.harnessRoot:Se({boxKind:"forge",configuredHarnessRoot:null}).harnessRoot}function Hr(e){return Ft.join(_e(e),"runs")}function _o(e){return Ft.join(_e(e),"worktrees")}function jr(){let e=ir();return{harnessRoot:e,runsDir:Hr(e),worktreesDir:_o(e)}}var $e=a(()=>{"use strict";I();tr();ve();k()});import{existsSync as un,realpathSync as cn,readFileSync as dn}from"node:fs";import wr from"node:path";var pn=new Set(["ext4","ext3","ext2","btrfs","xfs","f2fs","zfs","tmpfs","overlay","overlayfs"]),mn=new Set(["9p","drvfs","nfs","nfs4","cifs","smb","smbfs","smb3","sshfs","fuse.sshfs","davfs","davfs2","glusterfs","ceph","lustre","afs","vboxsf","prl_fs","virtiofs"]);function fn(){try{return dn("/proc/self/mounts","utf8")}catch{return null}}function gn(e){let r=wr.resolve(e);for(let t=0;t<64;t+=1){if(un(r))try{return cn.native(r)}catch{return r}let n=wr.dirname(r);if(n===r)return r;r=n}return r}function yn(e){return e.replace(/\\(\d{3})/g,(r,t)=>String.fromCharCode(Number.parseInt(t,8)))}function hn(e){let r=[];for(let t of e.split(`
|
|
4
|
+
`)){let n=t.trim().split(/\s+/);n.length<3||r.push({mountPoint:yn(n[1]),fsType:n[2]})}return r}function Or(e,r=process.platform){return r==="win32"?e.replace(/\\/g,"/"):e}function Rn(e,r){let t=null,n=Or(e);for(let o of r){let s=Or(o.mountPoint),i=s.endsWith("/")?s:`${s}/`;(n===s||`${n}/`.startsWith(i))&&(!t||o.mountPoint.length>t.mountPoint.length)&&(t=o)}return t}function Pe(e,r){let n=(r?.resolveRealPath??gn)(e),o=(r?.mountsSource??fn)();if(o===null)return{verdict:"rejected",reason:"Mount information unavailable \u2014 the filesystem type cannot be established safely, so WAL mode is refused (fail closed).",filesystemType:null,mountPoint:null,resolvedPath:n};let s=Rn(n,hn(o));if(!s)return{verdict:"rejected",reason:"No mount entry covers the resolved database path \u2014 refusing WAL mode (fail closed).",filesystemType:null,mountPoint:null,resolvedPath:n};let i=s.fsType.toLowerCase();return mn.has(i)||i.startsWith("fuse.")?{verdict:"rejected",reason:`Filesystem '${i}' is network-like or crosses an OS boundary; SQLite WAL locking is not safe there.`,filesystemType:i,mountPoint:s.mountPoint,resolvedPath:n}:pn.has(i)?{verdict:"accepted",reason:`Local filesystem '${i}' accepted for WAL mode.`,filesystemType:i,mountPoint:s.mountPoint,resolvedPath:n}:{verdict:"rejected",reason:`Filesystem '${i}' is unknown to the qualification policy; WAL mode is refused rather than guessed (fail closed).`,filesystemType:i,mountPoint:s.mountPoint,resolvedPath:n}}var Ne=1,ne=class extends Error{constructor(r,t){super(`local-run-store schema version ${r} is newer than this runtime supports (${t}); refusing to open. Upgrade the runtime or quarantine the database deliberately.`),this.name="SchemaDowngradeRefusedError"}},Sn=[`CREATE TABLE IF NOT EXISTS local_meta (
|
|
5
5
|
key TEXT PRIMARY KEY,
|
|
6
6
|
value TEXT NOT NULL
|
|
7
7
|
) STRICT`,`CREATE TABLE IF NOT EXISTS process_identity (
|
|
@@ -27,7 +27,7 @@ var l=(e,r,t)=>()=>{if(t)throw t[0];try{return e&&(r=e(e=0)),r}catch(n){throw t=
|
|
|
27
27
|
payload_json TEXT NOT NULL,
|
|
28
28
|
created_at TEXT NOT NULL,
|
|
29
29
|
PRIMARY KEY (scope, seq)
|
|
30
|
-
) STRICT`];function
|
|
30
|
+
) STRICT`];function bn(e){if(!e.prepare("SELECT name FROM sqlite_master WHERE type = 'table' AND name = 'local_meta'").get())return null;let t=e.prepare("SELECT value FROM local_meta WHERE key = 'schema_version'").get();if(!t?.value)return null;let n=Number.parseInt(t.value,10);return Number.isFinite(n)?n:null}function Ir(e,r){let t=bn(e);if(t!==null&&t>1)throw new ne(t,1);e.exec("BEGIN IMMEDIATE");try{for(let n of Sn)e.exec(n);e.prepare("INSERT INTO local_meta (key, value) VALUES ('schema_version', ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value").run(String(1)),e.prepare("INSERT INTO local_meta (key, value) VALUES ('schema_applied_at', ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value").run(r),e.exec("COMMIT")}catch(n){throw e.exec("ROLLBACK"),n}}import{mkdirSync as kn}from"node:fs";import vn from"node:path";import{DatabaseSync as xn}from"node:sqlite";var X=class extends Error{constructor(r){super(`local-run-store refused: ${r}`),this.name="FilesystemPolicyError"}},_n="local-run-store.sqlite",En=5e3,Y=class e{db;now;databasePath;constructor(r,t,n){this.db=r,this.databasePath=t,this.now=n}static open(r){let t=Pe(r.directory,r.classifyOptions);if(t.verdict!=="accepted")throw new X(t.reason);kn(r.directory,{recursive:!0,mode:448});let n=vn.join(r.directory,r.filename??_n),o=new xn(n,{timeout:r.busyTimeoutMs??En}),s=r.now??(()=>new Date);try{o.exec("PRAGMA journal_mode = WAL");let i=o.prepare("PRAGMA journal_mode").get();if(i?.journal_mode?.toLowerCase()!=="wal")throw new X(`journal_mode did not switch to WAL (got '${i?.journal_mode}') \u2014 filesystem unsuitable.`);o.exec("PRAGMA synchronous = NORMAL"),Ir(o,s().toISOString())}catch(i){throw o.close(),i}return new e(o,n,s)}inImmediateTransaction(r){this.db.exec("BEGIN IMMEDIATE");try{let t=r();return this.db.exec("COMMIT"),t}catch(t){throw this.db.exec("ROLLBACK"),t}}registerProcessIdentity(r){let t=this.now().toISOString();return this.inImmediateTransaction(()=>{this.db.prepare(`INSERT INTO process_identity
|
|
31
31
|
(process_key, pid, runtime_version, node_version, started_at, registered_at)
|
|
32
32
|
VALUES (?, ?, ?, ?, ?, ?)
|
|
33
33
|
ON CONFLICT(process_key) DO UPDATE SET
|
|
@@ -36,23 +36,23 @@ var l=(e,r,t)=>()=>{if(t)throw t[0];try{return e&&(r=e(e=0)),r}catch(n){throw t=
|
|
|
36
36
|
node_version = excluded.node_version,
|
|
37
37
|
started_at = excluded.started_at,
|
|
38
38
|
registered_at = excluded.registered_at`).run(r.processKey,r.pid,r.runtimeVersion,r.nodeVersion,r.startedAt,t)}),{...r,registeredAt:t}}getProcessIdentity(r){let t=this.db.prepare(`SELECT process_key, pid, runtime_version, node_version, started_at, registered_at
|
|
39
|
-
FROM process_identity WHERE process_key = ?`).get(r);return t?{processKey:t.process_key,pid:t.pid,runtimeVersion:t.runtime_version,nodeVersion:t.node_version,startedAt:t.started_at,registeredAt:t.registered_at}:null}tryReserveAdmission(r,t,n,o){let s=o??this.now(),i=new Date(s.getTime()+n).toISOString();return this.inImmediateTransaction(()=>{let
|
|
39
|
+
FROM process_identity WHERE process_key = ?`).get(r);return t?{processKey:t.process_key,pid:t.pid,runtimeVersion:t.runtime_version,nodeVersion:t.node_version,startedAt:t.started_at,registeredAt:t.registered_at}:null}tryReserveAdmission(r,t,n,o){let s=o??this.now(),i=new Date(s.getTime()+n).toISOString();return this.inImmediateTransaction(()=>{let l=this.db.prepare("SELECT reservation_key, owner, expires_at FROM admission_reservations WHERE reservation_key = ?").get(r);return l&&l.expires_at>s.toISOString()&&l.owner!==t?{acquired:!1,current:{key:r,owner:l.owner,expiresAt:l.expires_at}}:(this.db.prepare(`INSERT INTO admission_reservations (reservation_key, owner, expires_at, created_at)
|
|
40
40
|
VALUES (?, ?, ?, ?)
|
|
41
41
|
ON CONFLICT(reservation_key) DO UPDATE SET
|
|
42
42
|
owner = excluded.owner,
|
|
43
|
-
expires_at = excluded.expires_at`).run(r,t,i,s.toISOString()),{acquired:!0,current:{key:r,owner:t,expiresAt:i}})})}releaseAdmission(r,t){return this.inImmediateTransaction(()=>{let n=this.db.prepare("DELETE FROM admission_reservations WHERE reservation_key = ? AND owner = ?").run(r,t);return Number(n.changes)>0})}listAdmissionReservations(r){let t=Math.floor(r?.limit??200),n=Number.isFinite(t)?Math.max(1,Math.min(1e3,t)):200,o=[],s=[];if(r?.keyPrefix){let
|
|
43
|
+
expires_at = excluded.expires_at`).run(r,t,i,s.toISOString()),{acquired:!0,current:{key:r,owner:t,expiresAt:i}})})}releaseAdmission(r,t){return this.inImmediateTransaction(()=>{let n=this.db.prepare("DELETE FROM admission_reservations WHERE reservation_key = ? AND owner = ?").run(r,t);return Number(n.changes)>0})}listAdmissionReservations(r){let t=Math.floor(r?.limit??200),n=Number.isFinite(t)?Math.max(1,Math.min(1e3,t)):200,o=[],s=[];if(r?.keyPrefix){let c=r.keyPrefix.replace(/[\\%_]/g,u=>`\\${u}`);o.push("reservation_key LIKE ? ESCAPE '\\'"),s.push(`${c}%`)}r?.includeExpired||(o.push("expires_at > ?"),s.push((r?.now??this.now()).toISOString()));let i=o.length?`WHERE ${o.join(" AND ")}`:"";return this.db.prepare(`SELECT reservation_key, owner, expires_at
|
|
44
44
|
FROM admission_reservations ${i}
|
|
45
45
|
ORDER BY expires_at ASC, reservation_key ASC
|
|
46
|
-
LIMIT ?`).all(...s,n).map(
|
|
46
|
+
LIMIT ?`).all(...s,n).map(c=>({key:c.reservation_key,owner:c.owner,expiresAt:c.expires_at}))}recordOperationReceipt(r){return this.inImmediateTransaction(()=>{let t=this.db.prepare(`INSERT INTO operation_receipts (idempotency_key, operation, result_json, recorded_at)
|
|
47
47
|
VALUES (?, ?, ?, ?)
|
|
48
|
-
ON CONFLICT(idempotency_key) DO NOTHING`).run(r.idempotencyKey,r.operation,r.resultJson??null,this.now().toISOString());return{deduplicated:Number(t.changes)===0}})}listOperationReceipts(r){let t=Math.floor(r?.limit??200),n=Number.isFinite(t)?Math.max(1,Math.min(1e3,t)):200,o=[],s=[];if(r?.operation&&(o.push("operation = ?"),s.push(r.operation)),r?.keyPrefix){let
|
|
48
|
+
ON CONFLICT(idempotency_key) DO NOTHING`).run(r.idempotencyKey,r.operation,r.resultJson??null,this.now().toISOString());return{deduplicated:Number(t.changes)===0}})}listOperationReceipts(r){let t=Math.floor(r?.limit??200),n=Number.isFinite(t)?Math.max(1,Math.min(1e3,t)):200,o=[],s=[];if(r?.operation&&(o.push("operation = ?"),s.push(r.operation)),r?.keyPrefix){let c=r.keyPrefix.replace(/[\\%_]/g,u=>`\\${u}`);o.push("idempotency_key LIKE ? ESCAPE '\\'"),s.push(`${c}%`)}r?.recordedAfter&&(o.push("recorded_at > ?"),s.push(r.recordedAfter));let i=o.length?`WHERE ${o.join(" AND ")}`:"";return this.db.prepare(`SELECT idempotency_key, operation, result_json, recorded_at
|
|
49
49
|
FROM operation_receipts ${i}
|
|
50
50
|
ORDER BY recorded_at ASC, idempotency_key ASC
|
|
51
|
-
LIMIT ?`).all(...s,n).map(
|
|
51
|
+
LIMIT ?`).all(...s,n).map(c=>({idempotencyKey:c.idempotency_key,operation:c.operation,resultJson:c.result_json,recordedAt:c.recorded_at}))}deleteOperationReceiptsByKeys(r){return r.length===0?0:this.inImmediateTransaction(()=>{let t=this.db.prepare("DELETE FROM operation_receipts WHERE idempotency_key = ?"),n=0;for(let o of r)n+=Number(t.run(o).changes);return n})}getOperationReceipt(r){let t=this.db.prepare(`SELECT idempotency_key, operation, result_json, recorded_at
|
|
52
52
|
FROM operation_receipts WHERE idempotency_key = ?`).get(r);return t?{idempotencyKey:t.idempotency_key,operation:t.operation,resultJson:t.result_json,recordedAt:t.recorded_at}:null}saveRecoveryCheckpoint(r){return this.inImmediateTransaction(()=>{let t=this.db.prepare("SELECT COALESCE(MAX(seq), 0) AS max_seq FROM recovery_checkpoints WHERE scope = ?").get(r.scope),n=Number(t.max_seq)+1;return this.db.prepare(`INSERT INTO recovery_checkpoints (scope, seq, payload_json, created_at)
|
|
53
53
|
VALUES (?, ?, ?, ?)`).run(r.scope,n,r.payloadJson,this.now().toISOString()),{seq:n}})}latestRecoveryCheckpoint(r){let t=this.db.prepare(`SELECT scope, seq, payload_json, created_at FROM recovery_checkpoints
|
|
54
|
-
WHERE scope = ? ORDER BY seq DESC LIMIT 1`).get(r);return t?{scope:t.scope,seq:t.seq,payloadJson:t.payload_json,createdAt:t.created_at}:null}localSchemaVersion(){return 1}checkpointTruncate(){this.db.exec("PRAGMA wal_checkpoint(TRUNCATE)")}integrityCheck(){return this.db.prepare("PRAGMA integrity_check").get()?.integrity_check==="ok"}pragma(r){let t=this.db.prepare(`PRAGMA ${r}`).get();return String(Object.values(t)[0])}close(){this.db.close()}};import{existsSync as _n,renameSync as En}from"node:fs";function Cn(e,r){let t=`${e}.quarantine-${r}`;for(let n of["","-wal","-shm"]){let o=`${e}${n}`;_n(o)&&En(o,`${t}${n}`)}return t}function De(e){let r=e.quarantineStamp??(e.now??(()=>new Date))().toISOString().replace(/[:.]/g,"-"),t=null;try{let s=Y.open(e);if(s.integrityCheck())return{store:s,recovered:!1,quarantinedTo:null};s.close()}catch(s){if(s.name==="SchemaDowngradeRefusedError"||s.name==="FilesystemPolicyError")throw s;t=s}let n=`${e.directory}/${e.filename??"local-run-store.sqlite"}`,o=Cn(n,r);try{return{store:Y.open(e),recovered:!0,quarantinedTo:o}}catch(s){throw new AggregateError([t,s].filter(Boolean),"local-run-store rebuild after quarantine failed")}}$e();function xo(){if(process.env.KYNVER_LRS_TEST_CLASSIFY_BYPASS==="1")return{mountsSource:()=>"/dev/vda / ext4 rw 0 0",resolveRealPath:()=>"/tmp/kynver-lrs-test/db"}}function _o(){return Kt.classifyOptions??xo()}var Kt={};function Eo(e){Kt=e}var Ft=300*1e3,P=null,ee=0;function Co(e){ee+=1;try{let r=_o(),t=De({directory:e,...r?{classifyOptions:r}:{}});return{store:t.store,status:{state:"open",harnessRoot:e,databasePath:t.store.databasePath,schemaVersion:t.store.localSchemaVersion(),recovered:t.recovered,quarantinedTo:t.quarantinedTo,reason:null,openAttempts:ee},failedAtMs:null,permanentRefusal:!1}}catch(r){return{store:null,status:{state:"unavailable",harnessRoot:e,databasePath:null,schemaVersion:null,recovered:!1,quarantinedTo:null,reason:`${r.name}: ${r.message}`,openAttempts:ee},failedAtMs:Date.now(),permanentRefusal:r.name==="FilesystemPolicyError"||r.name==="SchemaDowngradeRefusedError"}}}function Ao(e,r){return e.store||e.permanentRefusal?!1:e.failedAtMs===null?!0:r-e.failedAtMs>=Ft}function f(e=Date.now()){let r=ir();return(!P||P.status.harnessRoot!==r||Ao(P,e))&&(lr(),P=Co(r)),P.store}function Ut(){return P?P.status:{state:"unopened",harnessRoot:null,databasePath:null,schemaVersion:null,recovered:!1,quarantinedTo:null,reason:null,openAttempts:ee}}function ar(){return f(),Ut()}function lr(){try{P?.store?.close()}catch{}P=null}function wo(){lr(),ee=0}I();k();import{existsSync as Oo,readFileSync as Io}from"node:fs";import{homedir as To}from"node:os";import No from"node:path";var Po=3e4,x=null;function cr(e){let r=e.replace(/[^A-Za-z0-9_-]/g,"_");return No.join(To(),".kynver",`local-run-store-flags-${r}.json`)}function ur(e){if(!e||typeof e!="object"||Array.isArray(e))return{};let r=e,t={},n=["dispatchReceipts","admission","planOutbox","keeper","meshLease","quota"];for(let o of n){let s=r[o];(s==="off"||s==="shadow"||s==="enforce")&&(t[o]=s)}return t}function Do(e){if(!e||typeof e!="object"||Array.isArray(e))return null;let r=e.response;if(!r||typeof r!="object"||Array.isArray(r))return null;let t=r.localRunStoreFlags;return t===void 0?null:ur(t)}function Lo(e,r){try{let t=cr(e),n={contractVersion:1,agentOsId:e,flags:ur(r),deliveredAt:new Date().toISOString()};oe(t,n),x={flags:n.flags,loadedAtMs:Date.now(),file:t}}catch{}}function dr(e=Date.now()){if(process.env.KYNVER_LRS_REMOTE_FLAGS_DISABLED==="1")return{};if(x&&e-x.loadedAtMs<Po)return x.flags;try{let r=_().agentOsId?.trim();if(!r)return x={flags:{},loadedAtMs:e,file:null},x.flags;let t=cr(r);if(!Oo(t))return x={flags:{},loadedAtMs:e,file:t},x.flags;let n=JSON.parse(Io(t,"utf8")),o=n?.contractVersion===1?ur(n.flags):{};return x={flags:o,loadedAtMs:e,file:t},o}catch{return x={flags:{},loadedAtMs:e,file:null},x.flags}}function Mo(){x=null}var Bt=[{key:"dispatchReceipts",env:"KYNVER_LRS_DISPATCH_RECEIPTS",milestone:"D1"},{key:"admission",env:"KYNVER_LRS_ADMISSION",milestone:"D2"},{key:"planOutbox",env:"KYNVER_LRS_PLAN_OUTBOX",milestone:"D3"},{key:"keeper",env:"KYNVER_LRS_KEEPER",milestone:"D4"},{key:"meshLease",env:"KYNVER_LRS_MESH_LEASE",milestone:"D4"},{key:"quota",env:"KYNVER_LRS_QUOTA",milestone:"D4"}];function Wt(e){let r=e?.trim().toLowerCase()??"";return r===""?{mode:"off",unknown:!1}:r==="off"||r==="shadow"||r==="enforce"?{mode:r,unknown:!1}:{mode:"off",unknown:!0}}function A(e=process.env){let r={},t={},n=[],o=dr();for(let s of Bt){let i=e[s.env];if(typeof i=="string"&&i.trim()!==""){let c=Wt(i);r[s.key]=c.mode,t[s.key]="env",c.unknown&&n.push(`${s.env}='${i}' is not off|shadow|enforce \u2014 treating as off`);continue}let u=o[s.key];if(u){r[s.key]=u,t[s.key]="server";continue}r[s.key]="off",t[s.key]="default"}return{flags:r,sources:t,warnings:n}}function Ko(e){return Object.values(e).some(r=>r!=="off")}var R={storeFailures:0,completionReplaysObserved:0,completionReplaysShortCircuited:0,agedReceiptsPruned:0};function w(e=process.env){return A(e).flags.dispatchReceipts}function pr(e){return w(e)!=="off"}function mr(e,r){return`dispatch:${e}:${r.taskId}:${r.leaseToken}`}function re(e,r,t){if(!pr())return;let n=f();if(n)try{n.recordOperationReceipt({idempotencyKey:mr(e,r),operation:`dispatch-${e}`,resultJson:t===void 0?null:JSON.stringify(t)})}catch{R.storeFailures+=1}}function Fo(e){re("claim",e,{runId:e.runId,workerName:e.workerName,provider:e.provider})}function fr(e){re("spawned",e)}function Ee(e,r){re("released",e,{reasonClass:r})}function Uo(e){re("completion-sent",e)}function Bo(e,r){re("completion-acked",e,{outcome:r})}function Wo(e){if(!pr())return!1;let r=f();if(!r)return!1;try{let t=r.getOperationReceipt(mr("completion-acked",e));if(t){let n=null;try{n=t.resultJson?JSON.parse(t.resultJson).outcome??null:null}catch{n=null}if(n==="acknowledged")return R.completionReplaysObserved+=1,!0}}catch{R.storeFailures+=1}return!1}function $o(e){let r=String(e??"").split(":")[0]?.trim()??"";return r.length>0?r.slice(0,64):"unknown"}function Ho(e){if(w()!=="enforce")return!1;let r=f();if(!r)return!1;try{let t=r.getOperationReceipt(mr("completion-acked",e));if(!t)return!1;let n=null;try{n=t.resultJson?JSON.parse(t.resultJson).outcome??null:null}catch{n=null}return n==="acknowledged"?(R.completionReplaysShortCircuited+=1,!0):!1}catch{return R.storeFailures+=1,!1}}var jo=600*1e3;function Yo(e,r){if(w()!=="enforce")return;let t=f();if(t)try{t.recordOperationReceipt({idempotencyKey:`dispatch:start-failed:${e}:${r}`,operation:"dispatch-start-failed",resultJson:JSON.stringify({runId:r})})}catch{R.storeFailures+=1}}function Vo(e,r){if(w()!=="enforce")return[];let t=f();if(!t)return[];let n=r?.nowMs??Date.now(),o=r?.windowMs??jo;try{return t.listOperationReceipts({operation:"dispatch-start-failed",recordedAfter:new Date(n-o).toISOString(),limit:200}).filter(s=>{try{return s.resultJson?JSON.parse(s.resultJson).runId===e:!1}catch{return!1}}).map(s=>{let i=s.idempotencyKey.slice(22);return i.slice(0,i.length-(e.length+1))}).filter(s=>s.length>0)}catch{return R.storeFailures+=1,[]}}function q(e){let r=e.split(":")[0]??"",t=Number(r);return Number.isInteger(t)&&t>=0?t:null}var Go=900*1e3,$t=10080*60*1e3,qo=1440*60*1e3,Jo=500,zo=300;function gr(e){let r={scannedClaims:0,strandedClaimCandidates:0,prunedReceipts:0};if(!pr())return r;let t=f();if(!t)return r;let n=e?.nowMs??Date.now(),o=e?.strandedAfterMs??Go;try{let s=t.listOperationReceipts({operation:"dispatch-claim",recordedAfter:new Date(n-$t).toISOString(),limit:Jo}),i=0,a=[];for(let c of s){let p=c.idempotencyKey.slice(15),m=Date.parse(c.recordedAt);if(!Number.isFinite(m)||n-m<o)continue;let d=t.getOperationReceipt(`dispatch:spawned:${p}`),$=t.getOperationReceipt(`dispatch:released:${p}`);if(d||$){n-m>=qo&&a.length+5<=zo&&a.push(c.idempotencyKey,`dispatch:spawned:${p}`,`dispatch:released:${p}`,`dispatch:completion-sent:${p}`,`dispatch:completion-acked:${p}`);continue}let v=p.split(":")[0]??"",H=q(p.slice(v.length+1));if((v?t.listOperationReceipts({keyPrefix:`dispatch:completion-acked:${v}:`,limit:10}):[]).some(h=>{if(H===null)return!0;let j=h.idempotencyKey.slice(`dispatch:completion-acked:${v}:`.length),L=q(j);return L===null||L>=H}))continue;let y=!1;if(e?.hasLiveWorker&&c.resultJson)try{let h=JSON.parse(c.resultJson);h.runId&&h.workerName&&(y=e.hasLiveWorker({runId:h.runId,workerName:h.workerName}))}catch{y=!1}y||(i+=1)}let u=a.length>0?t.deleteOperationReceiptsByKeys(a):0;if(w()==="enforce"){let c=t.listOperationReceipts({limit:100}).filter(p=>{let m=Date.parse(p.recordedAt);return Number.isFinite(m)&&n-m>=$t}).map(p=>p.idempotencyKey);if(c.length>0){let p=t.deleteOperationReceiptsByKeys(c);u+=p,R.agedReceiptsPruned+=p}}return{scannedClaims:s.length,strandedClaimCandidates:i,prunedReceipts:u}}catch{return R.storeFailures+=1,r}}function hr(){return{"dispatchReceipts.storeFailures":R.storeFailures,"dispatchReceipts.completionReplaysObserved":R.completionReplaysObserved,"dispatchReceipts.completionReplaysShortCircuited":R.completionReplaysShortCircuited,"dispatchReceipts.agedReceiptsPruned":R.agedReceiptsPruned}}function Xo(){R.storeFailures=0,R.completionReplaysObserved=0,R.completionReplaysShortCircuited=0,R.agedReceiptsPruned=0}import{readdirSync as ss,readFileSync as is}from"node:fs";var U=900*1e3,Rr="admission-shadow",yr="worker-slot:",E={storeFailures:0,missingForLive:0,deadSlotsReleased:0},Ce=!1;function Qo(){Ce=!1}function B(e=process.env){return A(e).flags.admission}function Ae(e,r){return`${yr}${e}:${r}`}function Zo(e,r){if(B()==="off")return;let t=f();if(t)try{t.tryReserveAdmission(Ae(e,r),Rr,U)}catch{E.storeFailures+=1}}function Sr(e,r){if(B()==="off")return;let t=f();if(t)try{t.releaseAdmission(Ae(e,r),Rr)}catch{E.storeFailures+=1}}function es(e){let r={liveReservations:0,refreshed:0,deadReleased:0,missingForLive:0,orphaned:0,adoptionPass:!1};if(B()==="off")return r;let t=f();if(!t)return r;try{let n=new Set(e.liveWorkers.map(d=>Ae(d.runId,d.workerName))),o=t.listAdmissionReservations({keyPrefix:yr,limit:500}),s=new Set(o.map(d=>d.key)),i=[...n].filter(d=>!s.has(d)).length,a=o.filter(d=>!n.has(d.key)).length,u=!Ce;Ce=!0,!u&&i>0&&(E.missingForLive+=i);let c=0;for(let d of e.liveWorkers)t.tryReserveAdmission(Ae(d.runId,d.workerName),Rr,U),c+=1;let p=0;for(let d of o)n.has(d.key)||t.releaseAdmission(d.key,d.owner)&&(p+=1,E.deadSlotsReleased+=1);return{liveReservations:t.listAdmissionReservations({keyPrefix:yr,limit:500}).length,refreshed:c,deadReleased:p,missingForLive:i,orphaned:a,adoptionPass:u}}catch{return E.storeFailures+=1,r}}function br(){return{"admission.storeFailures":E.storeFailures,"admission.missingForLive":E.missingForLive,"admission.deadSlotsReleased":E.deadSlotsReleased}}function rs(){E.storeFailures=0,E.missingForLive=0,E.deadSlotsReleased=0,Ce=!1}var Ie="worker-slot-n:",we=64;function Ht(e){return`${Ie}${e}`}function Oe(e,r){return`${e}:${r}`}var C={enforceStoreFailures:0,admissionsRefusedSlots:0,admissionsRefusedDiskBackstop:0};function ts(e){if(B()!=="enforce")return{admitted:!0};let r=f();if(!r)return{admitted:!0};let t=Math.max(0,Math.min(we,Math.floor(e.maxSlots)));if(e.diskActiveWorkers>=t)return C.admissionsRefusedDiskBackstop+=1,{admitted:!1,reason:"disk_backstop"};try{let n=Oe(e.runId,e.workerName);for(let o=0;o<t;o+=1)if(r.tryReserveAdmission(Ht(o),n,U).acquired)return{admitted:!0,slot:o};return C.admissionsRefusedSlots+=1,{admitted:!1,reason:"slots_exhausted"}}catch{return C.enforceStoreFailures+=1,{admitted:!0}}}function kr(e,r){if(B()==="off")return;let t=f();if(t)try{let n=Oe(e,r),o=t.listAdmissionReservations({keyPrefix:Ie,limit:we});for(let s of o)s.owner===n&&t.releaseAdmission(s.key,n)}catch{C.enforceStoreFailures+=1}}function ns(e){let r={refreshed:0,deadReleased:0,adopted:0};if(B()!=="enforce")return r;let t=f();if(!t)return r;try{let n=new Set(e.liveWorkers.map(c=>Oe(c.runId,c.workerName))),o=t.listAdmissionReservations({keyPrefix:Ie,limit:we}),s=0,i=0,a=new Set;for(let c of o)n.has(c.owner)?(t.tryReserveAdmission(c.key,c.owner,U),a.add(c.owner),s+=1):t.releaseAdmission(c.key,c.owner)&&(i+=1);let u=0;for(let c of e.liveWorkers){let p=Oe(c.runId,c.workerName);if(!a.has(p)){for(let m=0;m<we;m+=1)if(t.tryReserveAdmission(Ht(m),p,U).acquired){u+=1;break}}}return{refreshed:s,deadReleased:i,adopted:u}}catch{return C.enforceStoreFailures+=1,r}}function vr(){return{"admission.enforceStoreFailures":C.enforceStoreFailures,"admission.refusedSlotsExhausted":C.admissionsRefusedSlots,"admission.refusedDiskBackstop":C.admissionsRefusedDiskBackstop}}function os(){C.enforceStoreFailures=0,C.admissionsRefusedSlots=0,C.admissionsRefusedDiskBackstop=0}var as="dispatch:claim:",ls=900*1e3,cs=10080*60*1e3,us=200,O={recoveredStrandedClaims:0,recoveryDeferredOrphans:0,recoveryStoreFailures:0};function jt(e){if(process.platform!=="linux"||!e.trim())return null;let r=[];try{r=ss("/proc")}catch{return null}for(let t of r)if(/^\d+$/.test(t)&&Number(t)!==process.pid)try{if(is(`/proc/${t}/cmdline`,"utf8").replace(/\0/g," ").includes(e))return Number(t)}catch{}return null}async function xr(e){let r=w(),t={mode:r,scanned:0,outcomes:[]};if(r!=="enforce")return t;let n=f();if(!n)return t;let o=e.nowMs??Date.now(),s=e.strandedAfterMs??ls,i=e.findOrphanPid??jt,a=[],u;try{u=n.listOperationReceipts({operation:"dispatch-claim",recordedAfter:new Date(o-cs).toISOString(),limit:us})}catch{return O.recoveryStoreFailures+=1,t}for(let c of u){let p=c.idempotencyKey.slice(as.length),m=p.split(":")[0]??"",d=p.slice(m.length+1);if(!(!m||!d))try{let $=Date.parse(c.recordedAt);if(!Number.isFinite($)||o-$<s||n.getOperationReceipt(`dispatch:spawned:${p}`)||n.getOperationReceipt(`dispatch:released:${p}`))continue;let v=q(d);if(n.listOperationReceipts({keyPrefix:`dispatch:completion-acked:${m}:`,limit:10}).some(L=>{if(v===null)return!0;let z=q(L.idempotencyKey.slice(`dispatch:completion-acked:${m}:`.length));return z===null||z>=v}))continue;let J={};try{J=c.resultJson?JSON.parse(c.resultJson):{}}catch{J={}}let y=J.runId??null,h=J.workerName??null;if(y&&h&&e.hasLiveWorker({runId:y,workerName:h})){fr({taskId:m,leaseToken:d}),a.push({taskId:m,leaseToken:d,runId:y,workerName:h,action:"finalized_late"});continue}if(y&&h){let L=e.worktreePathFor({runId:y,workerName:h}),z=L?i(L):null;if(z!==null){O.recoveryDeferredOrphans+=1,a.push({taskId:m,leaseToken:d,runId:y,workerName:h,action:"deferred_orphan",detail:`live pid ${z} references ${L}`});continue}}if(!y){a.push({taskId:m,leaseToken:d,runId:y,workerName:h,action:"skipped",detail:"claim intent missing runId \u2014 cannot resolve lease owner"});continue}let j=await e.releaseClaim({taskId:m,leaseToken:d,runId:y});j.released?(Ee({taskId:m,leaseToken:d},"restart_recovery"),h&&(Sr(y,h),kr(y,h)),O.recoveredStrandedClaims+=1,a.push({taskId:m,leaseToken:d,runId:y,workerName:h,action:"released"})):j.transportError?a.push({taskId:m,leaseToken:d,runId:y,workerName:h,action:"deferred_transport",detail:j.detail}):(Ee({taskId:m,leaseToken:d},"restart_recovery_refused"),a.push({taskId:m,leaseToken:d,runId:y,workerName:h,action:"release_refused",detail:j.detail}))}catch{O.recoveryStoreFailures+=1}}return{mode:r,scanned:u.length,outcomes:a}}function _r(){return{"dispatchReceipts.recoveredStrandedClaims":O.recoveredStrandedClaims,"dispatchReceipts.recoveryDeferredOrphans":O.recoveryDeferredOrphans,"dispatchReceipts.recoveryStoreFailures":O.recoveryStoreFailures}}function ds(){O.recoveredStrandedClaims=0,O.recoveryDeferredOrphans=0,O.recoveryStoreFailures=0}pe();import ks from"node:path";var ps="kynver-harness:",ms="@runner:";function Yt(e,r){let t=e.trim(),n=r.trim();return`${ps}${t}${ms}${n}`}I();import qt from"node:os";var fs="embedded-1",gs=[{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"}],hs={"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(`
|
|
54
|
+
WHERE scope = ? ORDER BY seq DESC LIMIT 1`).get(r);return t?{scope:t.scope,seq:t.seq,payloadJson:t.payload_json,createdAt:t.created_at}:null}localSchemaVersion(){return 1}checkpointTruncate(){this.db.exec("PRAGMA wal_checkpoint(TRUNCATE)")}integrityCheck(){return this.db.prepare("PRAGMA integrity_check").get()?.integrity_check==="ok"}pragma(r){let t=this.db.prepare(`PRAGMA ${r}`).get();return String(Object.values(t)[0])}close(){this.db.close()}};import{existsSync as Cn,renameSync as An}from"node:fs";function wn(e,r){let t=`${e}.quarantine-${r}`;for(let n of["","-wal","-shm"]){let o=`${e}${n}`;Cn(o)&&An(o,`${t}${n}`)}return t}function De(e){let r=e.quarantineStamp??(e.now??(()=>new Date))().toISOString().replace(/[:.]/g,"-"),t=null;try{let s=Y.open(e);if(s.integrityCheck())return{store:s,recovered:!1,quarantinedTo:null};s.close()}catch(s){if(s.name==="SchemaDowngradeRefusedError"||s.name==="FilesystemPolicyError")throw s;t=s}let n=`${e.directory}/${e.filename??"local-run-store.sqlite"}`,o=wn(n,r);try{return{store:Y.open(e),recovered:!0,quarantinedTo:o}}catch(s){throw new AggregateError([t,s].filter(Boolean),"local-run-store rebuild after quarantine failed")}}$e();function Eo(){if(process.env.KYNVER_LRS_TEST_CLASSIFY_BYPASS==="1")return{mountsSource:()=>"/dev/vda / ext4 rw 0 0",resolveRealPath:()=>"/tmp/kynver-lrs-test/db"}}function Co(){return Ut.classifyOptions??Eo()}var Ut={};function Ao(e){Ut=e}var Bt=300*1e3,N=null,ee=0;function wo(e){ee+=1;try{let r=Co(),t=De({directory:e,...r?{classifyOptions:r}:{}});return{store:t.store,status:{state:"open",harnessRoot:e,databasePath:t.store.databasePath,schemaVersion:t.store.localSchemaVersion(),recovered:t.recovered,quarantinedTo:t.quarantinedTo,reason:null,openAttempts:ee},failedAtMs:null,permanentRefusal:!1}}catch(r){return{store:null,status:{state:"unavailable",harnessRoot:e,databasePath:null,schemaVersion:null,recovered:!1,quarantinedTo:null,reason:`${r.name}: ${r.message}`,openAttempts:ee},failedAtMs:Date.now(),permanentRefusal:r.name==="FilesystemPolicyError"||r.name==="SchemaDowngradeRefusedError"}}}function Oo(e,r){return e.store||e.permanentRefusal?!1:e.failedAtMs===null?!0:r-e.failedAtMs>=Bt}function f(e=Date.now()){let r=ir();return(!N||N.status.harnessRoot!==r||Oo(N,e))&&(lr(),N=wo(r)),N.store}function Wt(){return N?N.status:{state:"unopened",harnessRoot:null,databasePath:null,schemaVersion:null,recovered:!1,quarantinedTo:null,reason:null,openAttempts:ee}}function ar(){return f(),Wt()}function lr(){try{N?.store?.close()}catch{}N=null}function Io(){lr(),ee=0}I();k();import{existsSync as To,readFileSync as Po}from"node:fs";import{homedir as No}from"node:os";import Do from"node:path";var Lo=3e4,x=null;function ur(e){let r=e.replace(/[^A-Za-z0-9_-]/g,"_");return Do.join(No(),".kynver",`local-run-store-flags-${r}.json`)}function cr(e){if(!e||typeof e!="object"||Array.isArray(e))return{};let r=e,t={},n=["dispatchReceipts","admission","planOutbox","keeper","meshLease","quota"];for(let o of n){let s=r[o];(s==="off"||s==="shadow"||s==="enforce")&&(t[o]=s)}return t}function Mo(e){if(!e||typeof e!="object"||Array.isArray(e))return null;let r=e.response;if(!r||typeof r!="object"||Array.isArray(r))return null;let t=r.localRunStoreFlags;return t===void 0?null:cr(t)}function Ko(e,r){try{let t=ur(e),n={contractVersion:1,agentOsId:e,flags:cr(r),deliveredAt:new Date().toISOString()};oe(t,n),x={flags:n.flags,loadedAtMs:Date.now(),file:t}}catch{}}function dr(e=Date.now()){if(process.env.KYNVER_LRS_REMOTE_FLAGS_DISABLED==="1")return{};if(x&&e-x.loadedAtMs<Lo)return x.flags;try{let r=_().agentOsId?.trim();if(!r)return x={flags:{},loadedAtMs:e,file:null},x.flags;let t=ur(r);if(!To(t))return x={flags:{},loadedAtMs:e,file:t},x.flags;let n=JSON.parse(Po(t,"utf8")),o=n?.contractVersion===1?cr(n.flags):{};return x={flags:o,loadedAtMs:e,file:t},o}catch{return x={flags:{},loadedAtMs:e,file:null},x.flags}}function Fo(){x=null}var $t=[{key:"dispatchReceipts",env:"KYNVER_LRS_DISPATCH_RECEIPTS",milestone:"D1"},{key:"admission",env:"KYNVER_LRS_ADMISSION",milestone:"D2"},{key:"planOutbox",env:"KYNVER_LRS_PLAN_OUTBOX",milestone:"D3"},{key:"keeper",env:"KYNVER_LRS_KEEPER",milestone:"D4"},{key:"meshLease",env:"KYNVER_LRS_MESH_LEASE",milestone:"D4"},{key:"quota",env:"KYNVER_LRS_QUOTA",milestone:"D4"}];function Ht(e){let r=e?.trim().toLowerCase()??"";return r===""?{mode:"off",unknown:!1}:r==="off"||r==="shadow"||r==="enforce"?{mode:r,unknown:!1}:{mode:"off",unknown:!0}}function A(e=process.env){let r={},t={},n=[],o=dr();for(let s of $t){let i=e[s.env];if(typeof i=="string"&&i.trim()!==""){let u=Ht(i);r[s.key]=u.mode,t[s.key]="env",u.unknown&&n.push(`${s.env}='${i}' is not off|shadow|enforce \u2014 treating as off`);continue}let c=o[s.key];if(c){r[s.key]=c,t[s.key]="server";continue}r[s.key]="off",t[s.key]="default"}return{flags:r,sources:t,warnings:n}}function Uo(e){return Object.values(e).some(r=>r!=="off")}var R={storeFailures:0,completionReplaysObserved:0,completionReplaysShortCircuited:0,agedReceiptsPruned:0};function w(e=process.env){return A(e).flags.dispatchReceipts}function pr(e){return w(e)!=="off"}function mr(e,r){return`dispatch:${e}:${r.taskId}:${r.leaseToken}`}function re(e,r,t){if(!pr())return;let n=f();if(n)try{n.recordOperationReceipt({idempotencyKey:mr(e,r),operation:`dispatch-${e}`,resultJson:t===void 0?null:JSON.stringify(t)})}catch{R.storeFailures+=1}}function Bo(e){re("claim",e,{runId:e.runId,workerName:e.workerName,provider:e.provider})}function fr(e){re("spawned",e)}function Ee(e,r){re("released",e,{reasonClass:r})}function Wo(e){re("completion-sent",e)}function $o(e,r){re("completion-acked",e,{outcome:r})}function Ho(e){if(!pr())return!1;let r=f();if(!r)return!1;try{let t=r.getOperationReceipt(mr("completion-acked",e));if(t){let n=null;try{n=t.resultJson?JSON.parse(t.resultJson).outcome??null:null}catch{n=null}if(n==="acknowledged")return R.completionReplaysObserved+=1,!0}}catch{R.storeFailures+=1}return!1}function jo(e){let r=String(e??"").split(":")[0]?.trim()??"";return r.length>0?r.slice(0,64):"unknown"}function Yo(e){if(w()!=="enforce")return!1;let r=f();if(!r)return!1;try{let t=r.getOperationReceipt(mr("completion-acked",e));if(!t)return!1;let n=null;try{n=t.resultJson?JSON.parse(t.resultJson).outcome??null:null}catch{n=null}return n==="acknowledged"?(R.completionReplaysShortCircuited+=1,!0):!1}catch{return R.storeFailures+=1,!1}}var Vo=600*1e3;function Go(e,r){if(w()!=="enforce")return;let t=f();if(t)try{t.recordOperationReceipt({idempotencyKey:`dispatch:start-failed:${e}:${r}`,operation:"dispatch-start-failed",resultJson:JSON.stringify({runId:r})})}catch{R.storeFailures+=1}}function qo(e,r){if(w()!=="enforce")return[];let t=f();if(!t)return[];let n=r?.nowMs??Date.now(),o=r?.windowMs??Vo;try{return t.listOperationReceipts({operation:"dispatch-start-failed",recordedAfter:new Date(n-o).toISOString(),limit:200}).filter(s=>{try{return s.resultJson?JSON.parse(s.resultJson).runId===e:!1}catch{return!1}}).map(s=>{let i=s.idempotencyKey.slice(22);return i.slice(0,i.length-(e.length+1))}).filter(s=>s.length>0)}catch{return R.storeFailures+=1,[]}}function q(e){let r=e.split(":")[0]??"",t=Number(r);return Number.isInteger(t)&&t>=0?t:null}var Jo=900*1e3,jt=10080*60*1e3,zo=1440*60*1e3,Xo=500,Qo=300;function gr(e){let r={scannedClaims:0,strandedClaimCandidates:0,prunedReceipts:0};if(!pr())return r;let t=f();if(!t)return r;let n=e?.nowMs??Date.now(),o=e?.strandedAfterMs??Jo;try{let s=t.listOperationReceipts({operation:"dispatch-claim",recordedAfter:new Date(n-jt).toISOString(),limit:Xo}),i=0,l=[];for(let u of s){let p=u.idempotencyKey.slice(15),m=Date.parse(u.recordedAt);if(!Number.isFinite(m)||n-m<o)continue;let d=t.getOperationReceipt(`dispatch:spawned:${p}`),$=t.getOperationReceipt(`dispatch:released:${p}`);if(d||$){n-m>=zo&&l.length+5<=Qo&&l.push(u.idempotencyKey,`dispatch:spawned:${p}`,`dispatch:released:${p}`,`dispatch:completion-sent:${p}`,`dispatch:completion-acked:${p}`);continue}let v=p.split(":")[0]??"",H=q(p.slice(v.length+1));if((v?t.listOperationReceipts({keyPrefix:`dispatch:completion-acked:${v}:`,limit:10}):[]).some(y=>{if(H===null)return!0;let j=y.idempotencyKey.slice(`dispatch:completion-acked:${v}:`.length),L=q(j);return L===null||L>=H}))continue;let h=!1;if(e?.hasLiveWorker&&u.resultJson)try{let y=JSON.parse(u.resultJson);y.runId&&y.workerName&&(h=e.hasLiveWorker({runId:y.runId,workerName:y.workerName}))}catch{h=!1}h||(i+=1)}let c=l.length>0?t.deleteOperationReceiptsByKeys(l):0;if(w()==="enforce"){let u=t.listOperationReceipts({limit:100}).filter(p=>{let m=Date.parse(p.recordedAt);return Number.isFinite(m)&&n-m>=jt}).map(p=>p.idempotencyKey);if(u.length>0){let p=t.deleteOperationReceiptsByKeys(u);c+=p,R.agedReceiptsPruned+=p}}return{scannedClaims:s.length,strandedClaimCandidates:i,prunedReceipts:c}}catch{return R.storeFailures+=1,r}}function yr(){return{"dispatchReceipts.storeFailures":R.storeFailures,"dispatchReceipts.completionReplaysObserved":R.completionReplaysObserved,"dispatchReceipts.completionReplaysShortCircuited":R.completionReplaysShortCircuited,"dispatchReceipts.agedReceiptsPruned":R.agedReceiptsPruned}}function Zo(){R.storeFailures=0,R.completionReplaysObserved=0,R.completionReplaysShortCircuited=0,R.agedReceiptsPruned=0}import{readdirSync as as,readFileSync as ls}from"node:fs";var U=900*1e3,Rr="admission-shadow",hr="worker-slot:",E={storeFailures:0,missingForLive:0,deadSlotsReleased:0},Ce=!1;function es(){Ce=!1}function B(e=process.env){return A(e).flags.admission}function Ae(e,r){return`${hr}${e}:${r}`}function rs(e,r){if(B()==="off")return;let t=f();if(t)try{t.tryReserveAdmission(Ae(e,r),Rr,U)}catch{E.storeFailures+=1}}function Sr(e,r){if(B()==="off")return;let t=f();if(t)try{t.releaseAdmission(Ae(e,r),Rr)}catch{E.storeFailures+=1}}function ts(e){let r={liveReservations:0,refreshed:0,deadReleased:0,missingForLive:0,orphaned:0,adoptionPass:!1};if(B()==="off")return r;let t=f();if(!t)return r;try{let n=new Set(e.liveWorkers.map(d=>Ae(d.runId,d.workerName))),o=t.listAdmissionReservations({keyPrefix:hr,limit:500}),s=new Set(o.map(d=>d.key)),i=[...n].filter(d=>!s.has(d)).length,l=o.filter(d=>!n.has(d.key)).length,c=!Ce;Ce=!0,!c&&i>0&&(E.missingForLive+=i);let u=0;for(let d of e.liveWorkers)t.tryReserveAdmission(Ae(d.runId,d.workerName),Rr,U),u+=1;let p=0;for(let d of o)n.has(d.key)||t.releaseAdmission(d.key,d.owner)&&(p+=1,E.deadSlotsReleased+=1);return{liveReservations:t.listAdmissionReservations({keyPrefix:hr,limit:500}).length,refreshed:u,deadReleased:p,missingForLive:i,orphaned:l,adoptionPass:c}}catch{return E.storeFailures+=1,r}}function br(){return{"admission.storeFailures":E.storeFailures,"admission.missingForLive":E.missingForLive,"admission.deadSlotsReleased":E.deadSlotsReleased}}function ns(){E.storeFailures=0,E.missingForLive=0,E.deadSlotsReleased=0,Ce=!1}var Ie="worker-slot-n:",we=64;function Yt(e){return`${Ie}${e}`}function Oe(e,r){return`${e}:${r}`}var C={enforceStoreFailures:0,admissionsRefusedSlots:0,admissionsRefusedDiskBackstop:0};function os(e){if(B()!=="enforce")return{admitted:!0};let r=f();if(!r)return{admitted:!0};let t=Math.max(0,Math.min(we,Math.floor(e.maxSlots)));if(e.diskActiveWorkers>=t)return C.admissionsRefusedDiskBackstop+=1,{admitted:!1,reason:"disk_backstop"};try{let n=Oe(e.runId,e.workerName);for(let o=0;o<t;o+=1)if(r.tryReserveAdmission(Yt(o),n,U).acquired)return{admitted:!0,slot:o};return C.admissionsRefusedSlots+=1,{admitted:!1,reason:"slots_exhausted"}}catch{return C.enforceStoreFailures+=1,{admitted:!0}}}function kr(e,r){if(B()==="off")return;let t=f();if(t)try{let n=Oe(e,r),o=t.listAdmissionReservations({keyPrefix:Ie,limit:we});for(let s of o)s.owner===n&&t.releaseAdmission(s.key,n)}catch{C.enforceStoreFailures+=1}}function ss(e){let r={refreshed:0,deadReleased:0,adopted:0};if(B()!=="enforce")return r;let t=f();if(!t)return r;try{let n=new Set(e.liveWorkers.map(u=>Oe(u.runId,u.workerName))),o=t.listAdmissionReservations({keyPrefix:Ie,limit:we}),s=0,i=0,l=new Set;for(let u of o)n.has(u.owner)?(t.tryReserveAdmission(u.key,u.owner,U),l.add(u.owner),s+=1):t.releaseAdmission(u.key,u.owner)&&(i+=1);let c=0;for(let u of e.liveWorkers){let p=Oe(u.runId,u.workerName);if(!l.has(p)){for(let m=0;m<we;m+=1)if(t.tryReserveAdmission(Yt(m),p,U).acquired){c+=1;break}}}return{refreshed:s,deadReleased:i,adopted:c}}catch{return C.enforceStoreFailures+=1,r}}function vr(){return{"admission.enforceStoreFailures":C.enforceStoreFailures,"admission.refusedSlotsExhausted":C.admissionsRefusedSlots,"admission.refusedDiskBackstop":C.admissionsRefusedDiskBackstop}}function is(){C.enforceStoreFailures=0,C.admissionsRefusedSlots=0,C.admissionsRefusedDiskBackstop=0}var us="dispatch:claim:",cs=900*1e3,ds=10080*60*1e3,ps=200,O={recoveredStrandedClaims:0,recoveryDeferredOrphans:0,recoveryStoreFailures:0};function Vt(e){if(process.platform!=="linux"||!e.trim())return null;let r=[];try{r=as("/proc")}catch{return null}for(let t of r)if(/^\d+$/.test(t)&&Number(t)!==process.pid)try{if(ls(`/proc/${t}/cmdline`,"utf8").replace(/\0/g," ").includes(e))return Number(t)}catch{}return null}async function xr(e){let r=w(),t={mode:r,scanned:0,outcomes:[]};if(r!=="enforce")return t;let n=f();if(!n)return t;let o=e.nowMs??Date.now(),s=e.strandedAfterMs??cs,i=e.findOrphanPid??Vt,l=[],c;try{c=n.listOperationReceipts({operation:"dispatch-claim",recordedAfter:new Date(o-ds).toISOString(),limit:ps})}catch{return O.recoveryStoreFailures+=1,t}for(let u of c){let p=u.idempotencyKey.slice(us.length),m=p.split(":")[0]??"",d=p.slice(m.length+1);if(!(!m||!d))try{let $=Date.parse(u.recordedAt);if(!Number.isFinite($)||o-$<s||n.getOperationReceipt(`dispatch:spawned:${p}`)||n.getOperationReceipt(`dispatch:released:${p}`))continue;let v=q(d);if(n.listOperationReceipts({keyPrefix:`dispatch:completion-acked:${m}:`,limit:10}).some(L=>{if(v===null)return!0;let z=q(L.idempotencyKey.slice(`dispatch:completion-acked:${m}:`.length));return z===null||z>=v}))continue;let J={};try{J=u.resultJson?JSON.parse(u.resultJson):{}}catch{J={}}let h=J.runId??null,y=J.workerName??null;if(h&&y&&e.hasLiveWorker({runId:h,workerName:y})){fr({taskId:m,leaseToken:d}),l.push({taskId:m,leaseToken:d,runId:h,workerName:y,action:"finalized_late"});continue}if(h&&y){let L=e.worktreePathFor({runId:h,workerName:y}),z=L?i(L):null;if(z!==null){O.recoveryDeferredOrphans+=1,l.push({taskId:m,leaseToken:d,runId:h,workerName:y,action:"deferred_orphan",detail:`live pid ${z} references ${L}`});continue}}if(!h){l.push({taskId:m,leaseToken:d,runId:h,workerName:y,action:"skipped",detail:"claim intent missing runId \u2014 cannot resolve lease owner"});continue}let j=await e.releaseClaim({taskId:m,leaseToken:d,runId:h});j.released?(Ee({taskId:m,leaseToken:d},"restart_recovery"),y&&(Sr(h,y),kr(h,y)),O.recoveredStrandedClaims+=1,l.push({taskId:m,leaseToken:d,runId:h,workerName:y,action:"released"})):j.transportError?l.push({taskId:m,leaseToken:d,runId:h,workerName:y,action:"deferred_transport",detail:j.detail}):(Ee({taskId:m,leaseToken:d},"restart_recovery_refused"),l.push({taskId:m,leaseToken:d,runId:h,workerName:y,action:"release_refused",detail:j.detail}))}catch{O.recoveryStoreFailures+=1}}return{mode:r,scanned:c.length,outcomes:l}}function _r(){return{"dispatchReceipts.recoveredStrandedClaims":O.recoveredStrandedClaims,"dispatchReceipts.recoveryDeferredOrphans":O.recoveryDeferredOrphans,"dispatchReceipts.recoveryStoreFailures":O.recoveryStoreFailures}}function ms(){O.recoveredStrandedClaims=0,O.recoveryDeferredOrphans=0,O.recoveryStoreFailures=0}pe();import xs from"node:path";var fs="kynver-harness:",gs="@runner:";function Gt(e,r){let t=e.trim(),n=r.trim();return`${fs}${t}${gs}${n}`}I();import zt from"node:os";var ys="embedded-1",hs=[{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"}],Rs={"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(`
|
|
55
55
|
`),"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(`
|
|
56
56
|
`),"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(`
|
|
57
57
|
`),"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(`
|
|
58
|
-
`)},
|
|
58
|
+
`)},Ss={"harness.maxTaskAttempts":4,"harness.dispatchCooldownMs":5e3,"daemon.idleIntervalMs":5*6e4,"daemon.maxIdleStreak":10},qt={version:ys,generatedAt:"1970-01-01T00:00:00.000Z",personas:hs,instructions:Rs,policyThresholds:Ss};var bs=qt;function Jt(){return bs.version}M();function D(e){return e?.trim()?e.trim():null}function Xt(e={}){let r=e.env??process.env,t=_();return{runnerId:D(t.runnerId)??D(r.KYNVER_RUNTIME_ID)??D(r.OPENCLAW_RUNTIME_ID)??D(r.HOSTNAME)??zt.hostname(),hostname:D(r.HOSTNAME)??zt.hostname(),profile:D(r.KYNVER_RUNNER_PROFILE)??D(r.OPENCLAW_RUNNER_PROFILE),harnessRepo:D(r.KYNVER_HARNESS_REPO)??D(r.KYNVER_DEFAULT_REPO),runId:e.runId??null,instructionBundleVersion:Jt()}}function Qt(e){let r=String(e).trim();return r.startsWith("krc1.")?{"Content-Type":"application/json","X-Kynver-Runner-Token":r}:{"Content-Type":"application/json","X-Kynver-Cron-Secret":r,"X-OpenClaw-Cron-Secret":r,"X-Kynver-Runtime-Secret":r}}le();I();function rn(e){if(e!==void 0&&Number.isFinite(e)&&e>0)return Math.floor(e);let r=Number(process.env.KYNVER_CALLBACK_TIMEOUT_MS);return Number.isFinite(r)&&r>0?Math.floor(r):3e4}function Zt(e){return new Error(`callback timeout after ${e}ms`)}async function ks(e,r){let t=rn(r),n=new AbortController,o,s=!1;try{return await Promise.race([e(n.signal),new Promise((i,l)=>{o=setTimeout(()=>{s=!0,n.abort(),l(Zt(t))},t)})])}catch(i){throw s?Zt(t):i}finally{o&&clearTimeout(o)}}function vs(e,r){let t=rn(r);return{ok:!1,status:0,response:{error:e instanceof Error?e.message:String(e),timeoutMs:t}}}async function en(e,r,t,n){try{return await ks(async o=>{let s=await ae(e,{method:"POST",headers:Qt(r),body:JSON.stringify(t),signal:o}),i=null;try{i=await s.json()}catch{i=null}return{ok:s.ok,status:s.status,response:i}},n?.timeoutMs)}catch(o){return vs(o,n?.timeoutMs)}}async function tn(e,r,t,n){let o=await en(e,r,t,{timeoutMs:n.timeoutMs});if(o.ok||o.status!==401)return o;let s=await Kt(r,n.agentOsId,{baseUrl:n.baseUrl});return s.ok?{...await en(e,s.token,t,{timeoutMs:n.timeoutMs}),refreshedAuth:!0}:{...o,authRefreshFailure:s.reason}}async function nn(e){let r=`${e.baseUrl}/api/agent-os/by-id/${encodeURIComponent(e.agentOsId)}/tasks/${encodeURIComponent(e.taskId)}/release`,t;try{t=await tn(r,e.secret,{agentOsId:e.agentOsId,leaseOwner:e.leaseOwner,...e.leaseToken?.trim()?{leaseToken:e.leaseToken.trim()}:{},...e.failureDetail?{failureDetail:e.failureDetail}:{}},{agentOsId:e.agentOsId,baseUrl:e.baseUrl})}catch(s){return{released:!1,httpOk:!1,transportError:!0,releaseResponse:{ok:!1,error:s.message}}}let n=t.response;return{released:t.ok===!0||n?.ok===!0,httpOk:t.ok===!0,transportError:!1,releaseResponse:t.response??t}}var Er=!1;function _s(){Er=!1}async function Es(e){if(Er||w()!=="enforce")return null;Er=!0;try{let r=Xt().runnerId,t=await xr({hasLiveWorker:e.hasLiveWorker,worktreePathFor:({runId:n,workerName:o})=>xs.join($r().worktreesDir,n,o),releaseClaim:async({taskId:n,leaseToken:o,runId:s})=>{let i=await nn({baseUrl:e.baseUrl,secret:e.secret,agentOsId:e.agentOsId,taskId:n,leaseOwner:Gt(s,r),leaseToken:o});return{released:i.released,transportError:i.transportError,detail:i.httpOk?void 0:JSON.stringify(i.releaseResponse).slice(0,200)}}});return t.outcomes.length>0&&console.error(`[daemon] D1b claim recovery: ${t.outcomes.map(n=>`${n.taskId}:${n.action}`).join(", ")}`),t}catch{return null}}var Pd=600*1e3,te={storeFailures:0,corruptItemsSeen:0,corruptItemsQuarantined:0,duplicateDrainsObserved:0,halfArchivesCompleted:0};function on(){return{"planOutbox.storeFailures":te.storeFailures,"planOutbox.corruptItemsSeen":te.corruptItemsSeen,"planOutbox.corruptItemsQuarantined":te.corruptItemsQuarantined,"planOutbox.duplicateDrainsObserved":te.duplicateDrainsObserved,"planOutbox.halfArchivesCompleted":te.halfArchivesCompleted}}var g={keeperStoreFailures:0,meshStoreFailures:0,quotaStoreFailures:0,meshLeaseDivergences:0,meshEnforceStaleInversions:0,quotaVerdictDivergences:0};function W(e){return A(process.env).flags[e]}var sn="daemon-keeper",Cs=1800*1e3;function As(e){if(W("keeper")==="off")return;let r=f();if(r)try{r.saveRecoveryCheckpoint({scope:sn,payloadJson:JSON.stringify(e)})}catch{g.keeperStoreFailures+=1}}function ws(){if(W("keeper")!=="enforce")return null;let e=f();if(!e)return null;try{let r=e.latestRecoveryCheckpoint(sn);if(!r)return null;let t=JSON.parse(r.payloadJson),n=Date.now()-Date.parse(r.createdAt);if(!Number.isFinite(n)||n>Cs)return null;let o=Number(t.consecutiveFailures);return Number.isFinite(o)&&o>=0?Math.floor(o):null}catch{return g.keeperStoreFailures+=1,null}}function Cr(e){return`mesh-cron-lease:${e}`}function Os(e,r){if(W("meshLease")==="off")return;let t=f();if(t)try{let n=t.latestRecoveryCheckpoint(Cr(e));if(n){let o=JSON.parse(n.payloadJson);if((o.leaseToken??null)===(r.leaseToken??null)&&(o.holderBoxId??null)===(r.holderBoxId??null)&&o.authorized===r.authorized)return}t.saveRecoveryCheckpoint({scope:Cr(e),payloadJson:JSON.stringify(r)})}catch{g.meshStoreFailures+=1}}function Is(e,r){let t=W("meshLease");if(t==="off")return null;let n=f();if(!n)return null;try{let o=n.latestRecoveryCheckpoint(Cr(e)),s=o?JSON.parse(o.payloadJson):null,i=s!==null&&((s.leaseToken??null)!==(r?.leaseToken??null)||(s.holderBoxId??null)!==(r?.holderBoxId??null)||(s.authorized??null)!==(r?.authorized??null));return i&&(g.meshLeaseDivergences+=1),t!=="enforce"?null:i&&r?.updatedAt&&s?.updatedAt&&Date.parse(r.updatedAt)>Date.parse(s.updatedAt)?(g.meshEnforceStaleInversions+=1,null):s}catch{return g.meshStoreFailures+=1,null}}function Te(e){return`quota-cooldown:${e}`}var an="quota-preflight";function Ts(e,r){if(W("quota")==="off")return;let t=f();if(t)try{t.tryReserveAdmission(Te(e),an,r)}catch{g.quotaStoreFailures+=1}}function Ps(e){if(W("quota")==="off")return;let r=f();if(r)try{r.releaseAdmission(Te(e),an)}catch{g.quotaStoreFailures+=1}}function Ns(e,r){let t=W("quota");if(t==="off")return null;let n=f();if(!n)return null;try{let o=n.listAdmissionReservations({keyPrefix:Te(e),limit:50}).find(i=>i.key===Te(e)),s=!!o;return s!==r&&(g.quotaVerdictDivergences+=1),t==="enforce"?{blocked:s,retryAtIso:o?.expiresAt??null}:null}catch{return g.quotaStoreFailures+=1,null}}function Ar(){return{"keeper.storeFailures":g.keeperStoreFailures,"meshLease.storeFailures":g.meshStoreFailures,"meshLease.divergences":g.meshLeaseDivergences,"meshLease.enforceStaleInversions":g.meshEnforceStaleInversions,"quota.storeFailures":g.quotaStoreFailures,"quota.verdictDivergences":g.quotaVerdictDivergences}}function Ds(){g.keeperStoreFailures=0,g.meshStoreFailures=0,g.quotaStoreFailures=0,g.meshLeaseDivergences=0,g.meshEnforceStaleInversions=0,g.quotaVerdictDivergences=0}function Ls(e){let r=ar(),t=A(e?.env??process.env),n=(e?.now??(()=>new Date))().getTime(),o={};if(t.flags.dispatchReceipts!=="off"){Object.assign(o,yr());let s=gr({nowMs:n,hasLiveWorker:e?.hasLiveWorker});o["dispatchReceipts.strandedClaimCandidates"]=s.strandedClaimCandidates,t.flags.dispatchReceipts==="enforce"&&Object.assign(o,_r())}return t.flags.planOutbox!=="off"&&Object.assign(o,on()),t.flags.admission!=="off"&&(Object.assign(o,br()),t.flags.admission==="enforce"&&Object.assign(o,vr())),(t.flags.keeper!=="off"||t.flags.meshLease!=="off"||t.flags.quota!=="off")&&Object.assign(o,Ar()),{contractVersion:1,observedAt:new Date(n).toISOString(),state:r.state,schemaVersion:r.schemaVersion,recovered:r.recovered,unavailableClass:r.reason?r.reason.split(":")[0]??null:null,flags:t.flags,flagSources:t.sources,flagWarningCount:t.warnings.length,divergenceCounters:o}}export{U as ADMISSION_RESERVATION_TTL_MS,Ie as ADMISSION_SLOT_KEY_PREFIX,X as FilesystemPolicyError,Bt as LOCAL_RUN_STORE_OPEN_RETRY_MS,$t as LOCAL_RUN_STORE_SURFACES,Ne as LOCAL_SCHEMA_VERSION,ne as SchemaDowngradeRefusedError,Y as SqliteLocalRunStore,is as __resetAdmissionEnforceCountersForTests,ns as __resetAdmissionShadowCountersForTests,ms as __resetDispatchClaimRecoveryForTests,Zo as __resetDispatchReceiptCountersForTests,Io as __resetLocalRunStoreLifecycleForTests,Fo as __resetRemoteSurfaceFlagsCacheForTests,Ds as __resetSmallSurfaceCountersForTests,_s as __resetStartupClaimRecoveryForTests,Ao as __setLocalRunStoreLifecycleTestOverrides,os as acquireWorkerAdmissionSlot,vr as admissionEnforceCounters,br as admissionShadowCounters,Uo as anyLocalRunStoreSurfaceActive,Ns as assessQuotaCooldownReservation,Ls as buildLocalRunStoreTickPosture,Pe as classifyDatabaseDirectory,Ps as clearQuotaCooldownReservation,lr as closeLocalRunStore,_r as dispatchClaimRecoveryCounters,yr as dispatchReceiptCounters,w as dispatchReceiptsMode,Mo as extractLocalRunStoreFlagsFromOperatorTickResponse,Vt as findLiveProcessByCmdlinePath,f as getLocalRunStore,Wt as getLocalRunStoreLifecycleStatus,dr as getRemoteSurfaceFlags,q as leaseTokenAttempt,qo as listRecentDispatchStartFailures,Es as maybeRunStartupClaimRecovery,Ho as noteCompletionReplayIfAcked,De as openSqliteLocalRunStoreWithRecovery,Ht as parseLocalRunStoreSurfaceMode,Ko as persistRemoteSurfaceFlags,ar as probeLocalRunStore,Is as readMeshLeaseCheckpoint,es as rearmAdmissionAdoptionPass,ts as reconcileAdmissionShadow,ss as reconcileNumberedAdmissionSlots,$o as recordCompletionAckedReceipt,Wo as recordCompletionSentReceipt,Bo as recordDispatchClaimReceipt,Ee as recordDispatchReleasedReceipt,fr as recordDispatchSpawnedReceipt,Go as recordDispatchStartFailedReceipt,Ts as recordQuotaCooldownReservation,xr as recoverStrandedDispatchClaims,jo as releaseReasonClass,kr as releaseWorkerAdmissionSlot,Sr as releaseWorkerSlotReservation,ur as remoteSurfaceFlagsPath,A as resolveLocalRunStoreSurfaceFlags,ws as restoreKeeperBackoffCheckpoint,As as saveKeeperBackoffCheckpoint,Os as saveMeshLeaseCheckpoint,gr as scanDispatchReceiptInvariants,Yo as shouldShortCircuitCompletionReplay,Ar as smallSurfaceCounters,rs as takeWorkerSlotReservation};
|