@kynver-app/runtime 0.2.147 → 0.2.150
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 +5 -0
- package/dist/cli.js +237 -225
- package/dist/daemon-tick-thread.js +59 -57
- package/dist/desktop-entry.js +171 -166
- package/dist/index.js +260 -248
- package/dist/local-run-store/index.js +11 -10
- package/dist/server/cleanup.js +1 -1
- package/dist/server/default-repo.js +1 -1
- package/dist/server/dispatch-routing.js +4 -4
- package/dist/server/model-routing.js +4 -4
- package/dist/server/monitor.js +1 -1
- package/dist/server/orchestration.js +2 -2
- package/dist/server/venice.js +1 -0
- package/dist/server/worker-policy.js +3 -3
- package/package.json +7 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
var a=(r,e,t)=>()=>{if(t)throw t[0];try{return r&&(e=r(r=0)),e}catch(n){throw t=[n],n}};import{homedir as
|
|
2
|
-
`),oo(t,r)}catch(n){try{so(t,{force:!0})}catch{}throw n}}function
|
|
1
|
+
var a=(r,e,t)=>()=>{if(t)throw t[0];try{return r&&(e=r(r=0)),e}catch(n){throw t=[n],n}};import{homedir as Yr}from"node:os";import Vr from"node:path";function ro(r){return r==="~"?Yr():r.startsWith("~/")||r.startsWith("~\\")?Vr.join(Yr(),r.slice(2)):r}function I(r){return Vr.resolve(ro(r))}var W=a(()=>{"use strict"});var Gr=a(()=>{"use strict"});import{existsSync as qi,mkdirSync as to,readFileSync as no,readdirSync as zi,renameSync as oo,rmSync as so,statSync as Xi,writeFileSync as io}from"node:fs";import{randomBytes as ao}from"node:crypto";import lo from"node:path";function Fe(r){console.error(r),process.exit(1)}function J(r,e){try{return JSON.parse(no(r,"utf8"))}catch(t){if(arguments.length>1)return e;Fe(`failed to read ${r}: ${t.message}`)}}function ie(r,e){to(lo.dirname(r),{recursive:!0});let t=`${r}.${process.pid}.${ao(4).toString("hex")}.tmp`;try{io(t,`${JSON.stringify(e,null,2)}
|
|
2
|
+
`),oo(t,r)}catch(n){try{so(t,{force:!0})}catch{}throw n}}function ae(r){return String(r).replace(/\/+$/,"")}var b=a(()=>{"use strict";Gr()});var co,ta,uo,na,Jr=a(()=>{"use strict";co=["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"],ta=new Set(co),uo=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],na=new Set(uo)});var le=a(()=>{"use strict";W();b();Jr()});import{homedir as qr}from"node:os";import We from"node:path";function mo(r=qr()){return We.join(r,".kynver",fo)}function Xr(r,e=qr()){return We.resolve(r)===We.resolve(mo(e))}var fo,zr,Be=a(()=>{"use strict";le();fo="workspace",zr="main"});var Ue=a(()=>{"use strict";le();W();Be()});var Qr=a(()=>{"use strict"});var Zr=a(()=>{"use strict";Qr()});function tt(r){let e=ae(r);try{let t=new URL(e);return t.hostname.toLowerCase()===et?(t.hostname=`www.${et}`,ae(t.toString())):e}catch{return e}}function $e(r){if(r?.trim())return tt(ae(r.trim()))}async function ce(r,e,t=fetch){let n=tt(r),o=new Headers(e?.headers),s=0;for(;s<=rt;){let i=await t(n,{...e,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 u=new URL(l,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=(e?.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 ${rt} redirects for ${r}`)}var et,rt,ue=a(()=>{"use strict";b();et="kynver.com";rt=10});function B(r){let e=(r??"").trim().toLowerCase();return e==="ghost"||e==="forge"||e==="box"?e:e.includes("forge")?"forge":e.includes("ghost")||e.includes("openclaw")?"ghost":"box"}function de(r,e){return r[e]?.trim()||null}function nt(r){let e=r?.split(":")[0]?.trim();return e?B(e):null}function q(r=process.env,e={}){let t=[],n=nt(e.boxId),o=nt(de(r,"KYNVER_BOX_ID")),s=e.boxKind?.trim();if(s)return n&&n!==B(s)&&t.push(`config.boxId=${e.boxId} conflicts with boxKind=${s}; using explicit boxKind=${s}`),{boxKind:B(s),source:"config",slugInferenceBlocked:!1,warnings:t};let i=de(r,"KYNVER_BOX_KIND");if(i)return o&&o!==B(i)&&t.push(`KYNVER_BOX_ID=${de(r,"KYNVER_BOX_ID")} conflicts with KYNVER_BOX_KIND=${i}; using explicit KYNVER_BOX_KIND=${i}`),{boxKind:B(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=de(r,"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 F=a(()=>{"use strict"});function He(r,e){return r==="forge"?4:Math.max(1,e)}function pe(r,e){return r==="forge"?Math.min(Math.max(1,e),4):Math.max(1,e)}var fe=a(()=>{"use strict"});var ot=a(()=>{"use strict"});var Ia,Ta,je=a(()=>{"use strict";Ia=25*1024*1024*1024,Ta=12*1024*1024*1024});var Ka,Ma,st=a(()=>{"use strict";je();Ka=5*1024*1024*1024,Ma=10*1024*1024*1024});var Ha,ja,Ye=a(()=>{"use strict";st();je();Ha=30*1024*1024*1024,ja=15*1024*1024*1024});function it(){return lt()}var ee=a(()=>{"use strict";Ve();b()});var ut=a(()=>{"use strict";ee();b()});var dt=a(()=>{"use strict"});var pt=a(()=>{"use strict";dt();b()});var ft=a(()=>{"use strict"});var mt=a(()=>{"use strict";ft()});var ge=a(()=>{"use strict"});var ho,yo,pl,Ge=a(()=>{"use strict";ho="claude-sonnet-5-5",yo="claude-opus-5-5",pl={[ho]:"claude-sonnet-4-6",[yo]:"claude-opus-4-8"}});var gt=a(()=>{"use strict"});var ht=a(()=>{"use strict"});var yt=a(()=>{"use strict";mt();b();ge();Ge();gt();ht()});var Tl,Je=a(()=>{"use strict";Tl=String.raw`"use strict";
|
|
3
3
|
const cp = require("child_process"), fs = require("fs");
|
|
4
4
|
const argv = process.argv.slice(1);
|
|
5
5
|
const exitFile = argv[0], cmd = argv[1], args = argv.slice(2);
|
|
@@ -65,11 +65,12 @@ child.on("error", (e) => {
|
|
|
65
65
|
if (!child.pid) finish(127, null, String(e && e.message));
|
|
66
66
|
});
|
|
67
67
|
child.on("exit", (code, signal) => finish(code, signal));
|
|
68
|
-
`});var St=a(()=>{"use strict";re();b();qe()});var bt=a(()=>{"use strict";he();Je()});var kt=a(()=>{"use strict"});var Yl,Vl,xt=a(()=>{"use strict";ce();Yl=10*6e4,Vl=60*6e4});var vt=a(()=>{"use strict"});var ze=a(()=>{"use strict"});var Et=a(()=>{"use strict"});var _t=a(()=>{"use strict";ze();Et()});var Ct=a(()=>{"use strict";ft();Rt();St();qe();he();bt();kt();xt();vt();_t();ze();b()});var At=a(()=>{"use strict";Ct();b()});function wt(r,e={}){let t=e.perWorkerMemBytes??Xe,n=e.memReserveBytes??Qe,o=e.memUtilization??Ze,s=Math.max(0,Math.floor(r*o)-n),i=Math.max(1,Math.floor(s/t));return Math.min(i,ye)}var Xe,Qe,Ze,ye,Ot=a(()=>{"use strict";st();T();F();me();Re();Ve();re();dt();At();b();Xe=500*1024*1024,Qe=4*1024*1024*1024,Ze=.85,ye=64});function te(r,e){let t=Number(r);return!Number.isFinite(t)||t<=0?e:Math.floor(t)}function er(r){let e=r.config??{},t=r.env??process.env,n=te(e.perWorkerMemBytes,Xe),o=te(e.memReserveBytes,Qe),s=Math.min(1,Math.max(.1,Number(e.memUtilization)>0?Number(e.memUtilization):Ze)),i=wt(r.totalMemBytes,{perWorkerMemBytes:n,memReserveBytes:o,memUtilization:s});if(r.configuredMaxWorkersOverride!==void 0&&r.configuredMaxWorkersOverride!==null)return{configuredMaxWorkers:te(r.configuredMaxWorkersOverride,i),autoCap:i,workerCapSource:"workspace_override"};if(e.maxConcurrentWorkers!==void 0&&e.maxConcurrentWorkers!==null){let c=te(e.maxConcurrentWorkers,0)||null;if(c)return{configuredMaxWorkers:Math.min(c,ye),autoCap:i,workerCapSource:"config"}}let u=(t.KYNVER_MAX_WORKERS_INTENTIONAL==="1"||t.KYNVER_MAX_WORKERS_INTENTIONAL==="true")&&t.KYNVER_MAX_WORKERS&&te(t.KYNVER_MAX_WORKERS,0)||null;return u?{configuredMaxWorkers:Math.min(u,ye),autoCap:i,workerCapSource:"env"}:{configuredMaxWorkers:null,autoCap:i,workerCapSource:"auto"}}var Re=a(()=>{"use strict";Ot()});import{homedir as Ao}from"node:os";import wo from"node:path";var It,rr=a(()=>{"use strict";It=wo.join(Ao(),".kynver",".env")});var Tt=a(()=>{"use strict"});var Pt=a(()=>{"use strict";Tt()});var Nt=a(()=>{"use strict"});var Dt=a(()=>{"use strict";b()});var tr=a(()=>{"use strict";Pt();Nt();Dt()});var Lt=a(()=>{"use strict"});var Kt=a(()=>{"use strict";Lt()});var Se=a(()=>{"use strict";rr();W();T();tr();Kt()});var Mt=a(()=>{"use strict";F();F()});var Ft=a(()=>{"use strict";rr();tr();Se()});function Ut(r){if(!Bt)return r;if(!Wt)throw new nr;return Wt}function sr(){if(Bt)throw new or}var nr,or,Bt,Wt,ir=a(()=>{"use strict";nr=class extends Error{constructor(){super("desktop credential provider is not installed; refusing to fall back to file or env credentials"),this.name="DesktopCredentialProviderMissingError"}},or=class extends Error{constructor(){super("the credentials file is disabled in desktop mode"),this.name="LegacyCredentialStoreDisabledError"}},Bt=!1,Wt=null});import{existsSync as P,mkdirSync as Po,readdirSync as be,renameSync as $t,statSync as No}from"node:fs";import N from"node:path";function jt(r){try{return No(r).isDirectory()}catch{return!1}}function Do(r){if(!P(r))return!0;for(let e of Ht){let t=N.join(r,e);if(P(t)&&(!jt(t)||be(t).length>0))return!1}return!0}function Lo(r){let e=N.join(r,"runs");if(!P(e)||!jt(e))return!1;for(let t of be(e,{withFileTypes:!0})){if(!t.isDirectory()||t.name==="runs")continue;let n=N.join(e,t.name,"run.json");if(q(n,void 0)?.id)return!0}return!1}function Ko(r){let e=N.join(r,"runs");if(!P(e))return!1;for(let t of be(e,{withFileTypes:!0})){if(!t.isDirectory())continue;if(q(N.join(e,t.name,"run.json"),void 0)?.boxKind==="ghost")return!0}return!1}function Mo(r){let e=N.join(r,"ghost");return P(e)?!P(N.join(e,"runs")):Ko(r)}function Yt(r){return Lo(r.sharedRoot)?Do(r.forgeRoot)?Mo(r.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(r,e){Po(e,{recursive:!0});for(let t of Ht){let n=N.join(r,t),o=N.join(e,t);if(P(n)){if(P(o)&&be(o).length>0)throw new Error(`Forge legacy harness migration failed: ${o} is not empty`);if(P(o)){$t(n,o);continue}$t(n,o)}}}var Ht,Gt=a(()=>{"use strict";b();Ht=["runs","worktrees"]});import{existsSync as k}from"node:fs";import{homedir as Fo}from"node:os";import S from"node:path";function ar(r=process.env){return r.HOME?.trim()||Fo()}function lr(r=process.env){return S.join(ar(r),".kynver","harness")}function ke(r){let e=S.resolve(I(r.trim()));for(;Wo.has(S.basename(e));)e=S.dirname(e);return e}function Bo(r,e=process.env){return S.join(lr(e),r)}function Uo(r=process.env){let e=lr(r);if(k(S.join(e,"runs")))return!0;if(k(e)&&!k(S.join(e,"ghost"))&&!k(S.join(e,"forge")))return k(e);let t=S.join(ar(r),Jt);return k(t)}function xe(r){let e=r.env??process.env,t=e.KYNVER_HARNESS_ROOT?.trim()||e.OPUS_HARNESS_ROOT?.trim();if(t)return{harnessRoot:ke(t),source:"env"};let n=r.configuredHarnessRoot?.trim();if(n)return{harnessRoot:ke(n),source:"config"};let o=Bo(r.boxKind,e);if(k(S.join(o,"runs"))||k(o)&&!$o(o))return{harnessRoot:o,source:"box_scoped"};let i=lr(e);if(r.boxKind==="forge"){let l=Yt({sharedRoot:i,forgeRoot:o});if(l.action==="blocked")return{harnessRoot:o,source:"box_scoped",migrationBlocker:l.blocker};if(l.action==="migrate")return r.allowForgeLegacyMigration!==!1&&Vt(i,o),{harnessRoot:o,source:"legacy_migrated"}}if(r.boxKind==="ghost"&&Uo(e)){if(k(S.join(i,"runs")))return{harnessRoot:i,source:"legacy_shared"};if(k(i)&&!k(S.join(i,"ghost"))&&!k(S.join(i,"forge")))return{harnessRoot:i,source:"legacy_shared"};let u=S.join(ar(e),Jt);if(k(u))return{harnessRoot:u,source:"legacy_shared"}}return{harnessRoot:o,source:"box_scoped"}}function $o(r){if(!k(r))return!0;for(let e of["runs","worktrees"]){let t=S.join(r,e);if(k(t))return!1}return!0}var Jt,Wo,cr=a(()=>{"use strict";W();Gt();Jt=S.join(".openclaw","harness");Wo=new Set(["runs","worktrees"])});import qt from"node:os";function ve(r){return r?.trim()?r.trim():null}function Ho(r,e){let t=e.trim().toLowerCase()||"host";return`${r}-${t}`.replace(/[^a-z0-9._-]+/g,"-")}function jo(r){return r.KYNVER_DISPATCH_STRICT_IDENTITY==="1"||r.KYNVER_DISPATCH_STRICT_IDENTITY==="true"||r.KYNVER_DAEMON_STRICT_IDENTITY==="1"||r.KYNVER_DAEMON_STRICT_IDENTITY==="true"}function Ee(r=E(),e=process.env,t={}){let n=z(e,r),o=[...n.warnings],s=[],i=!!(r.boxKind?.trim()||ve(e.KYNVER_BOX_KIND)),l=t.strict===!0||jo(e);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 V="ambiguous box identity: KYNVER_AGENT_OS_SLUG is set without KYNVER_BOX_KIND or config.boxKind";l||t.requireExplicitBoxKind?s.push(V):o.push(`${V} \u2014 defaulting box kind to box (customer), not forge/ghost`)}let u=ve(r.runnerId),c=ve(e.KYNVER_RUNTIME_ID)??ve(e.OPENCLAW_RUNTIME_ID),p=u??c??Ho(n.boxKind,qt.hostname()),f=u?"config":c?"env":"derived";f==="derived"&&o.push(`runnerId not persisted \u2014 using derived id "${p}"; run \`kynver setup --box-kind ${n.boxKind}\` to persist runner identity`);let d=er({config:r,env:e,totalMemBytes:qt.totalmem()}),Y=fe(n.boxKind,d.configuredMaxWorkers??je(n.boxKind,d.autoCap)),x=xe({boxKind:n.boxKind,configuredHarnessRoot:r.harnessRoot,env:e});return x.migrationBlocker&&s.push(x.migrationBlocker),s.length>0?{ok:!1,identity:null,errors:s,warnings:o}:{ok:!0,identity:{boxKind:n.boxKind,boxKindSource:n.source,runnerId:p,runnerIdSource:f,maxConcurrentWorkers:Y,workerCapSource:d.workerCapSource,harnessRoot:x.harnessRoot,harnessRootSource:x.source},errors:s,warnings:o}}var _e=a(()=>{"use strict";T();F();me();Re();cr()});var zt=a(()=>{"use strict";$e();F();Mt();T();Se();Ft();de();ir();_e()});var Jo,Rd,Xt=a(()=>{"use strict";Jo=["claude","cursor","codex","gemini","gemini-api","openai-compatible"],Rd=Jo.join("|")});var Qt=a(()=>{"use strict";W()});var Zt=a(()=>{"use strict";Qt()});import{execFileSync as qo}from"node:child_process";function pr(r=process.env){let e=r[zo]?.trim().toLowerCase();return e==="file"?"file":e==="keychain"?"keychain":"auto"}function Xo(r,e,t){let n={encoding:"utf8",timeout:t.timeoutMs,stdio:["pipe","pipe","pipe"],windowsHide:!0,...t.input!==void 0?{input:t.input}:{}};return qo(r,e,n)}function Qo(r=process.platform){return r==="darwin"?"macos":r==="linux"?"libsecret":r==="win32"?"windows":null}function ur(r,e){let t=JSON.stringify(U),n=JSON.stringify(e),o="[void][Windows.Security.Credentials.PasswordVault,Windows.Security.Credentials,ContentType=WindowsRuntime]; $v = New-Object Windows.Security.Credentials.PasswordVault;";return r==="get"?`${o} try { $c = $v.Retrieve(${t}, ${n}); $c.RetrievePassword(); [Console]::Out.Write($c.Password) } catch { exit 3 }`:r==="set"?`${o} $s = [Console]::In.ReadToEnd().TrimEnd("\`r","\`n"); try { $old = $v.Retrieve(${t}, ${n}); $v.Remove($old) } catch {}; $v.Add((New-Object Windows.Security.Credentials.PasswordCredential(${t}, ${n}, $s)))`:`${o} try { $old = $v.Retrieve(${t}, ${n}); $v.Remove($old) } catch {}`}function en(r={}){if(pr(r.env??process.env)==="file")return null;let t=Qo(r.platform??process.platform);return t?new dr(t,r.exec):null}var U,zo,D,dr,rn=a(()=>{"use strict";U="kynver",zo="KYNVER_CREDENTIAL_STORE";D=5e3;dr=class{constructor(e,t=Xo){this.backend=e;this.exec=t}backend;exec;get(e){try{if(this.backend==="macos"){let s=this.exec("security",["find-generic-password","-s",U,"-a",e,"-w"],{timeoutMs:D}).replace(/\r?\n$/,"");return s||null}if(this.backend==="libsecret"){let s=this.exec("secret-tool",["lookup","service",U,"account",e],{timeoutMs:D}).replace(/\r?\n$/,"");return s||null}let n=this.exec("powershell.exe",["-NoProfile","-NonInteractive","-Command",ur("get",e)],{timeoutMs:D}).replace(/\r?\n$/,"");return n||null}catch{return null}}set(e,t){if(!t||/[\r\n]/.test(t))return!1;try{this.backend==="macos"?this.exec("security",["add-generic-password","-U","-s",U,"-a",e,"-l",`Kynver (${e})`,"-w",t],{timeoutMs:D}):this.backend==="libsecret"?this.exec("secret-tool",["store",`--label=Kynver (${e})`,"service",U,"account",e],{input:`${t}
|
|
69
|
-
|
|
70
|
-
`,timeoutMs:D})
|
|
71
|
-
`,
|
|
72
|
-
|
|
68
|
+
`});var Rt=a(()=>{"use strict";ee();b();Je()});var St=a(()=>{"use strict";ge();Ge()});var bt=a(()=>{"use strict"});var Gl,Jl,kt=a(()=>{"use strict";le();Gl=10*6e4,Jl=60*6e4});var xt=a(()=>{"use strict"});var qe=a(()=>{"use strict"});var vt=a(()=>{"use strict"});var Et=a(()=>{"use strict";qe();vt()});var _t=a(()=>{"use strict";pt();yt();Rt();Je();ge();St();bt();kt();xt();Et();qe();b()});var Ct=a(()=>{"use strict";_t();b()});function At(r,e={}){let t=e.perWorkerMemBytes??ze,n=e.memReserveBytes??Xe,o=e.memUtilization??Qe,s=Math.max(0,Math.floor(r*o)-n),i=Math.max(1,Math.floor(s/t));return Math.min(i,he)}var ze,Xe,Qe,he,wt=a(()=>{"use strict";ot();T();F();fe();ye();Ye();ee();ut();Ct();b();ze=500*1024*1024,Xe=4*1024*1024*1024,Qe=.85,he=64});function re(r,e){let t=Number(r);return!Number.isFinite(t)||t<=0?e:Math.floor(t)}function Ze(r){let e=r.config??{},t=r.env??process.env,n=re(e.perWorkerMemBytes,ze),o=re(e.memReserveBytes,Xe),s=Math.min(1,Math.max(.1,Number(e.memUtilization)>0?Number(e.memUtilization):Qe)),i=At(r.totalMemBytes,{perWorkerMemBytes:n,memReserveBytes:o,memUtilization:s});if(r.configuredMaxWorkersOverride!==void 0&&r.configuredMaxWorkersOverride!==null)return{configuredMaxWorkers:re(r.configuredMaxWorkersOverride,i),autoCap:i,workerCapSource:"workspace_override"};if(e.maxConcurrentWorkers!==void 0&&e.maxConcurrentWorkers!==null){let c=re(e.maxConcurrentWorkers,0)||null;if(c)return{configuredMaxWorkers:Math.min(c,he),autoCap:i,workerCapSource:"config"}}let u=(t.KYNVER_MAX_WORKERS_INTENTIONAL==="1"||t.KYNVER_MAX_WORKERS_INTENTIONAL==="true")&&t.KYNVER_MAX_WORKERS&&re(t.KYNVER_MAX_WORKERS,0)||null;return u?{configuredMaxWorkers:Math.min(u,he),autoCap:i,workerCapSource:"env"}:{configuredMaxWorkers:null,autoCap:i,workerCapSource:"auto"}}var ye=a(()=>{"use strict";wt()});import{homedir as Ao}from"node:os";import wo from"node:path";var Ot,er=a(()=>{"use strict";Ot=wo.join(Ao(),".kynver",".env")});var It=a(()=>{"use strict"});var Tt=a(()=>{"use strict";It()});var Pt=a(()=>{"use strict"});var Nt=a(()=>{"use strict";b()});var rr=a(()=>{"use strict";Tt();Pt();Nt()});var Dt=a(()=>{"use strict"});var Lt=a(()=>{"use strict";Dt()});var Re=a(()=>{"use strict";er();W();T();rr();Lt()});var Kt=a(()=>{"use strict";F();F()});var Mt=a(()=>{"use strict";er();rr();Re()});function Bt(r){if(!Wt)return r;if(!Ft)throw new tr;return Ft}function or(){if(Wt)throw new nr}var tr,nr,Wt,Ft,sr=a(()=>{"use strict";tr=class extends Error{constructor(){super("desktop credential provider is not installed; refusing to fall back to file or env credentials"),this.name="DesktopCredentialProviderMissingError"}},nr=class extends Error{constructor(){super("the credentials file is disabled in desktop mode"),this.name="LegacyCredentialStoreDisabledError"}},Wt=!1,Ft=null});import{existsSync as P,mkdirSync as Po,readdirSync as Se,renameSync as Ut,statSync as No}from"node:fs";import N from"node:path";function Ht(r){try{return No(r).isDirectory()}catch{return!1}}function Do(r){if(!P(r))return!0;for(let e of $t){let t=N.join(r,e);if(P(t)&&(!Ht(t)||Se(t).length>0))return!1}return!0}function Lo(r){let e=N.join(r,"runs");if(!P(e)||!Ht(e))return!1;for(let t of Se(e,{withFileTypes:!0})){if(!t.isDirectory()||t.name==="runs")continue;let n=N.join(e,t.name,"run.json");if(J(n,void 0)?.id)return!0}return!1}function Ko(r){let e=N.join(r,"runs");if(!P(e))return!1;for(let t of Se(e,{withFileTypes:!0})){if(!t.isDirectory())continue;if(J(N.join(e,t.name,"run.json"),void 0)?.boxKind==="ghost")return!0}return!1}function Mo(r){let e=N.join(r,"ghost");return P(e)?!P(N.join(e,"runs")):Ko(r)}function jt(r){return Lo(r.sharedRoot)?Do(r.forgeRoot)?Mo(r.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 Yt(r,e){Po(e,{recursive:!0});for(let t of $t){let n=N.join(r,t),o=N.join(e,t);if(P(n)){if(P(o)&&Se(o).length>0)throw new Error(`Forge legacy harness migration failed: ${o} is not empty`);if(P(o)){Ut(n,o);continue}Ut(n,o)}}}var $t,Vt=a(()=>{"use strict";b();$t=["runs","worktrees"]});import{existsSync as k}from"node:fs";import{homedir as Fo}from"node:os";import S from"node:path";function ir(r=process.env){return r.HOME?.trim()||Fo()}function ar(r=process.env){return S.join(ir(r),".kynver","harness")}function be(r){let e=S.resolve(I(r.trim()));for(;Wo.has(S.basename(e));)e=S.dirname(e);return e}function Bo(r,e=process.env){return S.join(ar(e),r)}function Uo(r=process.env){let e=ar(r);if(k(S.join(e,"runs")))return!0;if(k(e)&&!k(S.join(e,"ghost"))&&!k(S.join(e,"forge")))return k(e);let t=S.join(ir(r),Gt);return k(t)}function ke(r){let e=r.env??process.env,t=e.KYNVER_HARNESS_ROOT?.trim()||e.OPUS_HARNESS_ROOT?.trim();if(t)return{harnessRoot:be(t),source:"env"};let n=r.configuredHarnessRoot?.trim();if(n)return{harnessRoot:be(n),source:"config"};let o=Bo(r.boxKind,e);if(k(S.join(o,"runs"))||k(o)&&!$o(o))return{harnessRoot:o,source:"box_scoped"};let i=ar(e);if(r.boxKind==="forge"){let l=jt({sharedRoot:i,forgeRoot:o});if(l.action==="blocked")return{harnessRoot:o,source:"box_scoped",migrationBlocker:l.blocker};if(l.action==="migrate")return r.allowForgeLegacyMigration!==!1&&Yt(i,o),{harnessRoot:o,source:"legacy_migrated"}}if(r.boxKind==="ghost"&&Uo(e)){if(k(S.join(i,"runs")))return{harnessRoot:i,source:"legacy_shared"};if(k(i)&&!k(S.join(i,"ghost"))&&!k(S.join(i,"forge")))return{harnessRoot:i,source:"legacy_shared"};let u=S.join(ir(e),Gt);if(k(u))return{harnessRoot:u,source:"legacy_shared"}}return{harnessRoot:o,source:"box_scoped"}}function $o(r){if(!k(r))return!0;for(let e of["runs","worktrees"]){let t=S.join(r,e);if(k(t))return!1}return!0}var Gt,Wo,lr=a(()=>{"use strict";W();Vt();Gt=S.join(".openclaw","harness");Wo=new Set(["runs","worktrees"])});import Jt from"node:os";function xe(r){return r?.trim()?r.trim():null}function Ho(r,e){let t=e.trim().toLowerCase()||"host";return`${r}-${t}`.replace(/[^a-z0-9._-]+/g,"-")}function jo(r){return r.KYNVER_DISPATCH_STRICT_IDENTITY==="1"||r.KYNVER_DISPATCH_STRICT_IDENTITY==="true"||r.KYNVER_DAEMON_STRICT_IDENTITY==="1"||r.KYNVER_DAEMON_STRICT_IDENTITY==="true"}function ve(r=E(),e=process.env,t={}){let n=q(e,r),o=[...n.warnings],s=[],i=!!(r.boxKind?.trim()||xe(e.KYNVER_BOX_KIND)),l=t.strict===!0||jo(e);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 Y="ambiguous box identity: KYNVER_AGENT_OS_SLUG is set without KYNVER_BOX_KIND or config.boxKind";l||t.requireExplicitBoxKind?s.push(Y):o.push(`${Y} \u2014 defaulting box kind to box (customer), not forge/ghost`)}let u=xe(r.runnerId),c=xe(e.KYNVER_RUNTIME_ID)??xe(e.OPENCLAW_RUNTIME_ID),p=u??c??Ho(n.boxKind,Jt.hostname()),f=u?"config":c?"env":"derived";f==="derived"&&o.push(`runnerId not persisted \u2014 using derived id "${p}"; run \`kynver setup --box-kind ${n.boxKind}\` to persist runner identity`);let d=Ze({config:r,env:e,totalMemBytes:Jt.totalmem()}),j=pe(n.boxKind,d.configuredMaxWorkers??He(n.boxKind,d.autoCap)),x=ke({boxKind:n.boxKind,configuredHarnessRoot:r.harnessRoot,env:e});return x.migrationBlocker&&s.push(x.migrationBlocker),s.length>0?{ok:!1,identity:null,errors:s,warnings:o}:{ok:!0,identity:{boxKind:n.boxKind,boxKindSource:n.source,runnerId:p,runnerIdSource:f,maxConcurrentWorkers:j,workerCapSource:d.workerCapSource,harnessRoot:x.harnessRoot,harnessRootSource:x.source},errors:s,warnings:o}}var Ee=a(()=>{"use strict";T();F();fe();ye();lr()});var qt=a(()=>{"use strict";Ue();F();Kt();T();Re();Mt();ue();sr();Ee()});var Jo,bd,zt=a(()=>{"use strict";Jo=["claude","cursor","codex","gemini","gemini-api","openai-compatible","venice"],bd=Jo.join("|")});var Xt=a(()=>{"use strict";W()});var Qt=a(()=>{"use strict";Xt()});import{execFileSync as qo}from"node:child_process";function dr(r=process.env){let e=r[Xo]?.trim().toLowerCase();return e==="file"?"file":e==="keychain"?"keychain":"auto"}function Qo(r,e,t){if(!Zt.test(r)||!Zt.test(e))return null;let n=Buffer.from(t,"utf8").toString("hex");return`add-generic-password -U -s ${r} -a ${e} -l Kynver-${e} -X ${n}
|
|
69
|
+
`}function Zo(r,e,t){let n={encoding:"utf8",timeout:t.timeoutMs,stdio:["pipe","pipe","pipe"],windowsHide:!0,...t.input!==void 0?{input:t.input}:{}};return qo(r,e,n)}function es(r=process.platform){return r==="darwin"?"macos":r==="linux"?"libsecret":r==="win32"?"windows":null}function cr(r,e,t){let n=JSON.stringify(t),o=JSON.stringify(e),s="[void][Windows.Security.Credentials.PasswordVault,Windows.Security.Credentials,ContentType=WindowsRuntime]; $v = New-Object Windows.Security.Credentials.PasswordVault;";return r==="get"?`${s} try { $c = $v.Retrieve(${n}, ${o}); $c.RetrievePassword(); [Console]::Out.Write($c.Password) } catch { exit 3 }`:r==="set"?`${s} $s = [Console]::In.ReadToEnd().TrimEnd("\`r","\`n"); try { $old = $v.Retrieve(${n}, ${o}); $v.Remove($old) } catch {}; $v.Add((New-Object Windows.Security.Credentials.PasswordCredential(${n}, ${o}, $s)))`:`${s} try { $old = $v.Retrieve(${n}, ${o}); $v.Remove($old) } catch {}`}function en(r={}){if(dr(r.env??process.env)==="file")return null;let t=es(r.platform??process.platform);return t?new ur(t,r.exec,r.service):null}var zo,Xo,D,Zt,ur,rn=a(()=>{"use strict";zo="kynver",Xo="KYNVER_CREDENTIAL_STORE";D=5e3,Zt=/^[A-Za-z0-9_.@:-]{1,128}$/;ur=class{constructor(e,t=Zo,n=zo){this.backend=e;this.exec=t;this.service=n}backend;exec;service;get(e){try{if(this.backend==="macos"){let s=this.exec("security",["find-generic-password","-s",this.service,"-a",e,"-w"],{timeoutMs:D}).replace(/\r?\n$/,"");return s||null}if(this.backend==="libsecret"){let s=this.exec("secret-tool",["lookup","service",this.service,"account",e],{timeoutMs:D}).replace(/\r?\n$/,"");return s||null}let n=this.exec("powershell.exe",["-NoProfile","-NonInteractive","-Command",cr("get",e,this.service)],{timeoutMs:D}).replace(/\r?\n$/,"");return n||null}catch{return null}}set(e,t){if(!t||/[\r\n]/.test(t))return!1;try{if(this.backend==="macos"){let n=Qo(this.service,e,t);if(!n)return!1;this.exec("security",["-i"],{input:n,timeoutMs:D})}else this.backend==="libsecret"?this.exec("secret-tool",["store",`--label=Kynver (${e})`,"service",this.service,"account",e],{input:`${t}
|
|
70
|
+
`,timeoutMs:D}):this.exec("powershell.exe",["-NoProfile","-NonInteractive","-Command",cr("set",e,this.service)],{input:`${t}
|
|
71
|
+
`,timeoutMs:D})}catch{return!1}return this.get(e)===t}delete(e){try{this.backend==="macos"?this.exec("security",["delete-generic-password","-s",this.service,"-a",e],{timeoutMs:D}):this.backend==="libsecret"?this.exec("secret-tool",["clear","service",this.service,"account",e],{timeoutMs:D}):this.exec("powershell.exe",["-NoProfile","-NonInteractive","-Command",cr("delete",e,this.service)],{timeoutMs:D})}catch{}}}});function gr(){return pr||(pr=new fr),pr}var mr,rs,_e,fr,pr,tn=a(()=>{"use strict";rn();mr="api-key",rs=6e4,_e=class extends Error{constructor(e){super(`KYNVER_CREDENTIAL_STORE=keychain but the OS keychain could not store "${e}"; refusing to write the secret to disk`),this.name="KeychainUnavailableError"}},fr=class{cache=new Map;keychain;env;now;constructor(e={}){this.env=e.env??process.env,this.keychain=e.keychain===void 0?en({env:this.env}):e.keychain,this.now=e.now??Date.now}get available(){return this.keychain!==null}get backend(){return this.keychain?.backend??null}read(e){if(!this.keychain)return null;let t=this.cache.get(e);if(t&&this.now()-t.at<rs)return t.value;let n=this.keychain.get(e);return this.cache.set(e,{value:n,at:this.now()}),n}write(e,t){let n=dr(this.env);if(!this.keychain){if(n==="keychain")throw new _e(e);return!1}let o=this.keychain.set(e,t);if(o)this.cache.set(e,{value:t,at:this.now()});else if(this.cache.delete(e),n==="keychain")throw new _e(e);return o}remove(e){this.cache.delete(e),this.keychain?.delete(e)}invalidate(e){e?this.cache.delete(e):this.cache.clear()}},pr=null});import{existsSync as on,mkdirSync as ts,readFileSync as sn,writeFileSync as ns}from"node:fs";import{homedir as os,totalmem as Vd}from"node:os";import Rr from"node:path";function ss(r){return{...r,...r.harnessRoot?.trim()?{harnessRoot:I(r.harnessRoot.trim())}:{},...r.defaultRepo?.trim()?{defaultRepo:I(r.defaultRepo.trim())}:{}}}function is(r){let e=r.defaultRepo?.trim();return!e||r.defaultBase?.trim()||!Xr(I(e))?r:{...r,defaultBase:zr}}function as(){if(!on(nn))return null;try{return JSON.parse(sn(nn,"utf8"))}catch{return null}}function E(){let r=as();return r?is(ss(r)):{}}function Ce(){if(or(),!on(hr))return{};try{return JSON.parse(sn(hr,"utf8"))}catch{return{}}}function yr(r){or(),ts(Sr,{recursive:!0}),ns(hr,`${JSON.stringify(r,null,2)}
|
|
72
|
+
`,{mode:384})}function ls(r,e,t,n={}){let o=Ce();if(gr().write(r,t)){let i={...o,...n};delete i[e],i.store="keychain",i.keychainAccounts=Array.from(new Set([...o.keychainAccounts??[],r])).sort(),yr(i);return}yr({...o,...n,[e]:t})}function cs(r,e){let t=gr().read(r);return t||Ce()[e]}function an(){return Bt(us)}function ln(){return an().getApiKey()}function ds(r,e){an().persistRunnerToken(r,e)}function ps(r){let e=cn(r);return e||ms("requires --base-url, KYNVER_API_URL, KYNVER_CRON_FIRE_BASE_URL, or ~/.kynver/config.json apiBaseUrl"),e}function cn(r){let e=r||process.env.KYNVER_API_URL||process.env.KYNVER_CRON_FIRE_BASE_URL||process.env.OPENCLAW_CRON_FIRE_BASE_URL||E().apiBaseUrl;return $e(e)}async function un(r,e,t){let n=ln(),o=cn(t?.baseUrl);if(!n)return{ok:!1,reason:"KYNVER_API_KEY is required to refresh a rejected runner token"};if(!e)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 fs(e,{baseUrl:o,apiKey:n});return s&&s!==r?(ds(e,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 fs(r,e){let t=e?.apiKey||ln();if(!t)throw new Error("API key required \u2014 run `kynver login` first");let o=`${ps(e?.baseUrl)}/api/agent-os/by-id/${encodeURIComponent(r)}/runner-credentials`,s=await ce(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`},body:JSON.stringify(e?.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 ms(r){console.error(r),process.exit(1)}var Sr,nn,hr,up,dp,us,T=a(()=>{"use strict";Ue();W();Be();Zr();ue();F();fe();ye();Ye();Re();qt();zt();Ee();Qt();sr();tn();Sr=Rr.join(os(),".kynver"),nn=Rr.join(Sr,"config.json"),hr=Rr.join(Sr,"credentials");up=500*1024*1024,dp=4*1024*1024*1024;us={kind:"file",getApiKey(){return process.env.KYNVER_API_KEY?process.env.KYNVER_API_KEY:cs(mr,"apiKey")},getRunnerToken(r){let e=Ce();if(!!e.runnerToken&&!!r&&e.runnerTokenAgentOsId===r)return e.runnerToken;let n=process.env.KYNVER_RUNNER_TOKEN?.trim();if(n)return n;if(e.runnerToken&&!(r&&e.runnerTokenAgentOsId&&e.runnerTokenAgentOsId!==r))return e.runnerToken},persistApiKey(r){ls(mr,"apiKey",r)},persistRunnerToken(r,e){yr({...Ce(),runnerToken:e,runnerTokenAgentOsId:r})}}});import dn from"node:path";function Ae(r){return be(r)}function br(){let r=process.env.KYNVER_HARNESS_ROOT||process.env.OPUS_HARNESS_ROOT;if(r)return Ae(r);let e=E(),t=e.harnessRoot?.trim();if(t)return Ae(t);let n=ve(e,process.env);return n.identity?n.identity.harnessRoot:ke({boxKind:"forge",configuredHarnessRoot:null}).harnessRoot}function at(r){return dn.join(Ae(r),"runs")}function gs(r){return dn.join(Ae(r),"worktrees")}function lt(){let r=br();return{harnessRoot:r,runsDir:at(r),worktreesDir:gs(r)}}var Ve=a(()=>{"use strict";T();lr();Ee();b()});import{existsSync as Ln,realpathSync as Kn,readFileSync as Mn}from"node:fs";import $r from"node:path";var Fn=new Set(["ext4","ext3","ext2","btrfs","xfs","f2fs","zfs","tmpfs","overlay","overlayfs"]),Wn=new Set(["9p","drvfs","nfs","nfs4","cifs","smb","smbfs","smb3","sshfs","fuse.sshfs","davfs","davfs2","glusterfs","ceph","lustre","afs","vboxsf","prl_fs","virtiofs"]);function Bn(){try{return Mn("/proc/self/mounts","utf8")}catch{return null}}function Un(r){let e=$r.resolve(r);for(let t=0;t<64;t+=1){if(Ln(e))try{return Kn.native(e)}catch{return e}let n=$r.dirname(e);if(n===e)return e;e=n}return e}function $n(r){return r.replace(/\\(\d{3})/g,(e,t)=>String.fromCharCode(Number.parseInt(t,8)))}function Hn(r){let e=[];for(let t of r.split(`
|
|
73
|
+
`)){let n=t.trim().split(/\s+/);n.length<3||e.push({mountPoint:$n(n[1]),fsType:n[2]})}return e}function Hr(r,e=process.platform){return e==="win32"?r.replace(/\\/g,"/"):r}function jn(r,e){let t=null,n=Hr(r);for(let o of e){let s=Hr(o.mountPoint),i=s.endsWith("/")?s:`${s}/`;(n===s||`${n}/`.startsWith(i))&&(!t||o.mountPoint.length>t.mountPoint.length)&&(t=o)}return t}function Le(r,e){let n=(e?.resolveRealPath??Un)(r),o=(e?.mountsSource??Bn)();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=jn(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 Wn.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}:Fn.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 Ke=1,se=class extends Error{constructor(e,t){super(`local-run-store schema version ${e} is newer than this runtime supports (${t}); refusing to open. Upgrade the runtime or quarantine the database deliberately.`),this.name="SchemaDowngradeRefusedError"}},Yn=[`CREATE TABLE IF NOT EXISTS local_meta (
|
|
73
74
|
key TEXT PRIMARY KEY,
|
|
74
75
|
value TEXT NOT NULL
|
|
75
76
|
) STRICT`,`CREATE TABLE IF NOT EXISTS process_identity (
|
|
@@ -95,7 +96,7 @@ child.on("exit", (code, signal) => finish(code, signal));
|
|
|
95
96
|
payload_json TEXT NOT NULL,
|
|
96
97
|
created_at TEXT NOT NULL,
|
|
97
98
|
PRIMARY KEY (scope, seq)
|
|
98
|
-
) STRICT`];function Vn(r){if(!r.prepare("SELECT name FROM sqlite_master WHERE type = 'table' AND name = 'local_meta'").get())return null;let t=r.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
|
|
99
|
+
) STRICT`];function Vn(r){if(!r.prepare("SELECT name FROM sqlite_master WHERE type = 'table' AND name = 'local_meta'").get())return null;let t=r.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 jr(r,e){let t=Vn(r);if(t!==null&&t>1)throw new se(t,1);r.exec("BEGIN IMMEDIATE");try{for(let n of Yn)r.exec(n);r.prepare("INSERT INTO local_meta (key, value) VALUES ('schema_version', ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value").run(String(1)),r.prepare("INSERT INTO local_meta (key, value) VALUES ('schema_applied_at', ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value").run(e),r.exec("COMMIT")}catch(n){throw r.exec("ROLLBACK"),n}}import{mkdirSync as Gn}from"node:fs";import Jn from"node:path";import{DatabaseSync as qn}from"node:sqlite";var Z=class extends Error{constructor(e){super(`local-run-store refused: ${e}`),this.name="FilesystemPolicyError"}},zn="local-run-store.sqlite",Xn=5e3,G=class r{db;now;databasePath;constructor(e,t,n){this.db=e,this.databasePath=t,this.now=n}static open(e){let t=Le(e.directory,e.classifyOptions);if(t.verdict!=="accepted")throw new Z(t.reason);Gn(e.directory,{recursive:!0,mode:448});let n=Jn.join(e.directory,e.filename??zn),o=new qn(n,{timeout:e.busyTimeoutMs??Xn}),s=e.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 Z(`journal_mode did not switch to WAL (got '${i?.journal_mode}') \u2014 filesystem unsuitable.`);o.exec("PRAGMA synchronous = NORMAL"),jr(o,s().toISOString())}catch(i){throw o.close(),i}return new r(o,n,s)}inImmediateTransaction(e){this.db.exec("BEGIN IMMEDIATE");try{let t=e();return this.db.exec("COMMIT"),t}catch(t){throw this.db.exec("ROLLBACK"),t}}registerProcessIdentity(e){let t=this.now().toISOString();return this.inImmediateTransaction(()=>{this.db.prepare(`INSERT INTO process_identity
|
|
99
100
|
(process_key, pid, runtime_version, node_version, started_at, registered_at)
|
|
100
101
|
VALUES (?, ?, ?, ?, ?, ?)
|
|
101
102
|
ON CONFLICT(process_key) DO UPDATE SET
|
|
@@ -119,8 +120,8 @@ child.on("exit", (code, signal) => finish(code, signal));
|
|
|
119
120
|
LIMIT ?`).all(...s,n).map(u=>({idempotencyKey:u.idempotency_key,operation:u.operation,resultJson:u.result_json,recordedAt:u.recorded_at}))}deleteOperationReceiptsByKeys(e){return e.length===0?0:this.inImmediateTransaction(()=>{let t=this.db.prepare("DELETE FROM operation_receipts WHERE idempotency_key = ?"),n=0;for(let o of e)n+=Number(t.run(o).changes);return n})}getOperationReceipt(e){let t=this.db.prepare(`SELECT idempotency_key, operation, result_json, recorded_at
|
|
120
121
|
FROM operation_receipts WHERE idempotency_key = ?`).get(e);return t?{idempotencyKey:t.idempotency_key,operation:t.operation,resultJson:t.result_json,recordedAt:t.recorded_at}:null}saveRecoveryCheckpoint(e){return this.inImmediateTransaction(()=>{let t=this.db.prepare("SELECT COALESCE(MAX(seq), 0) AS max_seq FROM recovery_checkpoints WHERE scope = ?").get(e.scope),n=Number(t.max_seq)+1;return this.db.prepare(`INSERT INTO recovery_checkpoints (scope, seq, payload_json, created_at)
|
|
121
122
|
VALUES (?, ?, ?, ?)`).run(e.scope,n,e.payloadJson,this.now().toISOString()),{seq:n}})}latestRecoveryCheckpoint(e){let t=this.db.prepare(`SELECT scope, seq, payload_json, created_at FROM recovery_checkpoints
|
|
122
|
-
WHERE scope = ? ORDER BY seq DESC LIMIT 1`).get(e);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(e){let t=this.db.prepare(`PRAGMA ${e}`).get();return String(Object.values(t)[0])}close(){this.db.close()}};import{existsSync as Qn,renameSync as Zn}from"node:fs";function eo(r,e){let t=`${r}.quarantine-${e}`;for(let n of["","-wal","-shm"]){let o=`${r}${n}`;Qn(o)&&Zn(o,`${t}${n}`)}return t}function Fe(r){let e=r.quarantineStamp??(r.now??(()=>new Date))().toISOString().replace(/[:.]/g,"-"),t=null;try{let s=J.open(r);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=`${r.directory}/${r.filename??"local-run-store.sqlite"}`,o=eo(n,e);try{return{store:J.open(r),recovered:!0,quarantinedTo:o}}catch(s){throw new AggregateError([t,s].filter(Boolean),"local-run-store rebuild after quarantine failed")}}Ge();function ms(){if(process.env.KYNVER_LRS_TEST_CLASSIFY_BYPASS==="1")return{mountsSource:()=>"/dev/vda / ext4 rw 0 0",resolveRealPath:()=>"/tmp/kynver-lrs-test/db"}}function gs(){return pn.classifyOptions??ms()}var pn={};function hs(r){pn=r}var fn=300*1e3,L=null,ne=0;function ys(r){ne+=1;try{let e=gs(),t=Fe({directory:r,...e?{classifyOptions:e}:{}});return{store:t.store,status:{state:"open",harnessRoot:r,databasePath:t.store.databasePath,schemaVersion:t.store.localSchemaVersion(),recovered:t.recovered,quarantinedTo:t.quarantinedTo,reason:null,openAttempts:ne},failedAtMs:null,permanentRefusal:!1}}catch(e){return{store:null,status:{state:"unavailable",harnessRoot:r,databasePath:null,schemaVersion:null,recovered:!1,quarantinedTo:null,reason:`${e.name}: ${e.message}`,openAttempts:ne},failedAtMs:Date.now(),permanentRefusal:e.name==="FilesystemPolicyError"||e.name==="SchemaDowngradeRefusedError"}}}function Rs(r,e){return r.store||r.permanentRefusal?!1:r.failedAtMs===null?!0:e-r.failedAtMs>=fn}function m(r=Date.now()){let e=kr();return(!L||L.status.harnessRoot!==e||Rs(L,r))&&(vr(),L=ys(e)),L.store}function mn(){return L?L.status:{state:"unopened",harnessRoot:null,databasePath:null,schemaVersion:null,recovered:!1,quarantinedTo:null,reason:null,openAttempts:ne}}function xr(){return m(),mn()}function vr(){try{L?.store?.close()}catch{}L=null}function Ss(){vr(),ne=0}T();b();import{existsSync as bs,readFileSync as ks}from"node:fs";import{homedir as xs}from"node:os";import vs from"node:path";var Es=3e4,v=null;function Er(r){let e=r.replace(/[^A-Za-z0-9_-]/g,"_");return vs.join(xs(),".kynver",`local-run-store-flags-${e}.json`)}function _r(r){if(!r||typeof r!="object"||Array.isArray(r))return{};let e=r,t={},n=["dispatchReceipts","admission","planOutbox","keeper","meshLease","quota"];for(let o of n){let s=e[o];(s==="off"||s==="shadow"||s==="enforce")&&(t[o]=s)}return t}function _s(r){if(!r||typeof r!="object"||Array.isArray(r))return null;let e=r.response;if(!e||typeof e!="object"||Array.isArray(e))return null;let t=e.localRunStoreFlags;return t===void 0?null:_r(t)}function Cs(r,e){try{let t=Er(r),n={contractVersion:1,agentOsId:r,flags:_r(e),deliveredAt:new Date().toISOString()};ae(t,n),v={flags:n.flags,loadedAtMs:Date.now(),file:t}}catch{}}function Cr(r=Date.now()){if(process.env.KYNVER_LRS_REMOTE_FLAGS_DISABLED==="1")return{};if(v&&r-v.loadedAtMs<Es)return v.flags;try{let e=E().agentOsId?.trim();if(!e)return v={flags:{},loadedAtMs:r,file:null},v.flags;let t=Er(e);if(!bs(t))return v={flags:{},loadedAtMs:r,file:t},v.flags;let n=JSON.parse(ks(t,"utf8")),o=n?.contractVersion===1?_r(n.flags):{};return v={flags:o,loadedAtMs:r,file:t},o}catch{return v={flags:{},loadedAtMs:r,file:null},v.flags}}function As(){v=null}var gn=[{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 hn(r){let e=r?.trim().toLowerCase()??"";return e===""?{mode:"off",unknown:!1}:e==="off"||e==="shadow"||e==="enforce"?{mode:e,unknown:!1}:{mode:"off",unknown:!0}}function A(r=process.env){let e={},t={},n=[],o=Cr();for(let s of gn){let i=r[s.env];if(typeof i=="string"&&i.trim()!==""){let c=hn(i);e[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){e[s.key]=u,t[s.key]="server";continue}e[s.key]="off",t[s.key]="default"}return{flags:e,sources:t,warnings:n}}function ws(r){return Object.values(r).some(e=>e!=="off")}var R={storeFailures:0,completionReplaysObserved:0,completionReplaysShortCircuited:0,agedReceiptsPruned:0};function w(r=process.env){return A(r).flags.dispatchReceipts}function Ar(r){return w(r)!=="off"}function wr(r,e){return`dispatch:${r}:${e.taskId}:${e.leaseToken}`}function oe(r,e,t){if(!Ar())return;let n=m();if(n)try{n.recordOperationReceipt({idempotencyKey:wr(r,e),operation:`dispatch-${r}`,resultJson:t===void 0?null:JSON.stringify(t)})}catch{R.storeFailures+=1}}function Os(r){oe("claim",r,{runId:r.runId,workerName:r.workerName,provider:r.provider})}function Or(r){oe("spawned",r)}function Oe(r,e){oe("released",r,{reasonClass:e})}function Is(r){oe("completion-sent",r)}function Ts(r,e){oe("completion-acked",r,{outcome:e})}function Ps(r){if(!Ar())return!1;let e=m();if(!e)return!1;try{let t=e.getOperationReceipt(wr("completion-acked",r));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 Ns(r){let e=String(r??"").split(":")[0]?.trim()??"";return e.length>0?e.slice(0,64):"unknown"}function Ds(r){if(w()!=="enforce")return!1;let e=m();if(!e)return!1;try{let t=e.getOperationReceipt(wr("completion-acked",r));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 Ls=600*1e3;function Ks(r,e){if(w()!=="enforce")return;let t=m();if(t)try{t.recordOperationReceipt({idempotencyKey:`dispatch:start-failed:${r}:${e}`,operation:"dispatch-start-failed",resultJson:JSON.stringify({runId:e})})}catch{R.storeFailures+=1}}function Ms(r,e){if(w()!=="enforce")return[];let t=m();if(!t)return[];let n=e?.nowMs??Date.now(),o=e?.windowMs??Ls;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===r:!1}catch{return!1}}).map(s=>{let i=s.idempotencyKey.slice(22);return i.slice(0,i.length-(r.length+1))}).filter(s=>s.length>0)}catch{return R.storeFailures+=1,[]}}function X(r){let e=r.split(":")[0]??"",t=Number(e);return Number.isInteger(t)&&t>=0?t:null}var Fs=900*1e3,yn=10080*60*1e3,Ws=1440*60*1e3,Bs=500,Us=300;function Ir(r){let e={scannedClaims:0,strandedClaimCandidates:0,prunedReceipts:0};if(!Ar())return e;let t=m();if(!t)return e;let n=r?.nowMs??Date.now(),o=r?.strandedAfterMs??Fs;try{let s=t.listOperationReceipts({operation:"dispatch-claim",recordedAfter:new Date(n-yn).toISOString(),limit:Bs}),i=0,l=[];for(let c of s){let p=c.idempotencyKey.slice(15),f=Date.parse(c.recordedAt);if(!Number.isFinite(f)||n-f<o)continue;let d=t.getOperationReceipt(`dispatch:spawned:${p}`),Y=t.getOperationReceipt(`dispatch:released:${p}`);if(d||Y){n-f>=Ws&&l.length+5<=Us&&l.push(c.idempotencyKey,`dispatch:spawned:${p}`,`dispatch:released:${p}`,`dispatch:completion-sent:${p}`,`dispatch:completion-acked:${p}`);continue}let x=p.split(":")[0]??"",V=X(p.slice(x.length+1));if((x?t.listOperationReceipts({keyPrefix:`dispatch:completion-acked:${x}:`,limit:10}):[]).some(h=>{if(V===null)return!0;let G=h.idempotencyKey.slice(`dispatch:completion-acked:${x}:`.length),M=X(G);return M===null||M>=V}))continue;let y=!1;if(r?.hasLiveWorker&&c.resultJson)try{let h=JSON.parse(c.resultJson);h.runId&&h.workerName&&(y=r.hasLiveWorker({runId:h.runId,workerName:h.workerName}))}catch{y=!1}y||(i+=1)}let u=l.length>0?t.deleteOperationReceiptsByKeys(l):0;if(w()==="enforce"){let c=t.listOperationReceipts({limit:100}).filter(p=>{let f=Date.parse(p.recordedAt);return Number.isFinite(f)&&n-f>=yn}).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,e}}function Tr(){return{"dispatchReceipts.storeFailures":R.storeFailures,"dispatchReceipts.completionReplaysObserved":R.completionReplaysObserved,"dispatchReceipts.completionReplaysShortCircuited":R.completionReplaysShortCircuited,"dispatchReceipts.agedReceiptsPruned":R.agedReceiptsPruned}}function $s(){R.storeFailures=0,R.completionReplaysObserved=0,R.completionReplaysShortCircuited=0,R.agedReceiptsPruned=0}import{readdirSync as zs,readFileSync as Xs}from"node:fs";var $=900*1e3,Nr="admission-shadow",Pr="worker-slot:",_={storeFailures:0,missingForLive:0,deadSlotsReleased:0},Ie=!1;function Hs(){Ie=!1}function H(r=process.env){return A(r).flags.admission}function Te(r,e){return`${Pr}${r}:${e}`}function js(r,e){if(H()==="off")return;let t=m();if(t)try{t.tryReserveAdmission(Te(r,e),Nr,$)}catch{_.storeFailures+=1}}function Dr(r,e){if(H()==="off")return;let t=m();if(t)try{t.releaseAdmission(Te(r,e),Nr)}catch{_.storeFailures+=1}}function Ys(r){let e={liveReservations:0,refreshed:0,deadReleased:0,missingForLive:0,orphaned:0,adoptionPass:!1};if(H()==="off")return e;let t=m();if(!t)return e;try{let n=new Set(r.liveWorkers.map(d=>Te(d.runId,d.workerName))),o=t.listAdmissionReservations({keyPrefix:Pr,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,u=!Ie;Ie=!0,!u&&i>0&&(_.missingForLive+=i);let c=0;for(let d of r.liveWorkers)t.tryReserveAdmission(Te(d.runId,d.workerName),Nr,$),c+=1;let p=0;for(let d of o)n.has(d.key)||t.releaseAdmission(d.key,d.owner)&&(p+=1,_.deadSlotsReleased+=1);return{liveReservations:t.listAdmissionReservations({keyPrefix:Pr,limit:500}).length,refreshed:c,deadReleased:p,missingForLive:i,orphaned:l,adoptionPass:u}}catch{return _.storeFailures+=1,e}}function Lr(){return{"admission.storeFailures":_.storeFailures,"admission.missingForLive":_.missingForLive,"admission.deadSlotsReleased":_.deadSlotsReleased}}function Vs(){_.storeFailures=0,_.missingForLive=0,_.deadSlotsReleased=0,Ie=!1}var De="worker-slot-n:",Pe=64;function Rn(r){return`${De}${r}`}function Ne(r,e){return`${r}:${e}`}var C={enforceStoreFailures:0,admissionsRefusedSlots:0,admissionsRefusedDiskBackstop:0};function Gs(r){if(H()!=="enforce")return{admitted:!0};let e=m();if(!e)return{admitted:!0};let t=Math.max(0,Math.min(Pe,Math.floor(r.maxSlots)));if(r.diskActiveWorkers>=t)return C.admissionsRefusedDiskBackstop+=1,{admitted:!1,reason:"disk_backstop"};try{let n=Ne(r.runId,r.workerName);for(let o=0;o<t;o+=1)if(e.tryReserveAdmission(Rn(o),n,$).acquired)return{admitted:!0,slot:o};return C.admissionsRefusedSlots+=1,{admitted:!1,reason:"slots_exhausted"}}catch{return C.enforceStoreFailures+=1,{admitted:!0}}}function Kr(r,e){if(H()==="off")return;let t=m();if(t)try{let n=Ne(r,e),o=t.listAdmissionReservations({keyPrefix:De,limit:Pe});for(let s of o)s.owner===n&&t.releaseAdmission(s.key,n)}catch{C.enforceStoreFailures+=1}}function Js(r){let e={refreshed:0,deadReleased:0,adopted:0};if(H()!=="enforce")return e;let t=m();if(!t)return e;try{let n=new Set(r.liveWorkers.map(c=>Ne(c.runId,c.workerName))),o=t.listAdmissionReservations({keyPrefix:De,limit:Pe}),s=0,i=0,l=new Set;for(let c of o)n.has(c.owner)?(t.tryReserveAdmission(c.key,c.owner,$),l.add(c.owner),s+=1):t.releaseAdmission(c.key,c.owner)&&(i+=1);let u=0;for(let c of r.liveWorkers){let p=Ne(c.runId,c.workerName);if(!l.has(p)){for(let f=0;f<Pe;f+=1)if(t.tryReserveAdmission(Rn(f),p,$).acquired){u+=1;break}}}return{refreshed:s,deadReleased:i,adopted:u}}catch{return C.enforceStoreFailures+=1,e}}function Mr(){return{"admission.enforceStoreFailures":C.enforceStoreFailures,"admission.refusedSlotsExhausted":C.admissionsRefusedSlots,"admission.refusedDiskBackstop":C.admissionsRefusedDiskBackstop}}function qs(){C.enforceStoreFailures=0,C.admissionsRefusedSlots=0,C.admissionsRefusedDiskBackstop=0}var Qs="dispatch:claim:",Zs=900*1e3,ei=10080*60*1e3,ri=200,O={recoveredStrandedClaims:0,recoveryDeferredOrphans:0,recoveryStoreFailures:0};function Sn(r){if(process.platform!=="linux"||!r.trim())return null;let e=[];try{e=zs("/proc")}catch{return null}for(let t of e)if(/^\d+$/.test(t)&&Number(t)!==process.pid)try{if(Xs(`/proc/${t}/cmdline`,"utf8").replace(/\0/g," ").includes(r))return Number(t)}catch{}return null}async function Fr(r){let e=w(),t={mode:e,scanned:0,outcomes:[]};if(e!=="enforce")return t;let n=m();if(!n)return t;let o=r.nowMs??Date.now(),s=r.strandedAfterMs??Zs,i=r.findOrphanPid??Sn,l=[],u;try{u=n.listOperationReceipts({operation:"dispatch-claim",recordedAfter:new Date(o-ei).toISOString(),limit:ri})}catch{return O.recoveryStoreFailures+=1,t}for(let c of u){let p=c.idempotencyKey.slice(Qs.length),f=p.split(":")[0]??"",d=p.slice(f.length+1);if(!(!f||!d))try{let Y=Date.parse(c.recordedAt);if(!Number.isFinite(Y)||o-Y<s||n.getOperationReceipt(`dispatch:spawned:${p}`)||n.getOperationReceipt(`dispatch:released:${p}`))continue;let x=X(d);if(n.listOperationReceipts({keyPrefix:`dispatch:completion-acked:${f}:`,limit:10}).some(M=>{if(x===null)return!0;let Z=X(M.idempotencyKey.slice(`dispatch:completion-acked:${f}:`.length));return Z===null||Z>=x}))continue;let Q={};try{Q=c.resultJson?JSON.parse(c.resultJson):{}}catch{Q={}}let y=Q.runId??null,h=Q.workerName??null;if(y&&h&&r.hasLiveWorker({runId:y,workerName:h})){Or({taskId:f,leaseToken:d}),l.push({taskId:f,leaseToken:d,runId:y,workerName:h,action:"finalized_late"});continue}if(y&&h){let M=r.worktreePathFor({runId:y,workerName:h}),Z=M?i(M):null;if(Z!==null){O.recoveryDeferredOrphans+=1,l.push({taskId:f,leaseToken:d,runId:y,workerName:h,action:"deferred_orphan",detail:`live pid ${Z} references ${M}`});continue}}if(!y){l.push({taskId:f,leaseToken:d,runId:y,workerName:h,action:"skipped",detail:"claim intent missing runId \u2014 cannot resolve lease owner"});continue}let G=await r.releaseClaim({taskId:f,leaseToken:d,runId:y});G.released?(Oe({taskId:f,leaseToken:d},"restart_recovery"),h&&(Dr(y,h),Kr(y,h)),O.recoveredStrandedClaims+=1,l.push({taskId:f,leaseToken:d,runId:y,workerName:h,action:"released"})):G.transportError?l.push({taskId:f,leaseToken:d,runId:y,workerName:h,action:"deferred_transport",detail:G.detail}):(Oe({taskId:f,leaseToken:d},"restart_recovery_refused"),l.push({taskId:f,leaseToken:d,runId:y,workerName:h,action:"release_refused",detail:G.detail}))}catch{O.recoveryStoreFailures+=1}}return{mode:e,scanned:u.length,outcomes:l}}function Wr(){return{"dispatchReceipts.recoveredStrandedClaims":O.recoveredStrandedClaims,"dispatchReceipts.recoveryDeferredOrphans":O.recoveryDeferredOrphans,"dispatchReceipts.recoveryStoreFailures":O.recoveryStoreFailures}}function ti(){O.recoveredStrandedClaims=0,O.recoveryDeferredOrphans=0,O.recoveryStoreFailures=0}re();import pi from"node:path";var ni="kynver-harness:",oi="@runner:";function bn(r,e){let t=r.trim(),n=e.trim();return`${ni}${t}${oi}${n}`}T();import vn from"node:os";var si="embedded-1",ii=[{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"}],ai={"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(`
|
|
123
|
+
WHERE scope = ? ORDER BY seq DESC LIMIT 1`).get(e);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(e){let t=this.db.prepare(`PRAGMA ${e}`).get();return String(Object.values(t)[0])}close(){this.db.close()}};import{existsSync as Qn,renameSync as Zn}from"node:fs";function eo(r,e){let t=`${r}.quarantine-${e}`;for(let n of["","-wal","-shm"]){let o=`${r}${n}`;Qn(o)&&Zn(o,`${t}${n}`)}return t}function Me(r){let e=r.quarantineStamp??(r.now??(()=>new Date))().toISOString().replace(/[:.]/g,"-"),t=null;try{let s=G.open(r);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=`${r.directory}/${r.filename??"local-run-store.sqlite"}`,o=eo(n,e);try{return{store:G.open(r),recovered:!0,quarantinedTo:o}}catch(s){throw new AggregateError([t,s].filter(Boolean),"local-run-store rebuild after quarantine failed")}}Ve();function hs(){if(process.env.KYNVER_LRS_TEST_CLASSIFY_BYPASS==="1")return{mountsSource:()=>"/dev/vda / ext4 rw 0 0",resolveRealPath:()=>"/tmp/kynver-lrs-test/db"}}function ys(){return pn.classifyOptions??hs()}var pn={};function Rs(r){pn=r}var fn=300*1e3,L=null,te=0;function Ss(r,e){te+=1;try{let t=ys(),n=Me({directory:r,...t?{classifyOptions:t}:{}});return{store:n.store,status:{state:"open",harnessRoot:r,databasePath:n.store.databasePath,schemaVersion:n.store.localSchemaVersion(),recovered:n.recovered,quarantinedTo:n.quarantinedTo,reason:null,openAttempts:te},failedAtMs:null,permanentRefusal:!1}}catch(t){return{store:null,status:{state:"unavailable",harnessRoot:r,databasePath:null,schemaVersion:null,recovered:!1,quarantinedTo:null,reason:`${t.name}: ${t.message}`,openAttempts:te},failedAtMs:e,permanentRefusal:t.name==="FilesystemPolicyError"||t.name==="SchemaDowngradeRefusedError"}}}function bs(r,e){return r.store||r.permanentRefusal?!1:r.failedAtMs===null?!0:e-r.failedAtMs>=fn}function m(r=Date.now()){let e=br();return(!L||L.status.harnessRoot!==e||bs(L,r))&&(xr(),L=Ss(e,r)),L.store}function mn(){return L?L.status:{state:"unopened",harnessRoot:null,databasePath:null,schemaVersion:null,recovered:!1,quarantinedTo:null,reason:null,openAttempts:te}}function kr(){return m(),mn()}function xr(){try{L?.store?.close()}catch{}L=null}function ks(){xr(),te=0}T();b();import{existsSync as xs,readFileSync as vs}from"node:fs";import{homedir as Es}from"node:os";import _s from"node:path";var Cs=3e4,v=null;function vr(r){let e=r.replace(/[^A-Za-z0-9_-]/g,"_");return _s.join(Es(),".kynver",`local-run-store-flags-${e}.json`)}function Er(r){if(!r||typeof r!="object"||Array.isArray(r))return{};let e=r,t={},n=["dispatchReceipts","admission","planOutbox","keeper","meshLease","quota"];for(let o of n){let s=e[o];(s==="off"||s==="shadow"||s==="enforce")&&(t[o]=s)}return t}function As(r){if(!r||typeof r!="object"||Array.isArray(r))return null;let e=r.response;if(!e||typeof e!="object"||Array.isArray(e))return null;let t=e.localRunStoreFlags;return t===void 0?null:Er(t)}function ws(r,e){try{let t=vr(r),n={contractVersion:1,agentOsId:r,flags:Er(e),deliveredAt:new Date().toISOString()};ie(t,n),v={flags:n.flags,loadedAtMs:Date.now(),file:t}}catch{}}function _r(r=Date.now()){if(process.env.KYNVER_LRS_REMOTE_FLAGS_DISABLED==="1")return{};if(v&&r-v.loadedAtMs<Cs)return v.flags;try{let e=E().agentOsId?.trim();if(!e)return v={flags:{},loadedAtMs:r,file:null},v.flags;let t=vr(e);if(!xs(t))return v={flags:{},loadedAtMs:r,file:t},v.flags;let n=JSON.parse(vs(t,"utf8")),o=n?.contractVersion===1?Er(n.flags):{};return v={flags:o,loadedAtMs:r,file:t},o}catch{return v={flags:{},loadedAtMs:r,file:null},v.flags}}function Os(){v=null}var gn=[{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 hn(r){let e=r?.trim().toLowerCase()??"";return e===""?{mode:"off",unknown:!1}:e==="off"||e==="shadow"||e==="enforce"?{mode:e,unknown:!1}:{mode:"off",unknown:!0}}function A(r=process.env){let e={},t={},n=[],o=_r();for(let s of gn){let i=r[s.env];if(typeof i=="string"&&i.trim()!==""){let c=hn(i);e[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){e[s.key]=u,t[s.key]="server";continue}e[s.key]="off",t[s.key]="default"}return{flags:e,sources:t,warnings:n}}function Is(r){return Object.values(r).some(e=>e!=="off")}var R={storeFailures:0,completionReplaysObserved:0,completionReplaysShortCircuited:0,agedReceiptsPruned:0};function w(r=process.env){return A(r).flags.dispatchReceipts}function Cr(r){return w(r)!=="off"}function Ar(r,e){return`dispatch:${r}:${e.taskId}:${e.leaseToken}`}function ne(r,e,t){if(!Cr())return;let n=m();if(n)try{n.recordOperationReceipt({idempotencyKey:Ar(r,e),operation:`dispatch-${r}`,resultJson:t===void 0?null:JSON.stringify(t)})}catch{R.storeFailures+=1}}function Ts(r){ne("claim",r,{runId:r.runId,workerName:r.workerName,provider:r.provider})}function wr(r){ne("spawned",r)}function we(r,e){ne("released",r,{reasonClass:e})}function Ps(r){ne("completion-sent",r)}function Ns(r,e){ne("completion-acked",r,{outcome:e})}function Ds(r){if(!Cr())return!1;let e=m();if(!e)return!1;try{let t=e.getOperationReceipt(Ar("completion-acked",r));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 Ls(r){let e=String(r??"").split(":")[0]?.trim()??"";return e.length>0?e.slice(0,64):"unknown"}function Ks(r){if(w()!=="enforce")return!1;let e=m();if(!e)return!1;try{let t=e.getOperationReceipt(Ar("completion-acked",r));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 Ms=600*1e3;function Fs(r,e){if(w()!=="enforce")return;let t=m();if(t)try{t.recordOperationReceipt({idempotencyKey:`dispatch:start-failed:${r}:${e}`,operation:"dispatch-start-failed",resultJson:JSON.stringify({runId:e})})}catch{R.storeFailures+=1}}function Ws(r,e){if(w()!=="enforce")return[];let t=m();if(!t)return[];let n=e?.nowMs??Date.now(),o=e?.windowMs??Ms;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===r:!1}catch{return!1}}).map(s=>{let i=s.idempotencyKey.slice(22);return i.slice(0,i.length-(r.length+1))}).filter(s=>s.length>0)}catch{return R.storeFailures+=1,[]}}function z(r){let e=r.split(":")[0]??"",t=Number(e);return Number.isInteger(t)&&t>=0?t:null}var Bs=900*1e3,yn=10080*60*1e3,Us=1440*60*1e3,$s=500,Hs=300;function Or(r){let e={scannedClaims:0,strandedClaimCandidates:0,prunedReceipts:0};if(!Cr())return e;let t=m();if(!t)return e;let n=r?.nowMs??Date.now(),o=r?.strandedAfterMs??Bs;try{let s=t.listOperationReceipts({operation:"dispatch-claim",recordedAfter:new Date(n-yn).toISOString(),limit:$s}),i=0,l=[];for(let c of s){let p=c.idempotencyKey.slice(15),f=Date.parse(c.recordedAt);if(!Number.isFinite(f)||n-f<o)continue;let d=t.getOperationReceipt(`dispatch:spawned:${p}`),j=t.getOperationReceipt(`dispatch:released:${p}`);if(d||j){n-f>=Us&&l.length+5<=Hs&&l.push(c.idempotencyKey,`dispatch:spawned:${p}`,`dispatch:released:${p}`,`dispatch:completion-sent:${p}`,`dispatch:completion-acked:${p}`);continue}let x=p.split(":")[0]??"",Y=z(p.slice(x.length+1));if((x?t.listOperationReceipts({keyPrefix:`dispatch:completion-acked:${x}:`,limit:10}):[]).some(h=>{if(Y===null)return!0;let V=h.idempotencyKey.slice(`dispatch:completion-acked:${x}:`.length),M=z(V);return M===null||M>=Y}))continue;let y=!1;if(r?.hasLiveWorker&&c.resultJson)try{let h=JSON.parse(c.resultJson);h.runId&&h.workerName&&(y=r.hasLiveWorker({runId:h.runId,workerName:h.workerName}))}catch{y=!1}y||(i+=1)}let u=l.length>0?t.deleteOperationReceiptsByKeys(l):0;if(w()==="enforce"){let c=t.listOperationReceipts({limit:100}).filter(p=>{let f=Date.parse(p.recordedAt);return Number.isFinite(f)&&n-f>=yn}).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,e}}function Ir(){return{"dispatchReceipts.storeFailures":R.storeFailures,"dispatchReceipts.completionReplaysObserved":R.completionReplaysObserved,"dispatchReceipts.completionReplaysShortCircuited":R.completionReplaysShortCircuited,"dispatchReceipts.agedReceiptsPruned":R.agedReceiptsPruned}}function js(){R.storeFailures=0,R.completionReplaysObserved=0,R.completionReplaysShortCircuited=0,R.agedReceiptsPruned=0}import{readdirSync as Qs,readFileSync as Zs}from"node:fs";var U=900*1e3,Pr="admission-shadow",Tr="worker-slot:",_={storeFailures:0,missingForLive:0,deadSlotsReleased:0},Oe=!1;function Ys(){Oe=!1}function $(r=process.env){return A(r).flags.admission}function Ie(r,e){return`${Tr}${r}:${e}`}function Vs(r,e){if($()==="off")return;let t=m();if(t)try{t.tryReserveAdmission(Ie(r,e),Pr,U)}catch{_.storeFailures+=1}}function Nr(r,e){if($()==="off")return;let t=m();if(t)try{t.releaseAdmission(Ie(r,e),Pr)}catch{_.storeFailures+=1}}function Gs(r){let e={liveReservations:0,refreshed:0,deadReleased:0,missingForLive:0,orphaned:0,adoptionPass:!1};if($()==="off")return e;let t=m();if(!t)return e;try{let n=new Set(r.liveWorkers.map(d=>Ie(d.runId,d.workerName))),o=t.listAdmissionReservations({keyPrefix:Tr,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,u=!Oe;Oe=!0,!u&&i>0&&(_.missingForLive+=i);let c=0;for(let d of r.liveWorkers)t.tryReserveAdmission(Ie(d.runId,d.workerName),Pr,U),c+=1;let p=0;for(let d of o)n.has(d.key)||t.releaseAdmission(d.key,d.owner)&&(p+=1,_.deadSlotsReleased+=1);return{liveReservations:t.listAdmissionReservations({keyPrefix:Tr,limit:500}).length,refreshed:c,deadReleased:p,missingForLive:i,orphaned:l,adoptionPass:u}}catch{return _.storeFailures+=1,e}}function Dr(){return{"admission.storeFailures":_.storeFailures,"admission.missingForLive":_.missingForLive,"admission.deadSlotsReleased":_.deadSlotsReleased}}function Js(){_.storeFailures=0,_.missingForLive=0,_.deadSlotsReleased=0,Oe=!1}var Ne="worker-slot-n:",Te=64;function Rn(r){return`${Ne}${r}`}function Pe(r,e){return`${r}:${e}`}var C={enforceStoreFailures:0,admissionsRefusedSlots:0,admissionsRefusedDiskBackstop:0};function qs(r){if($()!=="enforce")return{admitted:!0};let e=m();if(!e)return{admitted:!0};let t=Math.max(0,Math.min(Te,Math.floor(r.maxSlots)));if(r.diskActiveWorkers>=t)return C.admissionsRefusedDiskBackstop+=1,{admitted:!1,reason:"disk_backstop"};try{let n=Pe(r.runId,r.workerName);for(let o=0;o<t;o+=1)if(e.tryReserveAdmission(Rn(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 Lr(r,e){if($()==="off")return;let t=m();if(t)try{let n=Pe(r,e),o=t.listAdmissionReservations({keyPrefix:Ne,limit:Te});for(let s of o)s.owner===n&&t.releaseAdmission(s.key,n)}catch{C.enforceStoreFailures+=1}}function zs(r){let e={refreshed:0,deadReleased:0,adopted:0};if($()!=="enforce")return e;let t=m();if(!t)return e;try{let n=new Set(r.liveWorkers.map(c=>Pe(c.runId,c.workerName))),o=t.listAdmissionReservations({keyPrefix:Ne,limit:Te}),s=0,i=0,l=new Set;for(let c of o)n.has(c.owner)?(t.tryReserveAdmission(c.key,c.owner,U),l.add(c.owner),s+=1):t.releaseAdmission(c.key,c.owner)&&(i+=1);let u=0;for(let c of r.liveWorkers){let p=Pe(c.runId,c.workerName);if(!l.has(p)){for(let f=0;f<Te;f+=1)if(t.tryReserveAdmission(Rn(f),p,U).acquired){u+=1;break}}}return{refreshed:s,deadReleased:i,adopted:u}}catch{return C.enforceStoreFailures+=1,e}}function Kr(){return{"admission.enforceStoreFailures":C.enforceStoreFailures,"admission.refusedSlotsExhausted":C.admissionsRefusedSlots,"admission.refusedDiskBackstop":C.admissionsRefusedDiskBackstop}}function Xs(){C.enforceStoreFailures=0,C.admissionsRefusedSlots=0,C.admissionsRefusedDiskBackstop=0}var ei="dispatch:claim:",ri=900*1e3,ti=10080*60*1e3,ni=200,O={recoveredStrandedClaims:0,recoveryDeferredOrphans:0,recoveryStoreFailures:0};function Sn(r){if(process.platform!=="linux"||!r.trim())return null;let e=[];try{e=Qs("/proc")}catch{return null}for(let t of e)if(/^\d+$/.test(t)&&Number(t)!==process.pid)try{if(Zs(`/proc/${t}/cmdline`,"utf8").replace(/\0/g," ").includes(r))return Number(t)}catch{}return null}async function Mr(r){let e=w(),t={mode:e,scanned:0,outcomes:[]};if(e!=="enforce")return t;let n=m();if(!n)return t;let o=r.nowMs??Date.now(),s=r.strandedAfterMs??ri,i=r.findOrphanPid??Sn,l=[],u;try{u=n.listOperationReceipts({operation:"dispatch-claim",recordedAfter:new Date(o-ti).toISOString(),limit:ni})}catch{return O.recoveryStoreFailures+=1,t}for(let c of u){let p=c.idempotencyKey.slice(ei.length),f=p.split(":")[0]??"",d=p.slice(f.length+1);if(!(!f||!d))try{let j=Date.parse(c.recordedAt);if(!Number.isFinite(j)||o-j<s||n.getOperationReceipt(`dispatch:spawned:${p}`)||n.getOperationReceipt(`dispatch:released:${p}`))continue;let x=z(d);if(n.listOperationReceipts({keyPrefix:`dispatch:completion-acked:${f}:`,limit:10}).some(M=>{if(x===null)return!0;let Q=z(M.idempotencyKey.slice(`dispatch:completion-acked:${f}:`.length));return Q===null||Q>=x}))continue;let X={};try{X=c.resultJson?JSON.parse(c.resultJson):{}}catch{X={}}let y=X.runId??null,h=X.workerName??null;if(y&&h&&r.hasLiveWorker({runId:y,workerName:h})){wr({taskId:f,leaseToken:d}),l.push({taskId:f,leaseToken:d,runId:y,workerName:h,action:"finalized_late"});continue}if(y&&h){let M=r.worktreePathFor({runId:y,workerName:h}),Q=M?i(M):null;if(Q!==null){O.recoveryDeferredOrphans+=1,l.push({taskId:f,leaseToken:d,runId:y,workerName:h,action:"deferred_orphan",detail:`live pid ${Q} references ${M}`});continue}}if(!y){l.push({taskId:f,leaseToken:d,runId:y,workerName:h,action:"skipped",detail:"claim intent missing runId \u2014 cannot resolve lease owner"});continue}let V=await r.releaseClaim({taskId:f,leaseToken:d,runId:y});V.released?(we({taskId:f,leaseToken:d},"restart_recovery"),h&&(Nr(y,h),Lr(y,h)),O.recoveredStrandedClaims+=1,l.push({taskId:f,leaseToken:d,runId:y,workerName:h,action:"released"})):V.transportError?l.push({taskId:f,leaseToken:d,runId:y,workerName:h,action:"deferred_transport",detail:V.detail}):(we({taskId:f,leaseToken:d},"restart_recovery_refused"),l.push({taskId:f,leaseToken:d,runId:y,workerName:h,action:"release_refused",detail:V.detail}))}catch{O.recoveryStoreFailures+=1}}return{mode:e,scanned:u.length,outcomes:l}}function Fr(){return{"dispatchReceipts.recoveredStrandedClaims":O.recoveredStrandedClaims,"dispatchReceipts.recoveryDeferredOrphans":O.recoveryDeferredOrphans,"dispatchReceipts.recoveryStoreFailures":O.recoveryStoreFailures}}function oi(){O.recoveredStrandedClaims=0,O.recoveryDeferredOrphans=0,O.recoveryStoreFailures=0}ee();import mi from"node:path";var si="kynver-harness:",ii="@runner:";function bn(r,e){let t=r.trim(),n=e.trim();return`${si}${t}${ii}${n}`}T();import vn from"node:os";var ai="embedded-1",li=[{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"}],ci={"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(`
|
|
123
124
|
`),"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(`
|
|
124
125
|
`),"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(`
|
|
125
126
|
`),"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(`
|
|
126
|
-
`)},
|
|
127
|
+
`)},ui={"harness.maxTaskAttempts":4,"harness.dispatchCooldownMs":5e3,"daemon.idleIntervalMs":5*6e4,"daemon.maxIdleStreak":10},kn={version:ai,generatedAt:"1970-01-01T00:00:00.000Z",personas:li,instructions:ci,policyThresholds:ui};var di=kn;function xn(){return di.version}F();function K(r){return r?.trim()?r.trim():null}function En(r={}){let e=r.env??process.env,t=E();return{runnerId:K(t.runnerId)??K(e.KYNVER_RUNTIME_ID)??K(e.OPENCLAW_RUNTIME_ID)??K(e.HOSTNAME)??vn.hostname(),hostname:K(e.HOSTNAME)??vn.hostname(),profile:K(e.KYNVER_RUNNER_PROFILE)??K(e.OPENCLAW_RUNNER_PROFILE),harnessRepo:K(e.KYNVER_HARNESS_REPO)??K(e.KYNVER_DEFAULT_REPO),runId:r.runId??null,instructionBundleVersion:xn()}}function _n(r){let e=String(r).trim();return e.startsWith("krc1.")?{"Content-Type":"application/json","X-Kynver-Runner-Token":e}:{"Content-Type":"application/json","X-Kynver-Cron-Secret":e,"X-OpenClaw-Cron-Secret":e,"X-Kynver-Runtime-Secret":e}}ue();T();function wn(r){if(r!==void 0&&Number.isFinite(r)&&r>0)return Math.floor(r);let e=Number(process.env.KYNVER_CALLBACK_TIMEOUT_MS);return Number.isFinite(e)&&e>0?Math.floor(e):3e4}function Cn(r){return new Error(`callback timeout after ${r}ms`)}async function pi(r,e){let t=wn(e),n=new AbortController,o,s=!1;try{return await Promise.race([r(n.signal),new Promise((i,l)=>{o=setTimeout(()=>{s=!0,n.abort(),l(Cn(t))},t)})])}catch(i){throw s?Cn(t):i}finally{o&&clearTimeout(o)}}function fi(r,e){let t=wn(e);return{ok:!1,status:0,response:{error:r instanceof Error?r.message:String(r),timeoutMs:t}}}async function An(r,e,t,n){try{return await pi(async o=>{let s=await ce(r,{method:"POST",headers:_n(e),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 fi(o,n?.timeoutMs)}}async function On(r,e,t,n){let o=await An(r,e,t,{timeoutMs:n.timeoutMs});if(o.ok||o.status!==401)return o;let s=await un(e,n.agentOsId,{baseUrl:n.baseUrl});return s.ok?{...await An(r,s.token,t,{timeoutMs:n.timeoutMs}),refreshedAuth:!0}:{...o,authRefreshFailure:s.reason}}async function In(r){let e=`${r.baseUrl}/api/agent-os/by-id/${encodeURIComponent(r.agentOsId)}/tasks/${encodeURIComponent(r.taskId)}/release`,t;try{t=await On(e,r.secret,{agentOsId:r.agentOsId,leaseOwner:r.leaseOwner,...r.leaseToken?.trim()?{leaseToken:r.leaseToken.trim()}:{},...r.failureDetail?{failureDetail:r.failureDetail}:{}},{agentOsId:r.agentOsId,baseUrl:r.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 Wr=!1;function gi(){Wr=!1}async function hi(r){if(Wr||w()!=="enforce")return null;Wr=!0;try{let e=En().runnerId,t=await Mr({hasLiveWorker:r.hasLiveWorker,worktreePathFor:({runId:n,workerName:o})=>mi.join(it().worktreesDir,n,o),releaseClaim:async({taskId:n,leaseToken:o,runId:s})=>{let i=await In({baseUrl:r.baseUrl,secret:r.secret,agentOsId:r.agentOsId,taskId:n,leaseOwner:bn(s,e),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 Rf=600*1e3,oe={storeFailures:0,corruptItemsSeen:0,corruptItemsQuarantined:0,duplicateDrainsObserved:0,halfArchivesCompleted:0};function Tn(){return{"planOutbox.storeFailures":oe.storeFailures,"planOutbox.corruptItemsSeen":oe.corruptItemsSeen,"planOutbox.corruptItemsQuarantined":oe.corruptItemsQuarantined,"planOutbox.duplicateDrainsObserved":oe.duplicateDrainsObserved,"planOutbox.halfArchivesCompleted":oe.halfArchivesCompleted}}var g={keeperStoreFailures:0,meshStoreFailures:0,quotaStoreFailures:0,meshLeaseDivergences:0,meshEnforceStaleInversions:0,quotaVerdictDivergences:0};function H(r){return A(process.env).flags[r]}var Pn="daemon-keeper",yi=1800*1e3;function Ri(r){if(H("keeper")==="off")return;let e=m();if(e)try{e.saveRecoveryCheckpoint({scope:Pn,payloadJson:JSON.stringify(r)})}catch{g.keeperStoreFailures+=1}}function Si(){if(H("keeper")!=="enforce")return null;let r=m();if(!r)return null;try{let e=r.latestRecoveryCheckpoint(Pn);if(!e)return null;let t=JSON.parse(e.payloadJson),n=Date.now()-Date.parse(e.createdAt);if(!Number.isFinite(n)||n>yi)return null;let o=Number(t.consecutiveFailures);return Number.isFinite(o)&&o>=0?Math.floor(o):null}catch{return g.keeperStoreFailures+=1,null}}function Br(r){return`mesh-cron-lease:${r}`}function bi(r,e){if(H("meshLease")==="off")return;let t=m();if(t)try{let n=t.latestRecoveryCheckpoint(Br(r));if(n){let o=JSON.parse(n.payloadJson);if((o.leaseToken??null)===(e.leaseToken??null)&&(o.holderBoxId??null)===(e.holderBoxId??null)&&o.authorized===e.authorized)return}t.saveRecoveryCheckpoint({scope:Br(r),payloadJson:JSON.stringify(e)})}catch{g.meshStoreFailures+=1}}function ki(r,e){let t=H("meshLease");if(t==="off")return null;let n=m();if(!n)return null;try{let o=n.latestRecoveryCheckpoint(Br(r)),s=o?JSON.parse(o.payloadJson):null,i=s!==null&&((s.leaseToken??null)!==(e?.leaseToken??null)||(s.holderBoxId??null)!==(e?.holderBoxId??null)||(s.authorized??null)!==(e?.authorized??null));return i&&(g.meshLeaseDivergences+=1),t!=="enforce"?null:i&&e?.updatedAt&&s?.updatedAt&&Date.parse(e.updatedAt)>Date.parse(s.updatedAt)?(g.meshEnforceStaleInversions+=1,null):s}catch{return g.meshStoreFailures+=1,null}}function De(r){return`quota-cooldown:${r}`}var Nn="quota-preflight";function xi(r,e){if(H("quota")==="off")return;let t=m();if(t)try{t.tryReserveAdmission(De(r),Nn,e)}catch{g.quotaStoreFailures+=1}}function vi(r){if(H("quota")==="off")return;let e=m();if(e)try{e.releaseAdmission(De(r),Nn)}catch{g.quotaStoreFailures+=1}}function Ei(r,e){let t=H("quota");if(t==="off")return null;let n=m();if(!n)return null;try{let o=n.listAdmissionReservations({keyPrefix:De(r),limit:50}).find(i=>i.key===De(r)),s=!!o;return s!==e&&(g.quotaVerdictDivergences+=1),t==="enforce"?{blocked:s,retryAtIso:o?.expiresAt??null}:null}catch{return g.quotaStoreFailures+=1,null}}function Ur(){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 _i(){g.keeperStoreFailures=0,g.meshStoreFailures=0,g.quotaStoreFailures=0,g.meshLeaseDivergences=0,g.meshEnforceStaleInversions=0,g.quotaVerdictDivergences=0}function Ci(r){let e=kr(),t=A(r?.env??process.env),n=(r?.now??(()=>new Date))().getTime(),o={};if(t.flags.dispatchReceipts!=="off"){Object.assign(o,Ir());let s=Or({nowMs:n,hasLiveWorker:r?.hasLiveWorker});o["dispatchReceipts.strandedClaimCandidates"]=s.strandedClaimCandidates,t.flags.dispatchReceipts==="enforce"&&Object.assign(o,Fr())}return t.flags.planOutbox!=="off"&&Object.assign(o,Tn()),t.flags.admission!=="off"&&(Object.assign(o,Dr()),t.flags.admission==="enforce"&&Object.assign(o,Kr())),(t.flags.keeper!=="off"||t.flags.meshLease!=="off"||t.flags.quota!=="off")&&Object.assign(o,Ur()),{contractVersion:1,observedAt:new Date(n).toISOString(),state:e.state,schemaVersion:e.schemaVersion,recovered:e.recovered,unavailableClass:e.reason?e.reason.split(":")[0]??null:null,flags:t.flags,flagSources:t.sources,flagWarningCount:t.warnings.length,divergenceCounters:o}}export{U as ADMISSION_RESERVATION_TTL_MS,Ne as ADMISSION_SLOT_KEY_PREFIX,Z as FilesystemPolicyError,fn as LOCAL_RUN_STORE_OPEN_RETRY_MS,gn as LOCAL_RUN_STORE_SURFACES,Ke as LOCAL_SCHEMA_VERSION,se as SchemaDowngradeRefusedError,G as SqliteLocalRunStore,Xs as __resetAdmissionEnforceCountersForTests,Js as __resetAdmissionShadowCountersForTests,oi as __resetDispatchClaimRecoveryForTests,js as __resetDispatchReceiptCountersForTests,ks as __resetLocalRunStoreLifecycleForTests,Os as __resetRemoteSurfaceFlagsCacheForTests,_i as __resetSmallSurfaceCountersForTests,gi as __resetStartupClaimRecoveryForTests,Rs as __setLocalRunStoreLifecycleTestOverrides,qs as acquireWorkerAdmissionSlot,Kr as admissionEnforceCounters,Dr as admissionShadowCounters,Is as anyLocalRunStoreSurfaceActive,Ei as assessQuotaCooldownReservation,Ci as buildLocalRunStoreTickPosture,Le as classifyDatabaseDirectory,vi as clearQuotaCooldownReservation,xr as closeLocalRunStore,Fr as dispatchClaimRecoveryCounters,Ir as dispatchReceiptCounters,w as dispatchReceiptsMode,As as extractLocalRunStoreFlagsFromOperatorTickResponse,Sn as findLiveProcessByCmdlinePath,m as getLocalRunStore,mn as getLocalRunStoreLifecycleStatus,_r as getRemoteSurfaceFlags,z as leaseTokenAttempt,Ws as listRecentDispatchStartFailures,hi as maybeRunStartupClaimRecovery,Ds as noteCompletionReplayIfAcked,Me as openSqliteLocalRunStoreWithRecovery,hn as parseLocalRunStoreSurfaceMode,ws as persistRemoteSurfaceFlags,kr as probeLocalRunStore,ki as readMeshLeaseCheckpoint,Ys as rearmAdmissionAdoptionPass,Gs as reconcileAdmissionShadow,zs as reconcileNumberedAdmissionSlots,Ns as recordCompletionAckedReceipt,Ps as recordCompletionSentReceipt,Ts as recordDispatchClaimReceipt,we as recordDispatchReleasedReceipt,wr as recordDispatchSpawnedReceipt,Fs as recordDispatchStartFailedReceipt,xi as recordQuotaCooldownReservation,Mr as recoverStrandedDispatchClaims,Ls as releaseReasonClass,Lr as releaseWorkerAdmissionSlot,Nr as releaseWorkerSlotReservation,vr as remoteSurfaceFlagsPath,A as resolveLocalRunStoreSurfaceFlags,Si as restoreKeeperBackoffCheckpoint,Ri as saveKeeperBackoffCheckpoint,bi as saveMeshLeaseCheckpoint,Or as scanDispatchReceiptInvariants,Ks as shouldShortCircuitCompletionReplay,Ur as smallSurfaceCounters,Vs as takeWorkerSlotReservation};
|
package/dist/server/cleanup.js
CHANGED
|
@@ -72,7 +72,7 @@ child.on("error", (e) => {
|
|
|
72
72
|
if (!child.pid) finish(127, null, String(e && e.message));
|
|
73
73
|
});
|
|
74
74
|
child.on("exit", (code, signal) => finish(code, signal));
|
|
75
|
-
`});function Et(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let r=e.handoffState;return typeof r=="string"&&pu.has(r)}function Ct(e){return!!(e&&du.test(e))}function ro(e){if(e.noRestartAt?.trim())return"stopped_by_hand";if(e.finalResult&&!Et(e.finalResult))return"finished";if(e.alive)return e.stale?"stuck":"running";let r=e.error?.trim()??"",t=e.exit??null;if(t?.oomEvidence||Ct(r))return"oom";let n=e.reconcileReason??"";return/reconciled stale worker/i.test(n)?"stuck":eo.test(r)||eo.test(n)?"timed_out":t&&t.exitCode===0&&!t.signal&&!t.spawnError?"no_report":t&&(t.signal||t.spawnError||t.exitCode!==null&&t.exitCode!==0)||r?"crashed":"no_report"}function to(e){let r=[fu(e.stopClass)],t=Qn(e.exit);t&&r.push(t),e.exit?.oomEvidence&&r.push(`evidence: ${e.exit.oomEvidence.detail}`),e.stopClass==="no_report"&&e.exit?.exitCode===0&&r.push("it exited normally but never sent a final report");let n=e.error?.replace(/\s+/g," ").trim();return n?r.push(`last output: ${n.length>300?`${n.slice(-300)}`:n}`):e.stopClass==="stuck"&&e.reconcileReason&&r.push(e.reconcileReason),r.join(" \u2014 ").slice(0,600)}function fu(e){switch(e){case"finished":return"finished";case"oom":return"ran out of memory";case"crashed":return"crashed";case"no_report":return"stopped without reporting";case"timed_out":return"timed out";case"stuck":return"stuck (no progress)";case"stopped_by_hand":return"stopped on purpose";default:return"running"}}var du,eo,pu,no=m(()=>{"use strict";se();b();vt();du=/javascript heap out of memory|reached heap limit|allocation failed - process out of memory|\bout of memory\b|\boom[- ]?kill(?:ed|er)?\b|std::bad_alloc|cannot allocate memory|\benomem\b|exit(?:ed)? (?:with )?(?:code|status) 137\b|killed process \d+/i,eo=/\btimed? ?out\b|\btimeout\b|deadline exceeded/i,pu=new Set(["exited_without_final_result","exited_without_complete_heartbeat","exit_failure"])});function oo(e,r=240){let t=e.replace(/\s+/g," ").trim();return t.length>r?`${t.slice(0,r-1)}\u2026`:t}function wt(e){let r=(e??"").trim();if(!r)return null;if(He(r))return{blocked:!0,reason:`provider authentication failed: ${oo(r)}`};for(let t of mu)if(t.test.test(r))return{blocked:!0,reason:`${t.label}: ${oo(r)}`};return null}var mu,so=m(()=>{"use strict";br();bt();mu=[{test:/(?:claude provider refuses to spawn: worker prompt is empty after argv assembly|Input must be provided (?:either )?through stdin or as a prompt argument)/i,label:"provider prompt delivery failed"},{test:Gn,label:"Claude Code doesn't know this model (update Claude Code with `claude update`, or pick another model)"},{test:/\b(?:invalid|unknown|unsupported|unrecognized)\b[^.\n]*\bmodel\b/i,label:"provider rejected the requested model"},{test:/\bmodel\b[^.\n]*\b(?:not\s+(?:found|supported|available|recognized|valid)|is\s+not\s+valid|does\s+not\s+exist)/i,label:"provider rejected the requested model"},{test:/\b(?:did you mean|available models|choose (?:a|one of)|supported models)\b/i,label:"provider rejected the requested model"},{test:/model preflight failed/i,label:"model/provider preflight failed"},{test:/\b(?:command not found|ENOENT|is the .*CLI on PATH|executable not found|no such file or directory)\b/i,label:"provider CLI is missing or not on PATH"},{test:/\bfailed to spawn\b/i,label:"provider failed to spawn the worker process"},{test:/\b(?:not logged in|unauthorized|authentication (?:failed|required)|invalid api key|missing api key|401)\b/i,label:"provider authentication failed"},{test:/\b(?:out of usage|increase limits?|switch to auto|ask your admin to increase your limit|usage limits?|quota exceeded|insufficient_quota|credits? exhausted|billing|payment required)\b/i,label:"provider quota exhausted"}]});function io(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function gu(e){return e==null?!1:typeof e=="string"?e.trim().length>0:typeof e=="boolean"?e:Array.isArray(e)?e.length>0:typeof e=="object"?Object.keys(e).length>0:!0}function hu(e){return!e?.checked||e.headIsAncestorOfBase!==!1?null:io(e.head)}function ku(e,r,t){let n=["exited_with_changes_salvage"];if((e==="uncommitted"||e==="both")&&n.push(`${r} uncommitted change${r===1?"":"s"} with no final result`),(e==="committed_ahead"||e==="both")&&t){let o=t.length>12?t.slice(0,12):t;n.push(`commit ${o} ahead of base with no final result`)}return n.push("review worktree \u2014 commit, open a PR, or run a salvage worker before discarding"),n.join(": ")}function ao(e){if(e.alive||gu(e.finalResult))return null;let r=(e.changedFiles??[]).filter(i=>i.trim()).length,t=io(e.headCommit)??hu(e.gitAncestry),n=r>0,o=!!t;if(!n&&!o)return{kind:"none",salvageable:!1,uncommittedCount:0,headCommit:null,attentionReason:"process exited without a final result"};let s=n&&o?"both":n?"uncommitted":"committed_ahead";return{kind:s,salvageable:!0,uncommittedCount:r,headCommit:t,attentionReason:ku(s,r,t)}}var uo=m(()=>{"use strict"});import{existsSync as yu,readFileSync as Ru,statSync as po}from"node:fs";import Sr from"node:path";function _u(e,r=process.env){let t=e?Su:bu,n=r.KYNVER_WORKER_GIT_PROBE_CACHE_TTL_MS?.trim();if(!n)return t;let o=Number(n);return Number.isFinite(o)&&o>=0?Math.floor(o):t}function vu(e){return e.baseCommit?.trim()||e.base?.trim()||"origin/main"}function At(e){try{return po(e).mtimeMs}catch{return-1}}function Eu(e){let r=Sr.join(e,".git");try{if(po(r).isDirectory())return r;let t=/^gitdir:\s*(.+)$/m.exec(Ru(r,"utf8"));return t?Sr.resolve(e,t[1].trim()):null}catch{return null}}function lo(e){let r=Eu(e);return[At(e),r?At(Sr.join(r,"HEAD")):-2,r?At(Sr.join(r,"index")):-2].join(":")}function co(e,r){return{changedFiles:Ue(e),gitAncestry:or(e,{base:r.base,baseCommit:r.baseCommit})}}function Cu(e,r){for(ie.delete(e),ie.set(e,r);ie.size>xu;){let t=ie.keys().next().value;if(t===void 0)break;ie.delete(t)}}function fo(e,r,t){let n=vu(r);if(!e||!e.trim())return $e.missingWorktree++,{changedFiles:[],gitAncestry:ve(n,"missing worktree path")};let o=`${e}\0${n}`;if(!yu(e))return ie.delete(o),$e.missingWorktree++,{changedFiles:[],gitAncestry:ve(n,`worktree no longer exists: ${e}`)};if(t.alive)return ie.delete(o),$e.liveProbes++,co(e,r);let s=t.ttlMs??_u(!!r.baseCommit?.trim()),i=t.now??Date.now(),a=lo(e),u=ie.get(o);if(s>0&&u&&u.fingerprint===a&&i<u.expiresAt)return $e.hits++,u.probe;$e.misses++;let l=co(e,r);if(s>0){let c=.8+.4*(t.random??Math.random)();Cu(o,{fingerprint:lo(e),expiresAt:i+Math.round(s*c),probe:l})}return l}var bu,Su,xu,ie,$e,mo=m(()=>{"use strict";H();bu=10*6e4,Su=60*6e4,xu=2048,ie=new Map,$e={hits:0,misses:0,liveProbes:0,missingWorktree:0}});function je(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function wu(e){return e==null?!1:typeof e=="string"?e.trim().length>0:typeof e=="boolean"?e:Array.isArray(e)?e.length>0:typeof e=="object"?Object.keys(e).length>0:!0}function Au(e){if(je(e.headCommit)||je(e.prUrl)||je(e.artifactBundlePath)||je(e.patchPath))return!0;let r=e.gitAncestry;return!!(r?.checked&&r.headIsAncestorOfBase===!1&&je(r.head))}function Ne(e){return wu(e.finalResult)?e.changedFiles.length===0?{blocked:!1}:Au(e)?{blocked:!0,detail:`Worktree has ${e.changedFiles.length} uncommitted change(s); commit or discard before landing`}:{blocked:!0,reason:"dirty_worktree_no_pr",detail:`Worktree has ${e.changedFiles.length} uncommitted change(s) with no commit or PR; commit, open a PR, or discard before landing`}:{blocked:!1}}function go(e){if(e.blocked)return e.detail??e.reason??"dirty_worktree_no_pr"}var xr=m(()=>{"use strict"});function Pt(e){let r=e.trim();if(!r.startsWith("{"))return null;try{let t=JSON.parse(r);if(t&&typeof t=="object"&&!Array.isArray(t))return t}catch{return null}return null}function ho(e){let r=e.targetPrReconciliation??e.target_pr_reconciliation??e.targetPrs??e.target_prs;return Array.isArray(r)?r.length:0}function _r(e){let r=e.trim();if(!r)return null;let t=Pt(r);if(t)return t;let n=[],o=/```(?:json)?\s*([\s\S]*?)```/gi,s;for(;(s=o.exec(r))!==null;){let c=Pt(s[1]??"");c&&n.push(c)}let i=r.indexOf("{"),a=r.lastIndexOf("}");if(i>=0&&a>i){let c=Pt(r.slice(i,a+1));c&&n.push(c)}if(n.length===0)return null;let u=n[n.length-1],l=ho(u);for(let c of n){let d=ho(c);d>l&&(u=c,l=d)}return u}var Ot=m(()=>{"use strict"});function ko(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`https://github.com/${r[1]}/pull/${r[2]}`:e.trim()||null}function yo(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`${r[1].toLowerCase()}/pull/${r[2]}`:e.trim().toLowerCase()}function Pu(e){return new Set(e.map(r=>yo(ko(r)??r)).filter(Boolean))}function Ro(e,r,t){let n=ko(e)??e;if(!n)return"unrelated";let o=yo(n);return Pu(r).has(o)?"contract":t?(t.outcome==="skipped"||t.outcome==="blocked")&&t.reason?.trim()?"support":(t.outcome==="merged","unrelated"):"unrelated"}var bo=m(()=>{"use strict"});function De(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function Ou(e){return e==null?!1:typeof e=="string"?e.trim().length>0:typeof e=="object"?Object.keys(e).length>0:!0}function pe(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`https://github.com/${r[1]}/pull/${r[2]}`:De(e)}function vr(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`${r[1].toLowerCase()}/pull/${r[2]}`:e.trim().toLowerCase()}function So(e){let r=null;if(typeof e=="string"){let o=_r(e);o&&(r=o)}else e&&typeof e=="object"&&!Array.isArray(e)&&(r=e);if(!r)return[];let t=r.targetPrReconciliation??r.target_pr_reconciliation;if(!Array.isArray(t))return[];let n=[];for(let o of t){if(!o||typeof o!="object"||Array.isArray(o))continue;let s=o,i=pe(String(s.prUrl??s.pr_url??"")),a=De(s.outcome);!i||a!=="merged"&&a!=="skipped"&&a!=="blocked"||n.push({prUrl:i,outcome:a,mergeCommit:De(s.mergeCommit??s.merge_commit),reason:De(s.reason)})}return n}function xo(e,r){let t=[],n=pe(De(e.prUrl)??"");if(n&&t.push(n),r&&typeof r=="object"&&!Array.isArray(r)){let o=r,s=pe(String(o.prUrl??o.pr_url??""));s&&t.push(s)}return[...new Set(t)]}function _o(e){let{contract:r,snapshot:t}=e,n=e.finalResult??t.finalResult;if(!r.landingOnly&&r.targetPrUrls.length===0&&!r.repairEnforceOriginalPr)return{blocked:!1};if(!Ou(n))return(r.requiresTargetPrReconciliation??(r.landingOnly||!!r.repairEnforceOriginalPr||r.targetPrUrls.length>0))&&r.targetPrUrls.length>0?{blocked:!0,reason:"missing_target_pr_reconciliation",detail:`Final result required to reconcile target PR(s): ${r.targetPrUrls.join(", ")}`}:{blocked:!1};if(!(r.requiresTargetPrReconciliation??(r.landingOnly||!!r.repairEnforceOriginalPr||r.targetPrUrls.length>0))&&!r.repairEnforceOriginalPr)return{blocked:!1};let s=r.repairEnforceOriginalPr?pe(De(r.targetPrUrl)??"")??(r.targetPrUrls.length===1?pe(r.targetPrUrls[0]):null):null;if(s){let d=xo(t,n);if(!(n&&typeof n=="object"&&!Array.isArray(n)&&n.supersedesOriginalTargetPr===!0)){for(let y of d)if(y!==s)return{blocked:!0,reason:"duplicate_repair_pr",detail:`Repair worker opened or attached PR ${y} instead of canonical target ${s}`}}let f=So(n).find(y=>y.prUrl===s);if(!f||f.outcome!=="merged"&&!(f.reason?.trim()&&(f.outcome==="skipped"||f.outcome==="blocked")))return{blocked:!0,reason:"missing_repair_target_reconciliation",detail:`Repair worker must reconcile target PR ${s}`}}let i=So(n),a=new Map(i.map(d=>[vr(d.prUrl),d])),u=new Set(r.targetPrUrls.map(d=>vr(pe(d)??d)).filter(Boolean)),l=xo(t,n);if(r.landingOnly)for(let d of l){let p=a.get(vr(d)),g=Ro(d,r.targetPrUrls,p);if(!(g==="contract"||g==="support"))return u.size>0?{blocked:!0,reason:"unrelated_implementation_pr",detail:`Landing-only worker attached unrelated PR ${d}`}:{blocked:!0,reason:"unrelated_implementation_pr",detail:"Landing-only worker must not open new implementation PRs"}}if(r.targetPrUrls.length===0)return{blocked:!1};let c=[];for(let d of r.targetPrUrls){let p=vr(pe(d)??d),g=a.get(p);if(!g){c.push(p);continue}g.outcome!=="merged"&&!g.reason?.trim()&&c.push(p)}return c.length>0?{blocked:!0,reason:c.every(d=>a.has(d))?"incomplete_target_pr_landing":"missing_target_pr_reconciliation",detail:`Target PR reconciliation incomplete: ${c.join(", ")}`}:{blocked:!1}}function vo(e){if(e.blocked)return e.detail??e.reason}var Eo=m(()=>{"use strict";Ot();bo()});function Du(e){let r=Date.now();if(e.providerTerminalError||Rr(e.finalResult)||e.finalResult&&e.error?.trim()||He(e.error)||He(e.finalResult)){let o=e.error||(typeof e.finalResult=="string"?e.finalResult:"provider terminal error");return{state:"blocked",reason:wt(o)?.reason??`provider terminal error: ${o}`}}if(e.completionBlocker&&!Co(e.completionBlocker))return{state:"blocked",reason:e.completionBlocker};if(e.finalResult){if(e.localOnly&&Tu(e.finalResult))return{state:"done",reason:"local-only worker superseded by merged PR"};let o={finalResult:e.finalResult,changedFiles:e.changedFiles??[],gitAncestry:e.gitAncestry??null,prUrl:e.prUrl??null},s=Ne(o);if(s.blocked){let i=go(s);return{state:"needs_attention",reason:s.reason?`landing blocked (${s.reason}): ${i}`:`landing blocked: ${i}`}}if(e.landingContract){let i=_o({contract:e.landingContract,snapshot:o,finalResult:e.finalResult}),a=vo(i);if(a)return{state:"needs_attention",reason:i.reason?`landing contract (${i.reason}): ${a}`:`landing contract: ${a}`}}return{state:"done",reason:"final result recorded"}}if(!e.alive){if(Wu(e))return{state:"done",reason:"empty abandoned worker record"};let o=wt(e.error);if(o)return{state:"blocked",reason:o.reason};let s=ao({alive:!1,finalResult:null,changedFiles:e.changedFiles,gitAncestry:e.gitAncestry});if(s?.salvageable){let u=e.error?.trim();return{state:"needs_attention",reason:u?`${s.attentionReason} (${u})`:s.attentionReason}}let i=e.error?.trim(),a=Ct(i);return{state:"needs_attention",reason:i?`process exited without a final result${a?" (ran out of memory)":""}: ${i}`:s?.attentionReason??"process exited without a final result"}}if(e.heartbeatBlocker)return{state:"blocked",reason:`worker heartbeat reported blocker: ${e.heartbeatBlocker}`};let t=e.startedAt?Date.parse(e.startedAt):NaN;if(!e.firstEventAt&&e.stdoutBytes===0&&e.heartbeatBytes===0&&Number.isFinite(t)&&r-t>Iu)return{state:"needs_attention",reason:`no first stream event ${tt(t)}s after start`};let n=e.lastActivityAt?Date.parse(e.lastActivityAt):NaN;return Number.isFinite(n)&&r-n>Nu?{state:"stale",reason:`no log/event/heartbeat activity for ${tt(n)}s`}:{state:"ok",reason:"recent activity"}}function Co(e){let r=e?.trim();return r?/completion acknowledged but board not advanced/i.test(r)&&/task already terminal/i.test(r):!1}function Wu(e){return e.finalResult||e.taskId||e.agentOsId||e.stdoutBytes>0||(e.stderrBytes??0)>0||e.heartbeatBytes>0||e.error?.trim()||(e.changedFiles??[]).some(r=>r.trim())?!1:/empty worker dir|marked abandoned/i.test(e.reconcileReason??"")}function Tu(e){let r=null;if(typeof e=="string"?r=_r(e):e&&typeof e=="object"&&!Array.isArray(e)&&(r=e),!r)return!1;let t=r.targetPrReconciliation??r.target_pr_reconciliation;return Array.isArray(t)?t.some(n=>!n||typeof n!="object"||Array.isArray(n)?!1:String(n.outcome??"").trim()==="merged"):!1}function Mu(e,r,t){let n=e.completionSnapshot?.finalResult;return e.completionAckSource==="local-pr-merged-reconcile"&&n!==void 0&&n!==null?n:r||(n??Dn(t))}function Er(e,r={}){let t=qn(e.stdoutPath),n=Oe(e.heartbeatPath),o=typeof e.completionReportedAt=="string"&&e.completionReportedAt.trim().length>0,s=Mu(e,t.finalResult,n),i=o?!1:J(e.pid),a=rr(e.stdoutPath),u=rr(e.stderrPath),l=rr(e.heartbeatPath),{changedFiles:c,gitAncestry:d}=fo(e.worktreePath,{base:r.base,baseCommit:r.baseCommit},{alive:i}),p=pn([t.lastEventAt,n.lastHeartbeatAt,tr(e.stdoutPath),tr(e.stderrPath),tr(e.heartbeatPath)]),g=i?null:_t(e.workerDir),f=s&&!Et(s)?s:null,y=t.error||!i&&!s&&nr(e.stderrPath,10).trim()||void 0,S=y||!i&&s&&!f&&nr(e.stderrPath,10).trim()||void 0,R=typeof e.completionBlocker=="string"&&e.completionBlocker.trim()?e.completionBlocker.trim():null,O=Co(R)?null:R,B=e.repairTargetPrUrl?{landingOnly:!1,targetPrUrls:[e.repairTargetPrUrl],targetPrUrl:e.repairTargetPrUrl,repairEnforceOriginalPr:!0}:null,C=Du({alive:i,finalResult:s,firstEventAt:t.firstEventAt,stdoutBytes:a,stderrBytes:u,heartbeatBytes:l,lastActivityAt:p,heartbeatBlocker:n.heartbeatBlocker,startedAt:e.startedAt,error:y,providerTerminalError:t.providerTerminalError,changedFiles:c,gitAncestry:d,completionBlocker:O,landingContract:B,prUrl:e.repairTargetPrUrl??e.taskPrUrl??null,localOnly:e.localOnly===!0,taskId:e.taskId??null,agentOsId:e.agentOsId??null,reconcileReason:e.reconcileReason??null}),xe=O||C.state==="blocked"?"blocked":o||C.state==="done"?"done":s?"exited":i?"running":"exited",I=e.stopClass&&e.stopClass!=="running"&&e.stopClass!=="finished"?e.stopClass:null,V=ro({alive:i,finalResult:s,error:S??null,stale:C.state==="stale",noRestartAt:e.noRestartAt??null,reconcileReason:e.reconcileReason??null,exit:g}),N=I&&!i&&!f?I:V,A=N==="running"||N==="finished"?null:(I===N?e.stopReason:void 0)??to({stopClass:N,exit:g,error:S??null,reconcileReason:e.reconcileReason??null});return{runId:e.runId,worker:e.name,pid:e.pid,alive:i,status:xe,stopClass:N,stopReason:A,exit:g,attention:C,branch:e.branch,worktreePath:e.worktreePath,ownedPaths:e.ownedPaths,stdoutBytes:a,stderrBytes:u,heartbeatBytes:l,firstEventAt:t.firstEventAt,lastEventAt:t.lastEventAt,lastActivityAt:p,currentTool:o?null:t.currentTool,heartbeatCount:n.heartbeatCount,lastHeartbeatAt:n.lastHeartbeatAt,lastHeartbeatPhase:n.lastHeartbeatPhase,lastHeartbeatSummary:n.lastHeartbeatSummary,heartbeatBlocker:n.heartbeatBlocker,timestampAnomalies:n.timestampAnomalies,finalResult:s,error:y,providerTerminalError:t.providerTerminalError,changedFiles:c,gitAncestry:d,instructionPolicyFingerprint:e.instructionPolicyFingerprint??null,instructionPolicyEvidence:e.instructionPolicyEvidence??null,model:e.model??e.orchestrationAudit?.model??null,provider:e.provider??e.orchestrationAudit?.provider??null,usage:t.usage??null,boxKind:e.boxKind??null,boxId:e.boxId??null,runtimeId:e.runtimeId??null,personaSlug:e.personaSlug??null,dispatched:e.dispatched??null,localOnly:e.localOnly??null}}function fe(e){return!!(e.finalResult||e.alive===!1||e.status==="exited"||e.status==="done")}function wo(e){return e.finalResult?e.attention.state==="needs_attention"||e.attention.state==="blocked":!1}var Iu,Nu,me=m(()=>{"use strict";hr();Zn();no();vt();br();so();uo();mo();xr();Eo();Ot();b();Iu=18e4,Nu=6e5});var Ao=m(()=>{"use strict";me();b()});function Po(e,r={}){let t=r.perWorkerMemBytes??It,n=r.memReserveBytes??Nt,o=r.memUtilization??Dt,s=Math.max(0,Math.floor(e*o)-n),i=Math.max(1,Math.floor(s/t));return Math.min(i,Cr)}var It,Nt,Dt,Cr,Oo=m(()=>{"use strict";xn();ae();de();ur();wr();fr();se();gt();Ao();b();It=500*1024*1024,Nt=4*1024*1024*1024,Dt=.85,Cr=64});function Ge(e,r){let t=Number(e);return!Number.isFinite(t)||t<=0?r:Math.floor(t)}function Wt(e){let r=e.config??{},t=e.env??process.env,n=Ge(r.perWorkerMemBytes,It),o=Ge(r.memReserveBytes,Nt),s=Math.min(1,Math.max(.1,Number(r.memUtilization)>0?Number(r.memUtilization):Dt)),i=Po(e.totalMemBytes,{perWorkerMemBytes:n,memReserveBytes:o,memUtilization:s});if(e.configuredMaxWorkersOverride!==void 0&&e.configuredMaxWorkersOverride!==null)return{configuredMaxWorkers:Ge(e.configuredMaxWorkersOverride,i),autoCap:i,workerCapSource:"workspace_override"};if(r.maxConcurrentWorkers!==void 0&&r.maxConcurrentWorkers!==null){let l=Ge(r.maxConcurrentWorkers,0)||null;if(l)return{configuredMaxWorkers:Math.min(l,Cr),autoCap:i,workerCapSource:"config"}}let u=(t.KYNVER_MAX_WORKERS_INTENTIONAL==="1"||t.KYNVER_MAX_WORKERS_INTENTIONAL==="true")&&t.KYNVER_MAX_WORKERS&&Ge(t.KYNVER_MAX_WORKERS,0)||null;return u?{configuredMaxWorkers:Math.min(u,Cr),autoCap:i,workerCapSource:"env"}:{configuredMaxWorkers:null,autoCap:i,workerCapSource:"auto"}}var wr=m(()=>{"use strict";Oo()});import{homedir as Ku}from"node:os";import Uu from"node:path";var Io,Tt=m(()=>{"use strict";Io=Uu.join(Ku(),".kynver",".env")});var No=m(()=>{"use strict"});var Do=m(()=>{"use strict";No()});var Wo=m(()=>{"use strict"});var To=m(()=>{"use strict";b()});var Mt=m(()=>{"use strict";Do();Wo();To()});var Mo=m(()=>{"use strict"});var Ko=m(()=>{"use strict";Mo()});var Ar=m(()=>{"use strict";Tt();oe();ae();Mt();Ko()});var Fo=m(()=>{"use strict";de();de()});var Lo=m(()=>{"use strict";Tt();Mt();Ar()});var Kt=m(()=>{"use strict"});import{existsSync as Z,mkdirSync as Fu,readdirSync as Pr,renameSync as Ho,statSync as Lu}from"node:fs";import Q from"node:path";function jo(e){try{return Lu(e).isDirectory()}catch{return!1}}function Hu(e){if(!Z(e))return!0;for(let r of $o){let t=Q.join(e,r);if(Z(t)&&(!jo(t)||Pr(t).length>0))return!1}return!0}function $u(e){let r=Q.join(e,"runs");if(!Z(r)||!jo(r))return!1;for(let t of Pr(r,{withFileTypes:!0})){if(!t.isDirectory()||t.name==="runs")continue;let n=Q.join(r,t.name,"run.json");if(_(n,void 0)?.id)return!0}return!1}function ju(e){let r=Q.join(e,"runs");if(!Z(r))return!1;for(let t of Pr(r,{withFileTypes:!0})){if(!t.isDirectory())continue;if(_(Q.join(r,t.name,"run.json"),void 0)?.boxKind==="ghost")return!0}return!1}function Gu(e){let r=Q.join(e,"ghost");return Z(r)?!Z(Q.join(r,"runs")):ju(e)}function Go(e){return $u(e.sharedRoot)?Hu(e.forgeRoot)?Gu(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 Yo(e,r){Fu(r,{recursive:!0});for(let t of $o){let n=Q.join(e,t),o=Q.join(r,t);if(Z(n)){if(Z(o)&&Pr(o).length>0)throw new Error(`Forge legacy harness migration failed: ${o} is not empty`);if(Z(o)){Ho(n,o);continue}Ho(n,o)}}}var $o,Vo=m(()=>{"use strict";b();$o=["runs","worktrees"]});import{existsSync as w}from"node:fs";import{homedir as Yu}from"node:os";import E from"node:path";function Ut(e=process.env){return e.HOME?.trim()||Yu()}function Bt(e=process.env){return E.join(Ut(e),".kynver","harness")}function Or(e){let r=E.resolve(j(e.trim()));for(;Vu.has(E.basename(r));)r=E.dirname(r);return r}function zu(e,r=process.env){return E.join(Bt(r),e)}function Ju(e=process.env){let r=Bt(e);if(w(E.join(r,"runs")))return!0;if(w(r)&&!w(E.join(r,"ghost"))&&!w(E.join(r,"forge")))return w(r);let t=E.join(Ut(e),zo);return w(t)}function Ir(e){let r=e.env??process.env,t=r.KYNVER_HARNESS_ROOT?.trim()||r.OPUS_HARNESS_ROOT?.trim();if(t)return{harnessRoot:Or(t),source:"env"};let n=e.configuredHarnessRoot?.trim();if(n)return{harnessRoot:Or(n),source:"config"};let o=zu(e.boxKind,r);if(w(E.join(o,"runs"))||w(o)&&!Xu(o))return{harnessRoot:o,source:"box_scoped"};let i=Bt(r);if(e.boxKind==="forge"){let a=Go({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&&Yo(i,o),{harnessRoot:o,source:"legacy_migrated"}}if(e.boxKind==="ghost"&&Ju(r)){if(w(E.join(i,"runs")))return{harnessRoot:i,source:"legacy_shared"};if(w(i)&&!w(E.join(i,"ghost"))&&!w(E.join(i,"forge")))return{harnessRoot:i,source:"legacy_shared"};let u=E.join(Ut(r),zo);if(w(u))return{harnessRoot:u,source:"legacy_shared"}}return{harnessRoot:o,source:"box_scoped"}}function Xu(e){if(!w(e))return!0;for(let r of["runs","worktrees"]){let t=E.join(e,r);if(w(t))return!1}return!0}var zo,Vu,Ft=m(()=>{"use strict";oe();Vo();zo=E.join(".openclaw","harness");Vu=new Set(["runs","worktrees"])});import Jo from"node:os";function Nr(e){return e?.trim()?e.trim():null}function qu(e,r){let t=r.trim().toLowerCase()||"host";return`${e}-${t}`.replace(/[^a-z0-9._-]+/g,"-")}function Zu(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 Dr(e=ge(),r=process.env,t={}){let n=Ce(r,e),o=[...n.warnings],s=[],i=!!(e.boxKind?.trim()||Nr(r.KYNVER_BOX_KIND)),a=t.strict===!0||Zu(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 y="ambiguous box identity: KYNVER_AGENT_OS_SLUG is set without KYNVER_BOX_KIND or config.boxKind";a||t.requireExplicitBoxKind?s.push(y):o.push(`${y} \u2014 defaulting box kind to box (customer), not forge/ghost`)}let u=Nr(e.runnerId),l=Nr(r.KYNVER_RUNTIME_ID)??Nr(r.OPENCLAW_RUNTIME_ID),c=u??l??qu(n.boxKind,Jo.hostname()),d=u?"config":l?"env":"derived";d==="derived"&&o.push(`runnerId not persisted \u2014 using derived id "${c}"; run \`kynver setup --box-kind ${n.boxKind}\` to persist runner identity`);let p=Wt({config:e,env:r,totalMemBytes:Jo.totalmem()}),g=ar(n.boxKind,p.configuredMaxWorkers??it(n.boxKind,p.autoCap)),f=Ir({boxKind:n.boxKind,configuredHarnessRoot:e.harnessRoot,env:r});return f.migrationBlocker&&s.push(f.migrationBlocker),s.length>0?{ok:!1,identity:null,errors:s,warnings:o}:{ok:!0,identity:{boxKind:n.boxKind,boxKindSource:n.source,runnerId:c,runnerIdSource:d,maxConcurrentWorkers:g,workerCapSource:p.workerCapSource,harnessRoot:f.harnessRoot,harnessRootSource:f.source},errors:s,warnings:o}}var Wr=m(()=>{"use strict";ae();de();ur();wr();Ft()});var qo=m(()=>{"use strict";sr();de();Fo();ae();Ar();Lo();st();Kt();Wr()});var tl,Om,Zo=m(()=>{"use strict";tl=["claude","cursor","codex","gemini","gemini-api","openai-compatible"],Om=tl.join("|")});var Qo=m(()=>{"use strict";oe()});var es=m(()=>{"use strict";Qo()});var rs=m(()=>{"use strict"});var ts=m(()=>{"use strict";rs()});import{existsSync as ol,mkdirSync as ig,readFileSync as sl,writeFileSync as ag}from"node:fs";import{homedir as il,totalmem as lg}from"node:os";import Lt from"node:path";function al(e){return{...e,...e.harnessRoot?.trim()?{harnessRoot:j(e.harnessRoot.trim())}:{},...e.defaultRepo?.trim()?{defaultRepo:j(e.defaultRepo.trim())}:{}}}function ss(e){let r=e.defaultRepo?.trim();return!r||e.defaultBase?.trim()||!yn(j(r))?e:{...e,defaultBase:kn}}function ul(){if(!ol(ns))return null;try{return JSON.parse(sl(ns,"utf8"))}catch{return null}}function ge(){let e=ul();return e?ss(al(e)):{}}var os,ns,wg,Ag,Pg,ae=m(()=>{"use strict";sr();oe();ot();bn();st();de();ur();wr();fr();Ar();qo();Zo();Wr();es();Kt();ts();os=Lt.join(il(),".kynver"),ns=Lt.join(os,"config.json"),wg=Lt.join(os,"credentials");Ag=500*1024*1024,Pg=4*1024*1024*1024});import Ht from"node:path";function W(e){return Or(e)}function ue(){let e=process.env.KYNVER_HARNESS_ROOT||process.env.OPUS_HARNESS_ROOT;if(e)return W(e);let r=ge(),t=r.harnessRoot?.trim();if(t)return W(t);let n=Dr(r,process.env);return n.identity?n.identity.harnessRoot:Ir({boxKind:"forge",configuredHarnessRoot:null}).harnessRoot}function X(e){return Ht.join(W(e),"runs")}function We(e){return Ht.join(W(e),"worktrees")}function An(){let e=ue();return{harnessRoot:e,runsDir:X(e),worktreesDir:We(e)}}function ft(e,r){return Ht.join(e,x(r))}var q=m(()=>{"use strict";ae();Ft();Wr();b()});q();import U from"node:path";xr();import Kr from"node:path";H();me();var $t=[".next",".turbo","dist","build",".cache","node_modules/.cache"];function is(e){let r=e.replace(/\\/g,"/").replace(/\/+$/,"");if(r==="node_modules"||r.startsWith("node_modules/"))return!0;for(let t of $t)if(r===t||r.startsWith(`${t}/`))return!0;return!1}function T(e){return e.filter(r=>{let t=r.trim(),n=t.startsWith("??")?t.slice(2).trim():t.length>3?t.slice(3).trim():t;return!is(n)})}function he(e){if(typeof e=="string")return e.match(/https:\/\/github\.com\/[^\s]+\/pull\/\d+/i)?.[0]??null;if(e&&typeof e=="object"){let r=e;for(let t of["prUrl","pr_url","pullRequestUrl"]){let n=r[t];if(typeof n=="string"&&n.trim())return n.trim()}}return null}function Ye(e){let r=e.gitAncestry?.relation;return r==="merged"||r==="synced"?T(e.changedFiles).length>0:!!(he(e.finalResult)||r==="ahead"||r==="diverged"||e.changedFiles.length>0&&e.finalResult)}b();function Ve(e){return e.status||(e.status=Er(e.worker,{base:e.run.base,baseCommit:e.run.baseCommit})),e.status}function jt(e,r){if(e.status)return T(e.status.changedFiles).length>0;let t=r?r.porcelain(e.worktreePath):Ue(e.worktreePath);return T(t).length>0}function ll(e){let r=e.worker.completionSnapshot?.finalResult;return r??(e.worker.taskPrUrl?{prUrl:e.worker.taskPrUrl}:null)}function Gt(e,r){if(e.status)return e.status;let t=e.worker,n=typeof t.completionReportedAt=="string"&&t.completionReportedAt.trim().length>0,o=!!(t.status&&["done","exited","blocked","failed","abandoned"].includes(t.status))||n,s=ll(e);if(o&&!J(t.pid)){let i=r?.gitStatusCache?r.gitStatusCache.porcelain(e.worktreePath):Ue(e.worktreePath),a=e.run.baseCommit?.trim()||e.run.base?.trim()||"origin/main",l=r?.gitRevCache?.countAheadOfMain(e.worktreePath,a)===0?{checked:!0,base:a,relation:"synced"}:or(e.worktreePath,{base:e.run.base,baseCommit:e.run.baseCommit}),c={runId:e.runId,worker:e.workerName,pid:t.pid,alive:!1,status:t.status??(n?"done":"exited"),attention:{state:n?"done":"stale"},branch:t.branch,worktreePath:e.worktreePath,ownedPaths:t.ownedPaths,stdoutBytes:0,stderrBytes:0,heartbeatBytes:0,firstEventAt:null,lastEventAt:null,lastActivityAt:t.completionReportedAt??null,currentTool:null,heartbeatCount:0,lastHeartbeatAt:null,lastHeartbeatPhase:null,lastHeartbeatSummary:null,heartbeatBlocker:null,changedFiles:i,gitAncestry:l,finalResult:s,completionBlocker:typeof t.completionBlocker=="string"&&t.completionBlocker.trim()||null,prUrl:t.repairTargetPrUrl??t.taskPrUrl??he(s)};return e.status=c,c}return Ve(e)}me();se();gt();me();b();import cl from"node:path";var dl=new Set(["running","dispatching","pending","queued","needs_attention"]),ke=new Set(["completed","failed","cancelled","done"]);function ye(e){let r=mt(e);if(r.length===0)return"failed";let t=!1,n=!1,o=!1,s=!1;for(let i of r){let a=_(cl.join(Pe(e.id),"workers",x(i),"worker.json"),void 0);if(!a)continue;let u=Er(a,{base:e.base,baseCommit:e.baseCommit});if(u.alive&&!u.finalResult){t=!0;break}typeof a.completionBlocker=="string"&&a.completionBlocker&&(o=!0),wo(u)&&(s=!0),u.finalResult&&u.attention.state==="done"&&(n=!0)}return t||o||s?null:n?"completed":"failed"}function as(){let e=[];for(let r of dt()){if(!dl.has(r.status))continue;let t=ye(r);if(!t||t===r.status)continue;let n=r.status;r.status=t,pt(r),e.push({runId:r.id,from:n,to:t})}return e}me();hr();import{existsSync as Tr,mkdirSync as Rh,readdirSync as cs,renameSync as bh,statSync as pl}from"node:fs";import Re from"node:path";ae();sr();oe();H();hr();q();se();q();b();import le from"node:path";var ah=`${le.sep}runs${le.sep}runs${le.sep}`;function us(e){return{workerJsonPath:le.join(e,"worker.json"),stdoutPath:le.join(e,"stdout.jsonl"),stderrPath:le.join(e,"stderr.log"),heartbeatPath:le.join(e,"heartbeat.jsonl"),lastStatusPath:le.join(e,"last-status.json")}}b();ae();var $="<redacted>",Yt=`[^\\s"'\\\\,}\\]]`,lh=[[new RegExp(`\\b(?:postgres(?:ql)?|mysql|mongodb(?:\\+srv)?|redis|rediss):\\/\\/${Yt}+`,"gi"),$],[new RegExp(`\\b[a-z][a-z0-9+.-]*:\\/\\/[^\\s/@:"']+:[^\\s/@"']+@${Yt}+`,"gi"),$],[/\bkynver_u_[A-Za-z0-9_-]+/g,$],[/\bkyn_[A-Za-z0-9]{12,}/g,$],[/\bsk-ant-[A-Za-z0-9_-]+/g,$],[/\bsk-[A-Za-z0-9_-]{8,}/g,$],[/\bkr[a-z]1\.[A-Za-z0-9._~+/=-]{8,}/g,$],[/\b(?:ghp|gho|ghu|ghs|ghr)_[A-Za-z0-9]{16,}/g,$],[/\bgithub_pat_[A-Za-z0-9_]{16,}/g,$],[/\b(Bearer|Basic)\s+(?!<redacted>)[A-Za-z0-9._~+/=-]{8,}/gi,`$1 ${$}`],[new RegExp(`(\\b(?:[A-Z0-9_]*(?:API_KEY|APIKEY|TOKEN|SECRET|PASSWORD)|DATABASE_URL|KYNVER_DATABASE_URL)\\s*=\\s*)(?!<redacted>)${Yt}+`,"g"),`$1${$}`]];var ch=256*1024*1024;var ze=900*1e3,Ih=3600*1e3;function ds(e,r){let t=Re.resolve(e),n=Re.resolve(X(r)),o=Re.relative(n,t);return o!==".."&&!o.startsWith("..")&&!Re.isAbsolute(o)}function fl(e){if(!Tr(e))return[];try{return cs(e,{withFileTypes:!0}).filter(r=>r.isDirectory()&&r.name!=="runs").map(r=>r.name)}catch{return[]}}function ml(e){let r=Re.join(e,"workers");if(!Tr(r))return[];try{return cs(r,{withFileTypes:!0}).filter(t=>t.isDirectory()).map(t=>t.name)}catch{return[]}}function ls(e,r,t){if(!Tr(e))return!1;try{let n=r-pl(e).mtimeMs;return Number.isFinite(n)&&n>=0&&n<t}catch{return!1}}function gl(e,r=Date.now(),t=ze){if(!Tr(e))return!1;let n=us(e),o=_(n.workerJsonPath,void 0);if(o?.status==="running"&&J(o.pid))return!0;let s=Oe(n.heartbeatPath);if(s.lastHeartbeatAt){let i=r-Date.parse(s.lastHeartbeatAt);if(Number.isFinite(i)&&i>=0&&i<t)return!0}return!!(ls(n.stdoutPath,r,t)||ls(n.heartbeatPath,r,t))}function hl(e,r=Date.now(),t=ze){for(let n of ml(e))if(gl(Re.join(e,"workers",n),r,t))return!0;return!1}function ps(e,r=Date.now()){let t=new Set,n=X(e);for(let o of fl(n)){let s=Re.join(n,o);hl(s,r)&&t.add(`${e}\0${o}`)}return t}b();function kl(e,r=Date.now(),t=ze){let n=Oe(e.heartbeatPath);if(!n.lastHeartbeatAt)return!1;let o=r-Date.parse(n.lastHeartbeatAt);return Number.isFinite(o)&&o>=0&&o<t}function Te(e,r=Date.now(),t=ze){return J(e.pid)?!0:kl(e,r,t)}function yl(e,r){return r?r.runTerminalCache.derive(e.run):ye(e.run)}function ee(e,r=Date.now()){return Te(e.worker,r)}function Vt(e,r){return ke.has(e.run.status)?!1:yl(e,r)!==null}function fs(e,r,t=Date.now()){if(ee(e,t))return!0;if(ke.has(e.run.status)||Vt(e,r))return!1;let n=Ve(e);return fe(n)?!1:!!ee(e,t)}xr();me();function ms(e,r){if(!(typeof e.worker.completionBlocker=="string"?e.worker.completionBlocker.trim():""))return!1;if(ee(e))return!0;let n=r??Ve(e);return!!(!fe(n)||Ye(n)||T(n.changedFiles).length>0||Ne({finalResult:n.finalResult,changedFiles:n.changedFiles,gitAncestry:n.gitAncestry,prUrl:he(n.finalResult)}).blocked)}H();b();import{existsSync as hs,mkdirSync as Rl,writeFileSync as gs}from"node:fs";import Mr from"node:path";function ks(e,r,t){return Mr.join(e,"salvage",x(r),x(t))}function ys(e){return hs(Mr.join(ks(e.harnessRoot,e.runId,e.workerName),"evidence.json"))}function Rs(e){let r=ks(e.harnessRoot,e.indexed.runId,e.indexed.workerName);Rl(r,{recursive:!0});let t=Mr.join(r,"salvage.patch"),n=!1;if(hs(e.indexed.worktreePath)){let s=P(e.indexed.worktreePath,["diff","HEAD"]),i=P(e.indexed.worktreePath,["diff","--cached"]),a=[s.stdout,i.stdout].filter(u=>u.trim()).join(`
|
|
75
|
+
`});function Et(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let r=e.handoffState;return typeof r=="string"&&pu.has(r)}function Ct(e){return!!(e&&du.test(e))}function ro(e){if(e.noRestartAt?.trim())return"stopped_by_hand";if(e.finalResult&&!Et(e.finalResult))return"finished";if(e.alive)return e.stale?"stuck":"running";let r=e.error?.trim()??"",t=e.exit??null;if(t?.oomEvidence||Ct(r))return"oom";let n=e.reconcileReason??"";return/reconciled stale worker/i.test(n)?"stuck":eo.test(r)||eo.test(n)?"timed_out":t&&t.exitCode===0&&!t.signal&&!t.spawnError?"no_report":t&&(t.signal||t.spawnError||t.exitCode!==null&&t.exitCode!==0)||r?"crashed":"no_report"}function to(e){let r=[fu(e.stopClass)],t=Qn(e.exit);t&&r.push(t),e.exit?.oomEvidence&&r.push(`evidence: ${e.exit.oomEvidence.detail}`),e.stopClass==="no_report"&&e.exit?.exitCode===0&&r.push("it exited normally but never sent a final report");let n=e.error?.replace(/\s+/g," ").trim();return n?r.push(`last output: ${n.length>300?`${n.slice(-300)}`:n}`):e.stopClass==="stuck"&&e.reconcileReason&&r.push(e.reconcileReason),r.join(" \u2014 ").slice(0,600)}function fu(e){switch(e){case"finished":return"finished";case"oom":return"ran out of memory";case"crashed":return"crashed";case"no_report":return"stopped without reporting";case"timed_out":return"timed out";case"stuck":return"stuck (no progress)";case"stopped_by_hand":return"stopped on purpose";default:return"running"}}var du,eo,pu,no=m(()=>{"use strict";se();b();vt();du=/javascript heap out of memory|reached heap limit|allocation failed - process out of memory|\bout of memory\b|\boom[- ]?kill(?:ed|er)?\b|std::bad_alloc|cannot allocate memory|\benomem\b|exit(?:ed)? (?:with )?(?:code|status) 137\b|killed process \d+/i,eo=/\btimed? ?out\b|\btimeout\b|deadline exceeded/i,pu=new Set(["exited_without_final_result","exited_without_complete_heartbeat","exit_failure"])});function oo(e,r=240){let t=e.replace(/\s+/g," ").trim();return t.length>r?`${t.slice(0,r-1)}\u2026`:t}function wt(e){let r=(e??"").trim();if(!r)return null;if(He(r))return{blocked:!0,reason:`provider authentication failed: ${oo(r)}`};for(let t of mu)if(t.test.test(r))return{blocked:!0,reason:`${t.label}: ${oo(r)}`};return null}var mu,so=m(()=>{"use strict";br();bt();mu=[{test:/(?:claude provider refuses to spawn: worker prompt is empty after argv assembly|Input must be provided (?:either )?through stdin or as a prompt argument)/i,label:"provider prompt delivery failed"},{test:Gn,label:"Claude Code doesn't know this model (update Claude Code with `claude update`, or pick another model)"},{test:/\b(?:invalid|unknown|unsupported|unrecognized)\b[^.\n]*\bmodel\b/i,label:"provider rejected the requested model"},{test:/\bmodel\b[^.\n]*\b(?:not\s+(?:found|supported|available|recognized|valid)|is\s+not\s+valid|does\s+not\s+exist)/i,label:"provider rejected the requested model"},{test:/\b(?:did you mean|available models|choose (?:a|one of)|supported models)\b/i,label:"provider rejected the requested model"},{test:/model preflight failed/i,label:"model/provider preflight failed"},{test:/\b(?:command not found|ENOENT|is the .*CLI on PATH|executable not found|no such file or directory)\b/i,label:"provider CLI is missing or not on PATH"},{test:/\bfailed to spawn\b/i,label:"provider failed to spawn the worker process"},{test:/\b(?:not logged in|unauthorized|authentication (?:failed|required)|invalid api key|missing api key|401)\b/i,label:"provider authentication failed"},{test:/\b(?:out of usage|increase limits?|switch to auto|ask your admin to increase your limit|usage limits?|quota exceeded|insufficient_quota|credits? exhausted|billing|payment required)\b/i,label:"provider quota exhausted"}]});function io(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function gu(e){return e==null?!1:typeof e=="string"?e.trim().length>0:typeof e=="boolean"?e:Array.isArray(e)?e.length>0:typeof e=="object"?Object.keys(e).length>0:!0}function hu(e){return!e?.checked||e.headIsAncestorOfBase!==!1?null:io(e.head)}function ku(e,r,t){let n=["exited_with_changes_salvage"];if((e==="uncommitted"||e==="both")&&n.push(`${r} uncommitted change${r===1?"":"s"} with no final result`),(e==="committed_ahead"||e==="both")&&t){let o=t.length>12?t.slice(0,12):t;n.push(`commit ${o} ahead of base with no final result`)}return n.push("review worktree \u2014 commit, open a PR, or run a salvage worker before discarding"),n.join(": ")}function ao(e){if(e.alive||gu(e.finalResult))return null;let r=(e.changedFiles??[]).filter(i=>i.trim()).length,t=io(e.headCommit)??hu(e.gitAncestry),n=r>0,o=!!t;if(!n&&!o)return{kind:"none",salvageable:!1,uncommittedCount:0,headCommit:null,attentionReason:"process exited without a final result"};let s=n&&o?"both":n?"uncommitted":"committed_ahead";return{kind:s,salvageable:!0,uncommittedCount:r,headCommit:t,attentionReason:ku(s,r,t)}}var uo=m(()=>{"use strict"});import{existsSync as yu,readFileSync as Ru,statSync as po}from"node:fs";import Sr from"node:path";function _u(e,r=process.env){let t=e?Su:bu,n=r.KYNVER_WORKER_GIT_PROBE_CACHE_TTL_MS?.trim();if(!n)return t;let o=Number(n);return Number.isFinite(o)&&o>=0?Math.floor(o):t}function vu(e){return e.baseCommit?.trim()||e.base?.trim()||"origin/main"}function At(e){try{return po(e).mtimeMs}catch{return-1}}function Eu(e){let r=Sr.join(e,".git");try{if(po(r).isDirectory())return r;let t=/^gitdir:\s*(.+)$/m.exec(Ru(r,"utf8"));return t?Sr.resolve(e,t[1].trim()):null}catch{return null}}function lo(e){let r=Eu(e);return[At(e),r?At(Sr.join(r,"HEAD")):-2,r?At(Sr.join(r,"index")):-2].join(":")}function co(e,r){return{changedFiles:Ue(e),gitAncestry:or(e,{base:r.base,baseCommit:r.baseCommit})}}function Cu(e,r){for(ie.delete(e),ie.set(e,r);ie.size>xu;){let t=ie.keys().next().value;if(t===void 0)break;ie.delete(t)}}function fo(e,r,t){let n=vu(r);if(!e||!e.trim())return $e.missingWorktree++,{changedFiles:[],gitAncestry:ve(n,"missing worktree path")};let o=`${e}\0${n}`;if(!yu(e))return ie.delete(o),$e.missingWorktree++,{changedFiles:[],gitAncestry:ve(n,`worktree no longer exists: ${e}`)};if(t.alive)return ie.delete(o),$e.liveProbes++,co(e,r);let s=t.ttlMs??_u(!!r.baseCommit?.trim()),i=t.now??Date.now(),a=lo(e),u=ie.get(o);if(s>0&&u&&u.fingerprint===a&&i<u.expiresAt)return $e.hits++,u.probe;$e.misses++;let l=co(e,r);if(s>0){let c=.8+.4*(t.random??Math.random)();Cu(o,{fingerprint:lo(e),expiresAt:i+Math.round(s*c),probe:l})}return l}var bu,Su,xu,ie,$e,mo=m(()=>{"use strict";H();bu=10*6e4,Su=60*6e4,xu=2048,ie=new Map,$e={hits:0,misses:0,liveProbes:0,missingWorktree:0}});function je(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function wu(e){return e==null?!1:typeof e=="string"?e.trim().length>0:typeof e=="boolean"?e:Array.isArray(e)?e.length>0:typeof e=="object"?Object.keys(e).length>0:!0}function Au(e){if(je(e.headCommit)||je(e.prUrl)||je(e.artifactBundlePath)||je(e.patchPath))return!0;let r=e.gitAncestry;return!!(r?.checked&&r.headIsAncestorOfBase===!1&&je(r.head))}function Ne(e){return wu(e.finalResult)?e.changedFiles.length===0?{blocked:!1}:Au(e)?{blocked:!0,detail:`Worktree has ${e.changedFiles.length} uncommitted change(s); commit or discard before landing`}:{blocked:!0,reason:"dirty_worktree_no_pr",detail:`Worktree has ${e.changedFiles.length} uncommitted change(s) with no commit or PR; commit, open a PR, or discard before landing`}:{blocked:!1}}function go(e){if(e.blocked)return e.detail??e.reason??"dirty_worktree_no_pr"}var xr=m(()=>{"use strict"});function Pt(e){let r=e.trim();if(!r.startsWith("{"))return null;try{let t=JSON.parse(r);if(t&&typeof t=="object"&&!Array.isArray(t))return t}catch{return null}return null}function ho(e){let r=e.targetPrReconciliation??e.target_pr_reconciliation??e.targetPrs??e.target_prs;return Array.isArray(r)?r.length:0}function _r(e){let r=e.trim();if(!r)return null;let t=Pt(r);if(t)return t;let n=[],o=/```(?:json)?\s*([\s\S]*?)```/gi,s;for(;(s=o.exec(r))!==null;){let c=Pt(s[1]??"");c&&n.push(c)}let i=r.indexOf("{"),a=r.lastIndexOf("}");if(i>=0&&a>i){let c=Pt(r.slice(i,a+1));c&&n.push(c)}if(n.length===0)return null;let u=n[n.length-1],l=ho(u);for(let c of n){let d=ho(c);d>l&&(u=c,l=d)}return u}var Ot=m(()=>{"use strict"});function ko(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`https://github.com/${r[1]}/pull/${r[2]}`:e.trim()||null}function yo(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`${r[1].toLowerCase()}/pull/${r[2]}`:e.trim().toLowerCase()}function Pu(e){return new Set(e.map(r=>yo(ko(r)??r)).filter(Boolean))}function Ro(e,r,t){let n=ko(e)??e;if(!n)return"unrelated";let o=yo(n);return Pu(r).has(o)?"contract":t?(t.outcome==="skipped"||t.outcome==="blocked")&&t.reason?.trim()?"support":(t.outcome==="merged","unrelated"):"unrelated"}var bo=m(()=>{"use strict"});function De(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function Ou(e){return e==null?!1:typeof e=="string"?e.trim().length>0:typeof e=="object"?Object.keys(e).length>0:!0}function pe(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`https://github.com/${r[1]}/pull/${r[2]}`:De(e)}function vr(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`${r[1].toLowerCase()}/pull/${r[2]}`:e.trim().toLowerCase()}function So(e){let r=null;if(typeof e=="string"){let o=_r(e);o&&(r=o)}else e&&typeof e=="object"&&!Array.isArray(e)&&(r=e);if(!r)return[];let t=r.targetPrReconciliation??r.target_pr_reconciliation;if(!Array.isArray(t))return[];let n=[];for(let o of t){if(!o||typeof o!="object"||Array.isArray(o))continue;let s=o,i=pe(String(s.prUrl??s.pr_url??"")),a=De(s.outcome);!i||a!=="merged"&&a!=="skipped"&&a!=="blocked"||n.push({prUrl:i,outcome:a,mergeCommit:De(s.mergeCommit??s.merge_commit),reason:De(s.reason)})}return n}function xo(e,r){let t=[],n=pe(De(e.prUrl)??"");if(n&&t.push(n),r&&typeof r=="object"&&!Array.isArray(r)){let o=r,s=pe(String(o.prUrl??o.pr_url??""));s&&t.push(s)}return[...new Set(t)]}function _o(e){let{contract:r,snapshot:t}=e,n=e.finalResult??t.finalResult;if(!r.landingOnly&&r.targetPrUrls.length===0&&!r.repairEnforceOriginalPr)return{blocked:!1};if(!Ou(n))return(r.requiresTargetPrReconciliation??(r.landingOnly||!!r.repairEnforceOriginalPr||r.targetPrUrls.length>0))&&r.targetPrUrls.length>0?{blocked:!0,reason:"missing_target_pr_reconciliation",detail:`Final result required to reconcile target PR(s): ${r.targetPrUrls.join(", ")}`}:{blocked:!1};if(!(r.requiresTargetPrReconciliation??(r.landingOnly||!!r.repairEnforceOriginalPr||r.targetPrUrls.length>0))&&!r.repairEnforceOriginalPr)return{blocked:!1};let s=r.repairEnforceOriginalPr?pe(De(r.targetPrUrl)??"")??(r.targetPrUrls.length===1?pe(r.targetPrUrls[0]):null):null;if(s){let d=xo(t,n);if(!(n&&typeof n=="object"&&!Array.isArray(n)&&n.supersedesOriginalTargetPr===!0)){for(let y of d)if(y!==s)return{blocked:!0,reason:"duplicate_repair_pr",detail:`Repair worker opened or attached PR ${y} instead of canonical target ${s}`}}let f=So(n).find(y=>y.prUrl===s);if(!f||f.outcome!=="merged"&&!(f.reason?.trim()&&(f.outcome==="skipped"||f.outcome==="blocked")))return{blocked:!0,reason:"missing_repair_target_reconciliation",detail:`Repair worker must reconcile target PR ${s}`}}let i=So(n),a=new Map(i.map(d=>[vr(d.prUrl),d])),u=new Set(r.targetPrUrls.map(d=>vr(pe(d)??d)).filter(Boolean)),l=xo(t,n);if(r.landingOnly)for(let d of l){let p=a.get(vr(d)),g=Ro(d,r.targetPrUrls,p);if(!(g==="contract"||g==="support"))return u.size>0?{blocked:!0,reason:"unrelated_implementation_pr",detail:`Landing-only worker attached unrelated PR ${d}`}:{blocked:!0,reason:"unrelated_implementation_pr",detail:"Landing-only worker must not open new implementation PRs"}}if(r.targetPrUrls.length===0)return{blocked:!1};let c=[];for(let d of r.targetPrUrls){let p=vr(pe(d)??d),g=a.get(p);if(!g){c.push(p);continue}g.outcome!=="merged"&&!g.reason?.trim()&&c.push(p)}return c.length>0?{blocked:!0,reason:c.every(d=>a.has(d))?"incomplete_target_pr_landing":"missing_target_pr_reconciliation",detail:`Target PR reconciliation incomplete: ${c.join(", ")}`}:{blocked:!1}}function vo(e){if(e.blocked)return e.detail??e.reason}var Eo=m(()=>{"use strict";Ot();bo()});function Du(e){let r=Date.now();if(e.providerTerminalError||Rr(e.finalResult)||e.finalResult&&e.error?.trim()||He(e.error)||He(e.finalResult)){let o=e.error||(typeof e.finalResult=="string"?e.finalResult:"provider terminal error");return{state:"blocked",reason:wt(o)?.reason??`provider terminal error: ${o}`}}if(e.completionBlocker&&!Co(e.completionBlocker))return{state:"blocked",reason:e.completionBlocker};if(e.finalResult){if(e.localOnly&&Tu(e.finalResult))return{state:"done",reason:"local-only worker superseded by merged PR"};let o={finalResult:e.finalResult,changedFiles:e.changedFiles??[],gitAncestry:e.gitAncestry??null,prUrl:e.prUrl??null},s=Ne(o);if(s.blocked){let i=go(s);return{state:"needs_attention",reason:s.reason?`landing blocked (${s.reason}): ${i}`:`landing blocked: ${i}`}}if(e.landingContract){let i=_o({contract:e.landingContract,snapshot:o,finalResult:e.finalResult}),a=vo(i);if(a)return{state:"needs_attention",reason:i.reason?`landing contract (${i.reason}): ${a}`:`landing contract: ${a}`}}return{state:"done",reason:"final result recorded"}}if(!e.alive){if(Wu(e))return{state:"done",reason:"empty abandoned worker record"};let o=wt(e.error);if(o)return{state:"blocked",reason:o.reason};let s=ao({alive:!1,finalResult:null,changedFiles:e.changedFiles,gitAncestry:e.gitAncestry});if(s?.salvageable){let u=e.error?.trim();return{state:"needs_attention",reason:u?`${s.attentionReason} (${u})`:s.attentionReason}}let i=e.error?.trim(),a=Ct(i);return{state:"needs_attention",reason:i?`process exited without a final result${a?" (ran out of memory)":""}: ${i}`:s?.attentionReason??"process exited without a final result"}}if(e.heartbeatBlocker)return{state:"blocked",reason:`worker heartbeat reported blocker: ${e.heartbeatBlocker}`};let t=e.startedAt?Date.parse(e.startedAt):NaN;if(!e.firstEventAt&&e.stdoutBytes===0&&e.heartbeatBytes===0&&Number.isFinite(t)&&r-t>Iu)return{state:"needs_attention",reason:`no first stream event ${tt(t)}s after start`};let n=e.lastActivityAt?Date.parse(e.lastActivityAt):NaN;return Number.isFinite(n)&&r-n>Nu?{state:"stale",reason:`no log/event/heartbeat activity for ${tt(n)}s`}:{state:"ok",reason:"recent activity"}}function Co(e){let r=e?.trim();return r?/completion acknowledged but board not advanced/i.test(r)&&/task already terminal/i.test(r):!1}function Wu(e){return e.finalResult||e.taskId||e.agentOsId||e.stdoutBytes>0||(e.stderrBytes??0)>0||e.heartbeatBytes>0||e.error?.trim()||(e.changedFiles??[]).some(r=>r.trim())?!1:/empty worker dir|marked abandoned/i.test(e.reconcileReason??"")}function Tu(e){let r=null;if(typeof e=="string"?r=_r(e):e&&typeof e=="object"&&!Array.isArray(e)&&(r=e),!r)return!1;let t=r.targetPrReconciliation??r.target_pr_reconciliation;return Array.isArray(t)?t.some(n=>!n||typeof n!="object"||Array.isArray(n)?!1:String(n.outcome??"").trim()==="merged"):!1}function Mu(e,r,t){let n=e.completionSnapshot?.finalResult;return e.completionAckSource==="local-pr-merged-reconcile"&&n!==void 0&&n!==null?n:r||(n??Dn(t))}function Er(e,r={}){let t=qn(e.stdoutPath),n=Oe(e.heartbeatPath),o=typeof e.completionReportedAt=="string"&&e.completionReportedAt.trim().length>0,s=Mu(e,t.finalResult,n),i=o?!1:J(e.pid),a=rr(e.stdoutPath),u=rr(e.stderrPath),l=rr(e.heartbeatPath),{changedFiles:c,gitAncestry:d}=fo(e.worktreePath,{base:r.base,baseCommit:r.baseCommit},{alive:i}),p=pn([t.lastEventAt,n.lastHeartbeatAt,tr(e.stdoutPath),tr(e.stderrPath),tr(e.heartbeatPath)]),g=i?null:_t(e.workerDir),f=s&&!Et(s)?s:null,y=t.error||!i&&!s&&nr(e.stderrPath,10).trim()||void 0,S=y||!i&&s&&!f&&nr(e.stderrPath,10).trim()||void 0,R=typeof e.completionBlocker=="string"&&e.completionBlocker.trim()?e.completionBlocker.trim():null,O=Co(R)?null:R,B=e.repairTargetPrUrl?{landingOnly:!1,targetPrUrls:[e.repairTargetPrUrl],targetPrUrl:e.repairTargetPrUrl,repairEnforceOriginalPr:!0}:null,C=Du({alive:i,finalResult:s,firstEventAt:t.firstEventAt,stdoutBytes:a,stderrBytes:u,heartbeatBytes:l,lastActivityAt:p,heartbeatBlocker:n.heartbeatBlocker,startedAt:e.startedAt,error:y,providerTerminalError:t.providerTerminalError,changedFiles:c,gitAncestry:d,completionBlocker:O,landingContract:B,prUrl:e.repairTargetPrUrl??e.taskPrUrl??null,localOnly:e.localOnly===!0,taskId:e.taskId??null,agentOsId:e.agentOsId??null,reconcileReason:e.reconcileReason??null}),xe=O||C.state==="blocked"?"blocked":o||C.state==="done"?"done":s?"exited":i?"running":"exited",I=e.stopClass&&e.stopClass!=="running"&&e.stopClass!=="finished"?e.stopClass:null,V=ro({alive:i,finalResult:s,error:S??null,stale:C.state==="stale",noRestartAt:e.noRestartAt??null,reconcileReason:e.reconcileReason??null,exit:g}),N=I&&!i&&!f?I:V,A=N==="running"||N==="finished"?null:(I===N?e.stopReason:void 0)??to({stopClass:N,exit:g,error:S??null,reconcileReason:e.reconcileReason??null});return{runId:e.runId,worker:e.name,pid:e.pid,alive:i,status:xe,stopClass:N,stopReason:A,exit:g,attention:C,branch:e.branch,worktreePath:e.worktreePath,ownedPaths:e.ownedPaths,stdoutBytes:a,stderrBytes:u,heartbeatBytes:l,firstEventAt:t.firstEventAt,lastEventAt:t.lastEventAt,lastActivityAt:p,currentTool:o?null:t.currentTool,heartbeatCount:n.heartbeatCount,lastHeartbeatAt:n.lastHeartbeatAt,lastHeartbeatPhase:n.lastHeartbeatPhase,lastHeartbeatSummary:n.lastHeartbeatSummary,heartbeatBlocker:n.heartbeatBlocker,timestampAnomalies:n.timestampAnomalies,finalResult:s,error:y,providerTerminalError:t.providerTerminalError,changedFiles:c,gitAncestry:d,instructionPolicyFingerprint:e.instructionPolicyFingerprint??null,instructionPolicyEvidence:e.instructionPolicyEvidence??null,model:e.model??e.orchestrationAudit?.model??null,provider:e.provider??e.orchestrationAudit?.provider??null,usage:t.usage??null,boxKind:e.boxKind??null,boxId:e.boxId??null,runtimeId:e.runtimeId??null,personaSlug:e.personaSlug??null,dispatched:e.dispatched??null,localOnly:e.localOnly??null}}function fe(e){return!!(e.finalResult||e.alive===!1||e.status==="exited"||e.status==="done")}function wo(e){return e.finalResult?e.attention.state==="needs_attention"||e.attention.state==="blocked":!1}var Iu,Nu,me=m(()=>{"use strict";hr();Zn();no();vt();br();so();uo();mo();xr();Eo();Ot();b();Iu=18e4,Nu=6e5});var Ao=m(()=>{"use strict";me();b()});function Po(e,r={}){let t=r.perWorkerMemBytes??It,n=r.memReserveBytes??Nt,o=r.memUtilization??Dt,s=Math.max(0,Math.floor(e*o)-n),i=Math.max(1,Math.floor(s/t));return Math.min(i,Cr)}var It,Nt,Dt,Cr,Oo=m(()=>{"use strict";xn();ae();de();ur();wr();fr();se();gt();Ao();b();It=500*1024*1024,Nt=4*1024*1024*1024,Dt=.85,Cr=64});function Ge(e,r){let t=Number(e);return!Number.isFinite(t)||t<=0?r:Math.floor(t)}function Wt(e){let r=e.config??{},t=e.env??process.env,n=Ge(r.perWorkerMemBytes,It),o=Ge(r.memReserveBytes,Nt),s=Math.min(1,Math.max(.1,Number(r.memUtilization)>0?Number(r.memUtilization):Dt)),i=Po(e.totalMemBytes,{perWorkerMemBytes:n,memReserveBytes:o,memUtilization:s});if(e.configuredMaxWorkersOverride!==void 0&&e.configuredMaxWorkersOverride!==null)return{configuredMaxWorkers:Ge(e.configuredMaxWorkersOverride,i),autoCap:i,workerCapSource:"workspace_override"};if(r.maxConcurrentWorkers!==void 0&&r.maxConcurrentWorkers!==null){let l=Ge(r.maxConcurrentWorkers,0)||null;if(l)return{configuredMaxWorkers:Math.min(l,Cr),autoCap:i,workerCapSource:"config"}}let u=(t.KYNVER_MAX_WORKERS_INTENTIONAL==="1"||t.KYNVER_MAX_WORKERS_INTENTIONAL==="true")&&t.KYNVER_MAX_WORKERS&&Ge(t.KYNVER_MAX_WORKERS,0)||null;return u?{configuredMaxWorkers:Math.min(u,Cr),autoCap:i,workerCapSource:"env"}:{configuredMaxWorkers:null,autoCap:i,workerCapSource:"auto"}}var wr=m(()=>{"use strict";Oo()});import{homedir as Ku}from"node:os";import Uu from"node:path";var Io,Tt=m(()=>{"use strict";Io=Uu.join(Ku(),".kynver",".env")});var No=m(()=>{"use strict"});var Do=m(()=>{"use strict";No()});var Wo=m(()=>{"use strict"});var To=m(()=>{"use strict";b()});var Mt=m(()=>{"use strict";Do();Wo();To()});var Mo=m(()=>{"use strict"});var Ko=m(()=>{"use strict";Mo()});var Ar=m(()=>{"use strict";Tt();oe();ae();Mt();Ko()});var Fo=m(()=>{"use strict";de();de()});var Lo=m(()=>{"use strict";Tt();Mt();Ar()});var Kt=m(()=>{"use strict"});import{existsSync as Z,mkdirSync as Fu,readdirSync as Pr,renameSync as Ho,statSync as Lu}from"node:fs";import Q from"node:path";function jo(e){try{return Lu(e).isDirectory()}catch{return!1}}function Hu(e){if(!Z(e))return!0;for(let r of $o){let t=Q.join(e,r);if(Z(t)&&(!jo(t)||Pr(t).length>0))return!1}return!0}function $u(e){let r=Q.join(e,"runs");if(!Z(r)||!jo(r))return!1;for(let t of Pr(r,{withFileTypes:!0})){if(!t.isDirectory()||t.name==="runs")continue;let n=Q.join(r,t.name,"run.json");if(_(n,void 0)?.id)return!0}return!1}function ju(e){let r=Q.join(e,"runs");if(!Z(r))return!1;for(let t of Pr(r,{withFileTypes:!0})){if(!t.isDirectory())continue;if(_(Q.join(r,t.name,"run.json"),void 0)?.boxKind==="ghost")return!0}return!1}function Gu(e){let r=Q.join(e,"ghost");return Z(r)?!Z(Q.join(r,"runs")):ju(e)}function Go(e){return $u(e.sharedRoot)?Hu(e.forgeRoot)?Gu(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 Yo(e,r){Fu(r,{recursive:!0});for(let t of $o){let n=Q.join(e,t),o=Q.join(r,t);if(Z(n)){if(Z(o)&&Pr(o).length>0)throw new Error(`Forge legacy harness migration failed: ${o} is not empty`);if(Z(o)){Ho(n,o);continue}Ho(n,o)}}}var $o,Vo=m(()=>{"use strict";b();$o=["runs","worktrees"]});import{existsSync as w}from"node:fs";import{homedir as Yu}from"node:os";import E from"node:path";function Ut(e=process.env){return e.HOME?.trim()||Yu()}function Bt(e=process.env){return E.join(Ut(e),".kynver","harness")}function Or(e){let r=E.resolve(j(e.trim()));for(;Vu.has(E.basename(r));)r=E.dirname(r);return r}function zu(e,r=process.env){return E.join(Bt(r),e)}function Ju(e=process.env){let r=Bt(e);if(w(E.join(r,"runs")))return!0;if(w(r)&&!w(E.join(r,"ghost"))&&!w(E.join(r,"forge")))return w(r);let t=E.join(Ut(e),zo);return w(t)}function Ir(e){let r=e.env??process.env,t=r.KYNVER_HARNESS_ROOT?.trim()||r.OPUS_HARNESS_ROOT?.trim();if(t)return{harnessRoot:Or(t),source:"env"};let n=e.configuredHarnessRoot?.trim();if(n)return{harnessRoot:Or(n),source:"config"};let o=zu(e.boxKind,r);if(w(E.join(o,"runs"))||w(o)&&!Xu(o))return{harnessRoot:o,source:"box_scoped"};let i=Bt(r);if(e.boxKind==="forge"){let a=Go({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&&Yo(i,o),{harnessRoot:o,source:"legacy_migrated"}}if(e.boxKind==="ghost"&&Ju(r)){if(w(E.join(i,"runs")))return{harnessRoot:i,source:"legacy_shared"};if(w(i)&&!w(E.join(i,"ghost"))&&!w(E.join(i,"forge")))return{harnessRoot:i,source:"legacy_shared"};let u=E.join(Ut(r),zo);if(w(u))return{harnessRoot:u,source:"legacy_shared"}}return{harnessRoot:o,source:"box_scoped"}}function Xu(e){if(!w(e))return!0;for(let r of["runs","worktrees"]){let t=E.join(e,r);if(w(t))return!1}return!0}var zo,Vu,Ft=m(()=>{"use strict";oe();Vo();zo=E.join(".openclaw","harness");Vu=new Set(["runs","worktrees"])});import Jo from"node:os";function Nr(e){return e?.trim()?e.trim():null}function qu(e,r){let t=r.trim().toLowerCase()||"host";return`${e}-${t}`.replace(/[^a-z0-9._-]+/g,"-")}function Zu(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 Dr(e=ge(),r=process.env,t={}){let n=Ce(r,e),o=[...n.warnings],s=[],i=!!(e.boxKind?.trim()||Nr(r.KYNVER_BOX_KIND)),a=t.strict===!0||Zu(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 y="ambiguous box identity: KYNVER_AGENT_OS_SLUG is set without KYNVER_BOX_KIND or config.boxKind";a||t.requireExplicitBoxKind?s.push(y):o.push(`${y} \u2014 defaulting box kind to box (customer), not forge/ghost`)}let u=Nr(e.runnerId),l=Nr(r.KYNVER_RUNTIME_ID)??Nr(r.OPENCLAW_RUNTIME_ID),c=u??l??qu(n.boxKind,Jo.hostname()),d=u?"config":l?"env":"derived";d==="derived"&&o.push(`runnerId not persisted \u2014 using derived id "${c}"; run \`kynver setup --box-kind ${n.boxKind}\` to persist runner identity`);let p=Wt({config:e,env:r,totalMemBytes:Jo.totalmem()}),g=ar(n.boxKind,p.configuredMaxWorkers??it(n.boxKind,p.autoCap)),f=Ir({boxKind:n.boxKind,configuredHarnessRoot:e.harnessRoot,env:r});return f.migrationBlocker&&s.push(f.migrationBlocker),s.length>0?{ok:!1,identity:null,errors:s,warnings:o}:{ok:!0,identity:{boxKind:n.boxKind,boxKindSource:n.source,runnerId:c,runnerIdSource:d,maxConcurrentWorkers:g,workerCapSource:p.workerCapSource,harnessRoot:f.harnessRoot,harnessRootSource:f.source},errors:s,warnings:o}}var Wr=m(()=>{"use strict";ae();de();ur();wr();Ft()});var qo=m(()=>{"use strict";sr();de();Fo();ae();Ar();Lo();st();Kt();Wr()});var tl,Om,Zo=m(()=>{"use strict";tl=["claude","cursor","codex","gemini","gemini-api","openai-compatible","venice"],Om=tl.join("|")});var Qo=m(()=>{"use strict";oe()});var es=m(()=>{"use strict";Qo()});var rs=m(()=>{"use strict"});var ts=m(()=>{"use strict";rs()});import{existsSync as ol,mkdirSync as ig,readFileSync as sl,writeFileSync as ag}from"node:fs";import{homedir as il,totalmem as lg}from"node:os";import Lt from"node:path";function al(e){return{...e,...e.harnessRoot?.trim()?{harnessRoot:j(e.harnessRoot.trim())}:{},...e.defaultRepo?.trim()?{defaultRepo:j(e.defaultRepo.trim())}:{}}}function ss(e){let r=e.defaultRepo?.trim();return!r||e.defaultBase?.trim()||!yn(j(r))?e:{...e,defaultBase:kn}}function ul(){if(!ol(ns))return null;try{return JSON.parse(sl(ns,"utf8"))}catch{return null}}function ge(){let e=ul();return e?ss(al(e)):{}}var os,ns,wg,Ag,Pg,ae=m(()=>{"use strict";sr();oe();ot();bn();st();de();ur();wr();fr();Ar();qo();Zo();Wr();es();Kt();ts();os=Lt.join(il(),".kynver"),ns=Lt.join(os,"config.json"),wg=Lt.join(os,"credentials");Ag=500*1024*1024,Pg=4*1024*1024*1024});import Ht from"node:path";function W(e){return Or(e)}function ue(){let e=process.env.KYNVER_HARNESS_ROOT||process.env.OPUS_HARNESS_ROOT;if(e)return W(e);let r=ge(),t=r.harnessRoot?.trim();if(t)return W(t);let n=Dr(r,process.env);return n.identity?n.identity.harnessRoot:Ir({boxKind:"forge",configuredHarnessRoot:null}).harnessRoot}function X(e){return Ht.join(W(e),"runs")}function We(e){return Ht.join(W(e),"worktrees")}function An(){let e=ue();return{harnessRoot:e,runsDir:X(e),worktreesDir:We(e)}}function ft(e,r){return Ht.join(e,x(r))}var q=m(()=>{"use strict";ae();Ft();Wr();b()});q();import U from"node:path";xr();import Kr from"node:path";H();me();var $t=[".next",".turbo","dist","build",".cache","node_modules/.cache"];function is(e){let r=e.replace(/\\/g,"/").replace(/\/+$/,"");if(r==="node_modules"||r.startsWith("node_modules/"))return!0;for(let t of $t)if(r===t||r.startsWith(`${t}/`))return!0;return!1}function T(e){return e.filter(r=>{let t=r.trim(),n=t.startsWith("??")?t.slice(2).trim():t.length>3?t.slice(3).trim():t;return!is(n)})}function he(e){if(typeof e=="string")return e.match(/https:\/\/github\.com\/[^\s]+\/pull\/\d+/i)?.[0]??null;if(e&&typeof e=="object"){let r=e;for(let t of["prUrl","pr_url","pullRequestUrl"]){let n=r[t];if(typeof n=="string"&&n.trim())return n.trim()}}return null}function Ye(e){let r=e.gitAncestry?.relation;return r==="merged"||r==="synced"?T(e.changedFiles).length>0:!!(he(e.finalResult)||r==="ahead"||r==="diverged"||e.changedFiles.length>0&&e.finalResult)}b();function Ve(e){return e.status||(e.status=Er(e.worker,{base:e.run.base,baseCommit:e.run.baseCommit})),e.status}function jt(e,r){if(e.status)return T(e.status.changedFiles).length>0;let t=r?r.porcelain(e.worktreePath):Ue(e.worktreePath);return T(t).length>0}function ll(e){let r=e.worker.completionSnapshot?.finalResult;return r??(e.worker.taskPrUrl?{prUrl:e.worker.taskPrUrl}:null)}function Gt(e,r){if(e.status)return e.status;let t=e.worker,n=typeof t.completionReportedAt=="string"&&t.completionReportedAt.trim().length>0,o=!!(t.status&&["done","exited","blocked","failed","abandoned"].includes(t.status))||n,s=ll(e);if(o&&!J(t.pid)){let i=r?.gitStatusCache?r.gitStatusCache.porcelain(e.worktreePath):Ue(e.worktreePath),a=e.run.baseCommit?.trim()||e.run.base?.trim()||"origin/main",l=r?.gitRevCache?.countAheadOfMain(e.worktreePath,a)===0?{checked:!0,base:a,relation:"synced"}:or(e.worktreePath,{base:e.run.base,baseCommit:e.run.baseCommit}),c={runId:e.runId,worker:e.workerName,pid:t.pid,alive:!1,status:t.status??(n?"done":"exited"),attention:{state:n?"done":"stale"},branch:t.branch,worktreePath:e.worktreePath,ownedPaths:t.ownedPaths,stdoutBytes:0,stderrBytes:0,heartbeatBytes:0,firstEventAt:null,lastEventAt:null,lastActivityAt:t.completionReportedAt??null,currentTool:null,heartbeatCount:0,lastHeartbeatAt:null,lastHeartbeatPhase:null,lastHeartbeatSummary:null,heartbeatBlocker:null,changedFiles:i,gitAncestry:l,finalResult:s,completionBlocker:typeof t.completionBlocker=="string"&&t.completionBlocker.trim()||null,prUrl:t.repairTargetPrUrl??t.taskPrUrl??he(s)};return e.status=c,c}return Ve(e)}me();se();gt();me();b();import cl from"node:path";var dl=new Set(["running","dispatching","pending","queued","needs_attention"]),ke=new Set(["completed","failed","cancelled","done"]);function ye(e){let r=mt(e);if(r.length===0)return"failed";let t=!1,n=!1,o=!1,s=!1;for(let i of r){let a=_(cl.join(Pe(e.id),"workers",x(i),"worker.json"),void 0);if(!a)continue;let u=Er(a,{base:e.base,baseCommit:e.baseCommit});if(u.alive&&!u.finalResult){t=!0;break}typeof a.completionBlocker=="string"&&a.completionBlocker&&(o=!0),wo(u)&&(s=!0),u.finalResult&&u.attention.state==="done"&&(n=!0)}return t||o||s?null:n?"completed":"failed"}function as(){let e=[];for(let r of dt()){if(!dl.has(r.status))continue;let t=ye(r);if(!t||t===r.status)continue;let n=r.status;r.status=t,pt(r),e.push({runId:r.id,from:n,to:t})}return e}me();hr();import{existsSync as Tr,mkdirSync as Rh,readdirSync as cs,renameSync as bh,statSync as pl}from"node:fs";import Re from"node:path";ae();sr();oe();H();hr();q();se();q();b();import le from"node:path";var ah=`${le.sep}runs${le.sep}runs${le.sep}`;function us(e){return{workerJsonPath:le.join(e,"worker.json"),stdoutPath:le.join(e,"stdout.jsonl"),stderrPath:le.join(e,"stderr.log"),heartbeatPath:le.join(e,"heartbeat.jsonl"),lastStatusPath:le.join(e,"last-status.json")}}b();ae();var $="<redacted>",Yt=`[^\\s"'\\\\,}\\]]`,lh=[[new RegExp(`\\b(?:postgres(?:ql)?|mysql|mongodb(?:\\+srv)?|redis|rediss):\\/\\/${Yt}+`,"gi"),$],[new RegExp(`\\b[a-z][a-z0-9+.-]*:\\/\\/[^\\s/@:"']+:[^\\s/@"']+@${Yt}+`,"gi"),$],[/\bkynver_u_[A-Za-z0-9_-]+/g,$],[/\bkyn_[A-Za-z0-9]{12,}/g,$],[/\bsk-ant-[A-Za-z0-9_-]+/g,$],[/\bsk-[A-Za-z0-9_-]{8,}/g,$],[/\bkr[a-z]1\.[A-Za-z0-9._~+/=-]{8,}/g,$],[/\b(?:ghp|gho|ghu|ghs|ghr)_[A-Za-z0-9]{16,}/g,$],[/\bgithub_pat_[A-Za-z0-9_]{16,}/g,$],[/\b(Bearer|Basic)\s+(?!<redacted>)[A-Za-z0-9._~+/=-]{8,}/gi,`$1 ${$}`],[new RegExp(`(\\b(?:[A-Z0-9_]*(?:API_KEY|APIKEY|TOKEN|SECRET|PASSWORD)|DATABASE_URL|KYNVER_DATABASE_URL)\\s*=\\s*)(?!<redacted>)${Yt}+`,"g"),`$1${$}`]];var ch=256*1024*1024;var ze=900*1e3,Ih=3600*1e3;function ds(e,r){let t=Re.resolve(e),n=Re.resolve(X(r)),o=Re.relative(n,t);return o!==".."&&!o.startsWith("..")&&!Re.isAbsolute(o)}function fl(e){if(!Tr(e))return[];try{return cs(e,{withFileTypes:!0}).filter(r=>r.isDirectory()&&r.name!=="runs").map(r=>r.name)}catch{return[]}}function ml(e){let r=Re.join(e,"workers");if(!Tr(r))return[];try{return cs(r,{withFileTypes:!0}).filter(t=>t.isDirectory()).map(t=>t.name)}catch{return[]}}function ls(e,r,t){if(!Tr(e))return!1;try{let n=r-pl(e).mtimeMs;return Number.isFinite(n)&&n>=0&&n<t}catch{return!1}}function gl(e,r=Date.now(),t=ze){if(!Tr(e))return!1;let n=us(e),o=_(n.workerJsonPath,void 0);if(o?.status==="running"&&J(o.pid))return!0;let s=Oe(n.heartbeatPath);if(s.lastHeartbeatAt){let i=r-Date.parse(s.lastHeartbeatAt);if(Number.isFinite(i)&&i>=0&&i<t)return!0}return!!(ls(n.stdoutPath,r,t)||ls(n.heartbeatPath,r,t))}function hl(e,r=Date.now(),t=ze){for(let n of ml(e))if(gl(Re.join(e,"workers",n),r,t))return!0;return!1}function ps(e,r=Date.now()){let t=new Set,n=X(e);for(let o of fl(n)){let s=Re.join(n,o);hl(s,r)&&t.add(`${e}\0${o}`)}return t}b();function kl(e,r=Date.now(),t=ze){let n=Oe(e.heartbeatPath);if(!n.lastHeartbeatAt)return!1;let o=r-Date.parse(n.lastHeartbeatAt);return Number.isFinite(o)&&o>=0&&o<t}function Te(e,r=Date.now(),t=ze){return J(e.pid)?!0:kl(e,r,t)}function yl(e,r){return r?r.runTerminalCache.derive(e.run):ye(e.run)}function ee(e,r=Date.now()){return Te(e.worker,r)}function Vt(e,r){return ke.has(e.run.status)?!1:yl(e,r)!==null}function fs(e,r,t=Date.now()){if(ee(e,t))return!0;if(ke.has(e.run.status)||Vt(e,r))return!1;let n=Ve(e);return fe(n)?!1:!!ee(e,t)}xr();me();function ms(e,r){if(!(typeof e.worker.completionBlocker=="string"?e.worker.completionBlocker.trim():""))return!1;if(ee(e))return!0;let n=r??Ve(e);return!!(!fe(n)||Ye(n)||T(n.changedFiles).length>0||Ne({finalResult:n.finalResult,changedFiles:n.changedFiles,gitAncestry:n.gitAncestry,prUrl:he(n.finalResult)}).blocked)}H();b();import{existsSync as hs,mkdirSync as Rl,writeFileSync as gs}from"node:fs";import Mr from"node:path";function ks(e,r,t){return Mr.join(e,"salvage",x(r),x(t))}function ys(e){return hs(Mr.join(ks(e.harnessRoot,e.runId,e.workerName),"evidence.json"))}function Rs(e){let r=ks(e.harnessRoot,e.indexed.runId,e.indexed.workerName);Rl(r,{recursive:!0});let t=Mr.join(r,"salvage.patch"),n=!1;if(hs(e.indexed.worktreePath)){let s=P(e.indexed.worktreePath,["diff","HEAD"]),i=P(e.indexed.worktreePath,["diff","--cached"]),a=[s.stdout,i.stdout].filter(u=>u.trim()).join(`
|
|
76
76
|
`);a.trim()&&(gs(t,a.endsWith(`
|
|
77
77
|
`)?a:`${a}
|
|
78
78
|
`),n=!0)}let o={capturedAt:new Date(e.now??Date.now()).toISOString(),skipReason:e.skipReason,runId:e.indexed.runId,workerName:e.indexed.workerName,worktreePath:e.indexed.worktreePath,taskId:e.indexed.worker.taskId,agentOsId:e.indexed.worker.agentOsId,branch:e.indexed.worker.branch,completionBlocker:e.indexed.worker.completionBlocker,finalResult:e.status.finalResult,changedFiles:e.status.changedFiles,gitAncestry:e.status.gitAncestry,prUrl:e.status.prUrl??null,...n?{patchPath:t}:{}};return gs(Mr.join(r,"evidence.json"),`${JSON.stringify(o,null,2)}
|
|
@@ -64,4 +64,4 @@ child.on("error", (e) => {
|
|
|
64
64
|
if (!child.pid) finish(127, null, String(e && e.message));
|
|
65
65
|
});
|
|
66
66
|
child.on("exit", (code, signal) => finish(code, signal));
|
|
67
|
-
`});var Re=r(()=>{"use strict";S();s();U()});var xe=r(()=>{"use strict";E();W()});var Se=r(()=>{"use strict"});var So,Eo,Ee=r(()=>{"use strict";g();So=10*6e4,Eo=60*6e4});var _e=r(()=>{"use strict"});var B=r(()=>{"use strict"});var ve=r(()=>{"use strict"});var Ce=r(()=>{"use strict";B();ve()});var Ae=r(()=>{"use strict";me();ke();Re();U();E();xe();Se();Ee();_e();Ce();B();s()});var we=r(()=>{"use strict";Ae();s()});var Cr,Ar,Oe=r(()=>{"use strict";se();f();d();y();R();N();S();fe();we();s();Cr=500*1024*1024,Ar=4*1024*1024*1024});var R=r(()=>{"use strict";Oe()});import{homedir as wr}from"node:os";import Or from"node:path";var Pe,M=r(()=>{"use strict";Pe=Or.join(wr(),".kynver",".env")});var Ie=r(()=>{"use strict"});var Te=r(()=>{"use strict";Ie()});var Ne=r(()=>{"use strict"});var Ke=r(()=>{"use strict";s()});var F=r(()=>{"use strict";Te();Ne();Ke()});var De=r(()=>{"use strict"});var We=r(()=>{"use strict";De()});var _=r(()=>{"use strict";M();c();f();F();We()});var Me=r(()=>{"use strict";d();d()});var Fe=r(()=>{"use strict";M();F();_()});var L=r(()=>{"use strict"});var $e=r(()=>{"use strict";h();d();Me();f();_();Fe();I();L();k()});var Dr,Wi,He=r(()=>{"use strict";Dr=["claude","cursor","codex","gemini","gemini-api","openai-compatible"],Wi=Dr.join("|")});var je=r(()=>{"use strict";c()});var Ye=r(()=>{"use strict";je()});var Ve=r(()=>{"use strict"});var Ge=r(()=>{"use strict";Ve()});import{existsSync as Wr,mkdirSync as fa,readFileSync as Ur,writeFileSync as pa}from"node:fs";import{homedir as Br,totalmem as ga}from"node:os";import $ from"node:path";function Mr(e){return{...e,...e.harnessRoot?.trim()?{harnessRoot:i(e.harnessRoot.trim())}:{},...e.defaultRepo?.trim()?{defaultRepo:i(e.defaultRepo.trim())}:{}}}function Xe(e){let n=e.defaultRepo?.trim();return!n||e.defaultBase?.trim()||!Q(i(n))?e:{...e,defaultBase:Z}}function Fr(){if(!Wr(Je))return null;try{return JSON.parse(Ur(Je,"utf8"))}catch{return null}}function p(){let e=Fr();return e?Xe(Mr(e)):{}}var ze,Je,Na,Ka,Da,f=r(()=>{"use strict";h();c();A();oe();I();d();y();R();N();_();$e();He();k();Ye();L();Ge();ze=$.join(Br(),".kynver"),Je=$.join(ze,"config.json"),Na=$.join(ze,"credentials");Ka=500*1024*1024,Da=4*1024*1024*1024});f();h();c();import Lr from"node:path";function $r(e){return Lr.resolve(i(e.trim()))}function H(e,n,t){let o=e?.trim();return o?{repo:$r(o),source:n,persistedInConfig:t}:null}function Hr(e){return e?{repo:e.repo,source:e.source,persistedInConfig:!1}:null}function jr(e={}){let n=e.env??process.env,t=e.config??p(),o=H(t.defaultRepo,"config",!0);if(o)return o;let l=H(n.KYNVER_DEFAULT_REPO,"env_default_repo",!1);if(l)return l;let u=H(n.KYNVER_HARNESS_REPO,"env_harness_repo",!1);return u||Hr(P({cwd:e.cwd,runtimeModuleUrl:e.runtimeModuleUrl}))}export{jr as resolveDefaultRepo};
|
|
67
|
+
`});var Re=r(()=>{"use strict";S();s();U()});var xe=r(()=>{"use strict";E();W()});var Se=r(()=>{"use strict"});var So,Eo,Ee=r(()=>{"use strict";g();So=10*6e4,Eo=60*6e4});var _e=r(()=>{"use strict"});var B=r(()=>{"use strict"});var ve=r(()=>{"use strict"});var Ce=r(()=>{"use strict";B();ve()});var Ae=r(()=>{"use strict";me();ke();Re();U();E();xe();Se();Ee();_e();Ce();B();s()});var we=r(()=>{"use strict";Ae();s()});var Cr,Ar,Oe=r(()=>{"use strict";se();f();d();y();R();N();S();fe();we();s();Cr=500*1024*1024,Ar=4*1024*1024*1024});var R=r(()=>{"use strict";Oe()});import{homedir as wr}from"node:os";import Or from"node:path";var Pe,M=r(()=>{"use strict";Pe=Or.join(wr(),".kynver",".env")});var Ie=r(()=>{"use strict"});var Te=r(()=>{"use strict";Ie()});var Ne=r(()=>{"use strict"});var Ke=r(()=>{"use strict";s()});var F=r(()=>{"use strict";Te();Ne();Ke()});var De=r(()=>{"use strict"});var We=r(()=>{"use strict";De()});var _=r(()=>{"use strict";M();c();f();F();We()});var Me=r(()=>{"use strict";d();d()});var Fe=r(()=>{"use strict";M();F();_()});var L=r(()=>{"use strict"});var $e=r(()=>{"use strict";h();d();Me();f();_();Fe();I();L();k()});var Dr,Wi,He=r(()=>{"use strict";Dr=["claude","cursor","codex","gemini","gemini-api","openai-compatible","venice"],Wi=Dr.join("|")});var je=r(()=>{"use strict";c()});var Ye=r(()=>{"use strict";je()});var Ve=r(()=>{"use strict"});var Ge=r(()=>{"use strict";Ve()});import{existsSync as Wr,mkdirSync as fa,readFileSync as Ur,writeFileSync as pa}from"node:fs";import{homedir as Br,totalmem as ga}from"node:os";import $ from"node:path";function Mr(e){return{...e,...e.harnessRoot?.trim()?{harnessRoot:i(e.harnessRoot.trim())}:{},...e.defaultRepo?.trim()?{defaultRepo:i(e.defaultRepo.trim())}:{}}}function Xe(e){let n=e.defaultRepo?.trim();return!n||e.defaultBase?.trim()||!Q(i(n))?e:{...e,defaultBase:Z}}function Fr(){if(!Wr(Je))return null;try{return JSON.parse(Ur(Je,"utf8"))}catch{return null}}function p(){let e=Fr();return e?Xe(Mr(e)):{}}var ze,Je,Na,Ka,Da,f=r(()=>{"use strict";h();c();A();oe();I();d();y();R();N();_();$e();He();k();Ye();L();Ge();ze=$.join(Br(),".kynver"),Je=$.join(ze,"config.json"),Na=$.join(ze,"credentials");Ka=500*1024*1024,Da=4*1024*1024*1024});f();h();c();import Lr from"node:path";function $r(e){return Lr.resolve(i(e.trim()))}function H(e,n,t){let o=e?.trim();return o?{repo:$r(o),source:n,persistedInConfig:t}:null}function Hr(e){return e?{repo:e.repo,source:e.source,persistedInConfig:!1}:null}function jr(e={}){let n=e.env??process.env,t=e.config??p(),o=H(t.defaultRepo,"config",!0);if(o)return o;let l=H(n.KYNVER_DEFAULT_REPO,"env_default_repo",!1);if(l)return l;let u=H(n.KYNVER_HARNESS_REPO,"env_harness_repo",!1);return u||Hr(P({cwd:e.cwd,runtimeModuleUrl:e.runtimeModuleUrl}))}export{jr as resolveDefaultRepo};
|