@kynver-app/runtime 0.2.147 → 0.2.148
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -0
- package/dist/cli.js +226 -224
- package/dist/daemon-tick-thread.js +57 -57
- package/dist/desktop-entry.js +167 -166
- package/dist/index.js +249 -247
- package/dist/local-run-store/index.js +1 -1
- 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/venice.js +1 -0
- package/dist/server/worker-policy.js +3 -3
- package/package.json +7 -2
|
@@ -65,7 +65,7 @@ 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}
|
|
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","venice"],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
69
|
`,timeoutMs:D}):this.exec("powershell.exe",["-NoProfile","-NonInteractive","-Command",ur("set",e)],{input:`${t}
|
|
70
70
|
`,timeoutMs:D})}catch{return!1}return this.get(e)===t}delete(e){try{this.backend==="macos"?this.exec("security",["delete-generic-password","-s",U,"-a",e],{timeoutMs:D}):this.backend==="libsecret"?this.exec("secret-tool",["clear","service",U,"account",e],{timeoutMs:D}):this.exec("powershell.exe",["-NoProfile","-NonInteractive","-Command",ur("delete",e)],{timeoutMs:D})}catch{}}}});function hr(){return fr||(fr=new mr),fr}var gr,Zo,Ce,mr,fr,tn=a(()=>{"use strict";rn();gr="api-key",Zo=6e4,Ce=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"}},mr=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<Zo)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=pr(this.env);if(!this.keychain){if(n==="keychain")throw new Ce(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 Ce(e);return o}remove(e){this.cache.delete(e),this.keychain?.delete(e)}invalidate(e){e?this.cache.delete(e):this.cache.clear()}},fr=null});import{existsSync as on,mkdirSync as es,readFileSync as sn,writeFileSync as rs}from"node:fs";import{homedir as ts,totalmem as jd}from"node:os";import Sr from"node:path";function ns(r){return{...r,...r.harnessRoot?.trim()?{harnessRoot:I(r.harnessRoot.trim())}:{},...r.defaultRepo?.trim()?{defaultRepo:I(r.defaultRepo.trim())}:{}}}function os(r){let e=r.defaultRepo?.trim();return!e||r.defaultBase?.trim()||!Qr(I(e))?r:{...r,defaultBase:Xr}}function ss(){if(!on(nn))return null;try{return JSON.parse(sn(nn,"utf8"))}catch{return null}}function E(){let r=ss();return r?os(ns(r)):{}}function Ae(){if(sr(),!on(yr))return{};try{return JSON.parse(sn(yr,"utf8"))}catch{return{}}}function Rr(r){sr(),es(br,{recursive:!0}),rs(yr,`${JSON.stringify(r,null,2)}
|
|
71
71
|
`,{mode:384})}function is(r,e,t,n={}){let o=Ae();if(hr().write(r,t)){let i={...o,...n};delete i[e],i.store="keychain",i.keychainAccounts=Array.from(new Set([...o.keychainAccounts??[],r])).sort(),Rr(i);return}Rr({...o,...n,[e]:t})}function as(r,e){let t=hr().read(r);return t||Ae()[e]}function an(){return Ut(ls)}function ln(){return an().getApiKey()}function cs(r,e){an().persistRunnerToken(r,e)}function us(r){let e=cn(r);return e||ps("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 He(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 ds(e,{baseUrl:o,apiKey:n});return s&&s!==r?(cs(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 ds(r,e){let t=e?.apiKey||ln();if(!t)throw new Error("API key required \u2014 run `kynver login` first");let o=`${us(e?.baseUrl)}/api/agent-os/by-id/${encodeURIComponent(r)}/runner-credentials`,s=await ue(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 ps(r){console.error(r),process.exit(1)}var br,nn,yr,lp,cp,ls,T=a(()=>{"use strict";$e();W();Ue();et();de();F();me();Re();Ve();Se();zt();Xt();_e();Zt();ir();tn();br=Sr.join(ts(),".kynver"),nn=Sr.join(br,"config.json"),yr=Sr.join(br,"credentials");lp=500*1024*1024,cp=4*1024*1024*1024;ls={kind:"file",getApiKey(){return process.env.KYNVER_API_KEY?process.env.KYNVER_API_KEY:as(gr,"apiKey")},getRunnerToken(r){let e=Ae();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){is(gr,"apiKey",r)},persistRunnerToken(r,e){Rr({...Ae(),runnerToken:e,runnerTokenAgentOsId:r})}}});import dn from"node:path";function we(r){return ke(r)}function kr(){let r=process.env.KYNVER_HARNESS_ROOT||process.env.OPUS_HARNESS_ROOT;if(r)return we(r);let e=E(),t=e.harnessRoot?.trim();if(t)return we(t);let n=Ee(e,process.env);return n.identity?n.identity.harnessRoot:xe({boxKind:"forge",configuredHarnessRoot:null}).harnessRoot}function lt(r){return dn.join(we(r),"runs")}function fs(r){return dn.join(we(r),"worktrees")}function ct(){let r=kr();return{harnessRoot:r,runsDir:lt(r),worktreesDir:fs(r)}}var Ge=a(()=>{"use strict";T();cr();_e();b()});import{existsSync as Ln,realpathSync as Kn,readFileSync as Mn}from"node:fs";import Hr 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=Hr.resolve(r);for(let t=0;t<64;t+=1){if(Ln(e))try{return Kn.native(e)}catch{return e}let n=Hr.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(`
|
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};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var a=(e,r,t)=>()=>{if(t)throw t[0];try{return e&&(r=e(e=0)),r}catch(n){throw t=[n],n}};import{homedir as
|
|
1
|
+
var a=(e,r,t)=>()=>{if(t)throw t[0];try{return e&&(r=e(e=0)),r}catch(n){throw t=[n],n}};import{homedir as Je}from"node:os";import ze from"node:path";function bt(e){return e==="~"?Je():e.startsWith("~/")||e.startsWith("~\\")?ze.join(Je(),e.slice(2)):e}function v(e){return ze.resolve(bt(e))}var E=a(()=>{"use strict"});function _(e=process.platform){return e!=="win32"}var Xe=a(()=>{"use strict"});var d=a(()=>{"use strict";Xe()});var Et,Lo,St,Fo,Re=a(()=>{"use strict";Et=["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"],Lo=new Set(Et),St=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY","GEMINI_API_KEY"],Fo=new Set(St)});var re=a(()=>{"use strict";E();d();Re()});import{homedir as Ze}from"node:os";import ve from"node:path";function Pt(e=Ze()){return ve.join(e,".kynver",wt)}function er(e,r=Ze()){return ve.resolve(e)===ve.resolve(Pt(r))}var wt,Qe,be=a(()=>{"use strict";re();wt="workspace",Qe="main"});var Ee=a(()=>{"use strict";re();E();be()});import{existsSync as nr,readFileSync as It}from"node:fs";import S from"node:path";function Tt(e){return e.includes("/")||e.includes("\\")}function Dt(e){return(e.PATHEXT||Nt).split(";").map(r=>r.trim().toLowerCase()).filter(r=>r.startsWith("."))}function Kt(e){let r=Object.keys(e).find(t=>t.toUpperCase()==="PATH");return r?e[r]??"":""}function Wt(e,r={}){let t=r.env??process.env,n=r.exists??nr,o=Dt(t),s=S.win32.extname(e)!=="",i=l=>s?[l]:o.map(c=>`${l}${c}`);if(Tt(e)||S.win32.isAbsolute(e))return i(e).find(l=>n(l))??null;for(let l of Kt(t).split(";").map(c=>c.trim()).filter(Boolean)){let c=i(S.win32.join(l,e)).find(u=>n(u));if(c)return c}return null}function tr(e){return e.replace(/^[\\/]+/,"")}function Bt(e){let r=e.split(/\r?\n/),t=new Map;for(let s of r){let i=Mt.exec(s);i&&t.set(i[1].toUpperCase(),i[2])}let n=r.filter(s=>s.includes("%*")).pop();if(!n)return null;let o=rr.exec(n);if(o)return tr(o[1]);for(let s of n.matchAll(/%([A-Za-z_]\w*)%/g)){let i=t.get(s[1].toUpperCase()),l=i?rr.exec(i):null;if(l)return tr(l[1])}return null}function Ut(e,r={}){if((r.platform??process.platform)!=="win32")return{executable:e,prefixArgs:[],kind:"passthrough"};let n=Wt(e,r);if(!n)return{executable:e,prefixArgs:[],kind:"passthrough"};let o=S.win32.extname(n).toLowerCase();if(o!==".cmd"&&o!==".bat")return{executable:n,prefixArgs:[],kind:"exe"};let s=r.readText??(_e=>It(_e,"utf8")),i=r.exists??nr,l;try{l=s(n)}catch{throw new Y(n)}let c=Bt(l);if(!c)throw new Y(n);let u=S.win32.dirname(n),p=S.win32.join(u,c);if(!i(p))throw new Y(n);let V=S.win32.join(u,"node.exe");return{executable:i(V)?V:r.nodeExecutable??process.execPath,prefixArgs:[p],kind:"node-shim"}}function b(e,r,t={}){let n=Ut(e,t);return[n.executable,[...n.prefixArgs,...r]]}var Y,Nt,rr,Mt,C=a(()=>{"use strict";Y=class extends Error{constructor(t){super(`${t} is a batch file that is not a Node CLI shim; it cannot be spawned without a shell. Point the matching KYNVER_*_BIN setting at the real .exe or the CLI's JS entry, or run the daemon inside WSL.`);this.shimPath=t;this.name="UnresolvableWindowsShimError"}shimPath},Nt=".COM;.EXE;.BAT;.CMD";rr=/%~?dp0%?\\?([^"%\r\n]+?\.(?:c|m)?js)\b/i,Mt=/^\s*SET\s+"?([A-Za-z_]\w*)=([^"\r\n]*)"?\s*$/i});var or=a(()=>{"use strict";C()});var Se=a(()=>{"use strict";d()});var O=a(()=>{"use strict"});var te=a(()=>{"use strict"});var ir=a(()=>{"use strict"});var fi,gi,Ce=a(()=>{"use strict";fi=25*1024*1024*1024,gi=12*1024*1024*1024});var xi,Ri,sr=a(()=>{"use strict";Ce();xi=5*1024*1024*1024,Ri=10*1024*1024*1024});var Oi,Ai,Oe=a(()=>{"use strict";sr();Ce();Oi=30*1024*1024*1024,Ai=15*1024*1024*1024});var ar=a(()=>{"use strict";d()});import Lt from"node:path";var Mi,we=a(()=>{"use strict";E();ar();Mi=Lt.join(".openclaw","harness")});var oe=a(()=>{"use strict";A();O();te();ie();we()});var ur=a(()=>{"use strict";A();we();oe();d()});var ae=a(()=>{"use strict";ur();d()});var pr=a(()=>{"use strict";ae();d()});var mr=a(()=>{"use strict"});var fr=a(()=>{"use strict";mr();d()});var gr=a(()=>{"use strict"});var hr=a(()=>{"use strict";gr()});var le=a(()=>{"use strict"});var k,w,ks,G=a(()=>{"use strict";k="claude-sonnet-5-5",w="claude-opus-5-5",ks={[k]:"claude-sonnet-4-6",[w]:"claude-opus-4-8"}});var yr=a(()=>{"use strict"});var _r=a(()=>{"use strict"});var kr=a(()=>{"use strict";hr();d();le();G();yr();_r()});var Bs,x=a(()=>{"use strict";Bs=String.raw`"use strict";
|
|
2
2
|
const cp = require("child_process"), fs = require("fs");
|
|
3
3
|
const argv = process.argv.slice(1);
|
|
4
4
|
const exitFile = argv[0], cmd = argv[1], args = argv.slice(2);
|
|
@@ -64,8 +64,8 @@ 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 _r=a(()=>{"use strict";se();d();R()});var kr=a(()=>{"use strict";ae();V()});var Rr=a(()=>{"use strict"});var zs,Xs,xr=a(()=>{"use strict";ee();zs=10*6e4,Xs=60*6e4});var br=a(()=>{"use strict"});var Ae=a(()=>{"use strict"});var vr=a(()=>{"use strict"});var Er=a(()=>{"use strict";Ae();vr()});var Sr=a(()=>{"use strict";pr();yr();_r();R();ae();kr();Rr();xr();br();Er();Ae();d()});var Cr=a(()=>{"use strict";Sr();d()});var Zt,Qt,Or=a(()=>{"use strict";nr();A();O();re();oe();Se();se();ur();Cr();d();Zt=500*1024*1024,Qt=4*1024*1024*1024});var oe=a(()=>{"use strict";Or()});import{homedir as en}from"node:os";import rn from"node:path";var Ar,we=a(()=>{"use strict";Ar=rn.join(en(),".kynver",".env")});var wr=a(()=>{"use strict"});var Pr=a(()=>{"use strict";wr()});var Ir=a(()=>{"use strict"});var Tr=a(()=>{"use strict";d()});var Pe=a(()=>{"use strict";Pr();Ir();Tr()});var Nr=a(()=>{"use strict"});var Dr=a(()=>{"use strict";Nr()});var le=a(()=>{"use strict";we();E();A();Pe();Dr()});var Kr=a(()=>{"use strict";O();O()});var Wr=a(()=>{"use strict";we();Pe();le()});var Ie=a(()=>{"use strict"});var Mr=a(()=>{"use strict";be();O();Kr();A();le();Wr();ve();Ie();ne()});function P(e){let r=e.trim().toLowerCase();return pn[r]??r}var Br,dn,pn,ce=a(()=>{"use strict";Br=["claude","cursor","codex","gemini","gemini-api","openai-compatible"],dn=Br.join("|"),pn={anthropic:"claude",opus:"claude",openai:"openai-compatible",openai_compatible:"openai-compatible","openai-compat":"openai-compatible",chatgpt:"codex",gpt:"codex","openai-api":"openai-compatible",openai_api:"openai-compatible",google:"gemini",gemini_cli:"gemini",gemini_api:"gemini-api","google-api":"gemini-api",google_api:"gemini-api"}});var Ur=a(()=>{"use strict";E()});var Lr=a(()=>{"use strict";Ur()});var Fr=a(()=>{"use strict"});var $r=a(()=>{"use strict";Fr()});import{existsSync as fn,mkdirSync as Uc,readFileSync as gn,writeFileSync as Lc}from"node:fs";import{homedir as hn,totalmem as $c}from"node:os";import Te from"node:path";function yn(e){return{...e,...e.harnessRoot?.trim()?{harnessRoot:b(e.harnessRoot.trim())}:{},...e.defaultRepo?.trim()?{defaultRepo:b(e.defaultRepo.trim())}:{}}}function _n(e){let r=e.defaultRepo?.trim();return!r||e.defaultBase?.trim()||!Ze(b(r))?e:{...e,defaultBase:Xe}}function kn(){if(!fn(Hr))return null;try{return JSON.parse(gn(Hr,"utf8"))}catch{return null}}function W(){let e=kn();return e?_n(yn(e)):{}}var jr,Hr,su,au,lu,A=a(()=>{"use strict";be();E();xe();tr();ve();O();re();oe();Se();le();Mr();ce();ne();Lr();Ie();$r();jr=Te.join(hn(),".kynver"),Hr=Te.join(jr,"config.json"),su=Te.join(jr,"credentials");au=500*1024*1024,lu=4*1024*1024*1024});var ht=/^claude[-_]/i,yt=/^(?:opus|sonnet|haiku)\b/i;function je(e){let r=e.trim();return ht.test(r)||yt.test(r)}function Ye(e){let r=e.trim().toLowerCase();return r.startsWith("gpt-")||r.startsWith("gpt5")||r.includes("codex")}function ye(e){let r=e.trim().toLowerCase();return r.includes("composer")||r.includes("cursor")}function Ve(e){return e.trim().toLowerCase().startsWith("gemini-")}function _t(e){return Ye(e)?"codex":je(e)?"claude":Ve(e)?"gemini":(ye(e),"cursor")}function kt(e){if(!e.startsWith("provider:"))return null;let r=e.slice(9),t=r.indexOf(":"),n=(t>=0?r.slice(0,t):r).trim().toLowerCase(),o=t>=0&&r.slice(t+1).trim()||void 0;return n?n==="claude"||n==="opus"||n==="anthropic"?{provider:"claude",model:o,rule:o?"executor_ref:provider_claude_model":"executor_ref:provider_claude"}:n==="codex"?{provider:"codex",model:o,rule:"executor_ref:provider_codex"}:n==="openai-compatible"||n==="openai"||n==="openai_compatible"?{provider:"openai-compatible",model:o,rule:"executor_ref:provider_openai_compatible"}:n==="chatgpt"||n==="gpt"?{provider:"codex",model:o,rule:"executor_ref:provider_codex"}:n==="openai-api"||n==="openai_api"?{provider:"openai-compatible",model:o,rule:"executor_ref:provider_openai_compatible"}:n==="cursor"||n==="composer"?{provider:"cursor",model:o,rule:"executor_ref:provider_cursor"}:n==="gemini-api"||n==="gemini_api"||n==="google-api"?{provider:"gemini-api",model:o,rule:"executor_ref:provider_gemini_api"}:n==="gemini"||n==="google"||n==="gemini_cli"?{provider:"gemini",model:o,rule:o?"executor_ref:provider_gemini_model":"executor_ref:provider_gemini"}:null:null}function Rt(e){if(!e.startsWith("harness-lane:"))return null;let r=e.split(":").map(o=>o.trim()).filter(Boolean);if(r.length<2)return null;let t=r[1],n=r.slice(2).join(":");return n?je(n)||Ye(n)||ye(n)||Ve(n)?{lane:t,model:n,provider:_t(n),rule:"executor_ref:harness_lane_model"}:{lane:t,rule:"executor_ref:harness_lane"}:{lane:t,rule:"executor_ref:harness_lane"}}function f(e){let r=typeof e=="string"?e.trim():"";return r?kt(r)??Rt(r):null}function _e(e){let r=f(e);return r?!!(r.provider&&r.provider!=="cursor"||r.model&&!ye(r.model)):!1}A();var Yr={codex:{id:"codex",displayName:"Codex (BYO OAuth / Hermes openai-codex)",costTier:"low",authSources:["oauth_local","api_key_env","subscription_hermes"],supportsLowRiskOrchestration:!0,supportsPrivilegedPlatformActions:!1,workerMcpTools:"supported"},cursor:{id:"cursor",displayName:"Cursor / Composer",costTier:"medium",authSources:["oauth_local","api_key_env"],supportsLowRiskOrchestration:!0,supportsPrivilegedPlatformActions:!0,workerMcpTools:"supported"},claude:{id:"claude",displayName:"Claude Code",costTier:"high",authSources:["oauth_local"],supportsLowRiskOrchestration:!0,supportsPrivilegedPlatformActions:!0,workerMcpTools:"supported"}};function M(e){return Yr[e]}function Vr(){return Object.values(Yr)}import{existsSync as xn}from"node:fs";import{homedir as bn}from"node:os";import G from"node:path";C();import{createHash as Gr}from"node:crypto";import{statSync as Rn}from"node:fs";import{spawnSync as qr}from"node:child_process";function y(e){try{let r=Rn(e),t=`${e}|${r.size}|${r.mtimeMs}`;return Gr("sha256").update(t).digest("hex").slice(0,16)}catch{return}}function B(e){return Gr("sha256").update(`env:${e}`).digest("hex").slice(0,16)}function g(e,r){for(let t of r){let n=process.env[t]?.trim();if(n)return n}return e}function h(e,r,t={}){let n=t.timeoutMs??8e3;try{let[o,s]=v(e,r),i=qr(o,s,{windowsHide:!0,encoding:"utf8",timeout:n,env:{...process.env,...t.env,CI:"1",NO_COLOR:"1"}});if(i.status===0)return{ok:!0,note:t.okNote??`${e} ${r.join(" ")}: ok`};let l=(i.stderr||i.stdout||"").trim(),c=t.failPrefix??`${e} ${r.join(" ")} failed`;return{ok:!1,note:l?`${c}: ${l.slice(0,200)}`:c}}catch(o){return{ok:!1,note:o instanceof Error?o.message:`${e} probe failed`}}}function ue(e,r,t={}){let n=t.timeoutMs??8e3;try{let[o,s]=v(e,r);return qr(o,s,{windowsHide:!0,stdio:"ignore",timeout:n,env:{...process.env,CI:"1",NO_COLOR:"1"}}).status===0?{ok:!0,note:t.okNote??`${e} authenticated`}:{ok:!1,note:t.failNote??`${e} not authenticated`}}catch(o){return{ok:!1,note:o instanceof Error?o.message:`${e} auth probe failed`}}}var vn="codex";function En(){let e=bn();return[process.env.CODEX_HOME?.trim()?G.join(G.resolve(process.env.CODEX_HOME.trim()),"auth.json"):null,G.join(e,".codex","auth.json"),G.join(e,".config","codex","auth.json")].filter(t=>!!t)}function Sn(e){return G.dirname(e)}function Cn(e){let r,t;for(let n of En()){if(!xn(n))continue;r??=n;let o=h(e,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status",env:{CODEX_HOME:Sn(n)}});if(t??=o,o.ok)return{authPath:n,login:o}}return{authPath:r,login:t??h(e,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status"})}}function Jr(e=new Date().toISOString()){let r=g(vn,["KYNVER_CODEX_BIN","CODEX_BIN"]);if(process.env.CODEX_API_KEY?.trim())return{providerId:"codex",ready:!0,authSource:"api_key_env",sessionFingerprint:B("CODEX_API_KEY"),checkedAt:e,note:"CODEX_API_KEY present (env binding \u2014 cloud credits path, no token stored in Kynver)"};let{authPath:t,login:n}=Cn(r),o=!!t&&n.ok;return{providerId:"codex",ready:o,authSource:"oauth_local",sessionFingerprint:t?y(t):void 0,checkedAt:e,note:o?"Local Codex OAuth session bound on runner":[n.note,t?void 0:"no Codex auth store found"].filter(Boolean).join("; ")}}import{existsSync as On}from"node:fs";import{homedir as An}from"node:os";import Ne from"node:path";function wn(){let e=process.env.HERMES_HOME?.trim(),r=e?Ne.resolve(e):Ne.join(An(),".hermes");return Ne.join(r,"auth.json")}function de(e=new Date().toISOString()){let r=g("hermes",["KYNVER_HERMES_BIN","HERMES_BIN"]),t=h(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=wn(),o=On(n),s=ue(r,["auth","status","openai-codex"],{okNote:"hermes openai-codex: logged in",failNote:"hermes openai-codex: not logged in"}),i=t.ok&&s.ok;return{path:"hermes_openai_codex",ready:i,authSource:i?"subscription_hermes":"none",sessionFingerprint:o?y(n):void 0,checkedAt:e,note:i?"Hermes openai-codex subscription session bound (ChatGPT Codex OAuth)":[t.note,s.note,o?void 0:"no ~/.hermes/auth.json"].filter(Boolean).join("; ")}}function q(e=new Date().toISOString()){let r=Jr(e);if(r.ready)return{...r,path:"codex_cli"};let t=de(e);return t.ready?{providerId:"codex",ready:!0,authSource:t.authSource,sessionFingerprint:t.sessionFingerprint,checkedAt:t.checkedAt,note:t.note,path:"hermes_openai_codex",hermesOpenAiCodex:t}:{providerId:"codex",ready:!1,authSource:"none",checkedAt:e,path:"none",hermesOpenAiCodex:t,note:[r.note,t.note].filter(Boolean).join("; ")||"Codex CLI and Hermes openai-codex unavailable"}}var zr=["low","medium","high"],Xr={oauth_local:0,subscription_hermes:0,runner_token:1,api_key_env:2,none:3};function Zr(e,r){let t=M(e);return r==="privileged"?t.supportsPrivilegedPlatformActions:r==="low"?t.supportsLowRiskOrchestration:!0}function Pn(e,r){let t=M(e.providerId),n=M(r.providerId),o=zr.indexOf(t.costTier)-zr.indexOf(n.costTier);if(o!==0)return o;let s=Xr[e.binding.authSource]-Xr[r.binding.authSource];return s!==0?s:e.providerId.localeCompare(r.providerId)}function De(e){let r=Vr().map(l=>({providerId:l.id,binding:e.inventory.bindings[l.id]})).filter(l=>l.binding.ready&&Zr(l.providerId,e.riskClass));if(r.length===0)return null;let n=[...r].sort(Pn)[0],o="codex";if(n.providerId===o)return{providerId:n.providerId,binding:n.binding};let s=e.inventory.bindings[o],i;return Zr(o,e.riskClass)?s.ready||(i=s.note??`${o} not bound`):i=`${e.riskClass} orchestration requires privileged-capable provider`,{providerId:n.providerId,binding:n.binding,escalatedFrom:o,escalatedReason:i}}import{existsSync as In}from"node:fs";import{homedir as Tn}from"node:os";import Nn from"node:path";var Dn="claude";function Kn(){let e=Tn();return[Nn.join(e,".claude",".credentials.json")]}function Qr(e=new Date().toISOString()){let r=g(Dn,["KYNVER_CLAUDE_BIN","CLAUDE_BIN"]);if(process.env.ANTHROPIC_API_KEY?.trim())return{providerId:"claude",ready:!1,authSource:"api_key_env",sessionFingerprint:B("ANTHROPIC_API_KEY"),checkedAt:e,note:"ANTHROPIC_API_KEY present but scrubbed from worker env (deployment secret) \u2014 use `claude` CLI login (OAuth) for harness workers"};let t=h(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=Kn().find(i=>In(i)),o=ue(r,["auth","status"],{okNote:"claude auth status: authenticated",failNote:"claude auth status: not authenticated"}),s=t.ok&&(o.ok||!!n);return{providerId:"claude",ready:s,authSource:"oauth_local",sessionFingerprint:n?y(n):void 0,checkedAt:e,note:s?"Local Claude Code OAuth session bound on runner":[t.note,o.note,n?void 0:"no ~/.claude/.credentials.json"].filter(Boolean).join("; ")}}import{existsSync as jn}from"node:fs";import{homedir as Hn}from"node:os";import L from"node:path";R();import{closeSync as ju,existsSync as Ln,mkdirSync as Yu,openSync as Vu,statSync as Gu,unlinkSync as qu}from"node:fs";d();import U from"node:path";ke();import{existsSync as J,readdirSync as Wn}from"node:fs";import I from"node:path";var Mn=/^\d{4}\.\d{1,2}\.\d{1,2}-[a-f0-9]+$/i;function Bn(e){let t=e.split("-")[0].split(".");if(t.length!==3)return null;let[n,o,s]=t;return!n||!o||!s?null:+`${n}${o.padStart(2,"0")}${s.padStart(2,"0")}`}function Un(e){let r=I.join(e,"versions");if(!J(r))return null;let t=null,n=-1;for(let o of Wn(r,{withFileTypes:!0})){if(!o.isDirectory()||!Mn.test(o.name))continue;let s=Bn(o.name);s==null||s<=n||(n=s,t=I.join(r,o.name))}return t}function Ke(e){let r=e?.trim()||I.join(process.env.LOCALAPPDATA||"","cursor-agent"),t=I.join(r,"node.exe"),n=I.join(r,"index.js");if(J(t)&&J(n))return{nodeExe:t,indexJs:n,versionDir:r};let o=Un(r);if(!o)return null;let s=I.join(o,"node.exe"),i=I.join(o,"index.js");return!J(s)||!J(i)?null:{nodeExe:s,indexJs:i,versionDir:o}}function Fn(e,r,t){return{executable:e,prefixArgs:[r],shell:!1,detached:_(),bundledVersionDir:t}}function et(e){if(process.platform==="win32"){let r=/\.(cmd|bat)$/i.test(e),t=/node\.exe$/i.test(e)&&Ln(U.join(U.dirname(e),"index.js"));if(r||t||e==="agent"){let o=r?Ke(U.dirname(e)):t?{nodeExe:e,indexJs:U.join(U.dirname(e),"index.js"),versionDir:U.dirname(e)}:Ke();if(o)return Fn(o.nodeExe,o.indexJs,o.versionDir);throw new Error("Cursor Agent on Windows has no headless bundled node.exe under %LOCALAPPDATA%\\cursor-agent\\versions\\\u2026. Run `agent login` / update Cursor Agent CLI, use `--provider claude`, or set KYNVER_CURSOR_AGENT_ROOT to the cursor-agent folder.")}}return{executable:e,prefixArgs:[],shell:!1,detached:_()}}import{spawnSync as $n}from"node:child_process";function We(e,r=process.env){try{let t;try{t=et(e)}catch{t={executable:e,prefixArgs:[]}}let n=$n(t.executable,[...t.prefixArgs,"status","--format","json"],{encoding:"utf8",windowsHide:!0,timeout:8e3,env:{...r,CI:"1",NO_COLOR:"1"}});if(n.status!==0)return{ok:!1,note:"agent status: not authenticated"};let o=(n.stdout||"").trim();if(!o)return{ok:!1,note:"agent status: empty response"};let s;try{s=JSON.parse(o)}catch{return{ok:!1,note:"agent status: unparseable response"}}return typeof s=="object"&&s!==null&&s.isAuthenticated===!0?{ok:!0,note:"agent status: authenticated"}:{ok:!1,note:"agent status: not authenticated"}}catch(t){return{ok:!1,note:t instanceof Error?t.message:"agent status probe failed"}}}function Me(e=process.env){let r=[],t=e.KYNVER_CURSOR_AUTH_HOME?.trim();t&&(r.push(L.join(t,".config","cursor","auth.json")),r.push(L.join(t,".cursor-agent","auth.json")));let n=Hn();if(r.push(L.join(n,".config","cursor","auth.json")),r.push(L.join(n,".cursor-agent","auth.json")),process.platform==="win32"){let o=e.LOCALAPPDATA?.trim(),s=e.APPDATA?.trim();o&&r.push(L.join(o,"cursor-agent","auth.json")),s&&r.push(L.join(s,"cursor","auth.json"))}return r}var Yn="agent";function rt(e=new Date().toISOString()){let r=g(Yn,["KYNVER_CURSOR_AGENT_BIN","CURSOR_AGENT_BIN"]);if(process.env.CURSOR_API_KEY?.trim())return{providerId:"cursor",ready:!1,authSource:"api_key_env",sessionFingerprint:B("CURSOR_API_KEY"),checkedAt:e,note:"CURSOR_API_KEY present but scrubbed from worker env (deployment secret) \u2014 use `agent login` (OAuth) for harness workers"};let t=h(r,["-v"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=Me().find(l=>jn(l)),o=We(r),s=!!n||o.ok,i=t.ok&&s;return{providerId:"cursor",ready:i,authSource:"oauth_local",sessionFingerprint:n?y(n):void 0,checkedAt:e,note:i?"Local Cursor/Composer OAuth session bound on runner":[t.note,s?void 0:o.note??"no ~/.config/cursor/auth.json or `agent login` session"].filter(Boolean).join("; ")}}import{existsSync as Vn,readFileSync as Gn}from"node:fs";import{homedir as qn}from"node:os";import Be from"node:path";var Jn=["OPENAI_API_KEY","ANTHROPIC_API_KEY","KYNVER_API_KEY","KYNVER_BASE_URL"];function zn(){let e=process.env.HERMES_HOME?.trim(),r=e?Be.resolve(e):Be.join(qn(),".hermes");return Be.join(r,".env")}function Xn(e){try{let r=Gn(e,"utf8"),t=[];for(let n of Jn)new RegExp(`^${n}=`,"m").test(r)&&t.push(n);return t}catch{return[]}}function tt(e=new Date().toISOString()){let r=g("hermes",["KYNVER_HERMES_BIN","HERMES_BIN"]),t=h(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=zn(),o=Vn(n),s=o?Xn(n):[],l=s.some(u=>u.endsWith("_API_KEY"))?"api_key_env":o?"oauth_local":"none",c=t.ok&&o;return{adapterId:"hermes",cliAvailable:t.ok,profileBound:o,authSource:l,sessionFingerprint:o?y(n):void 0,checkedAt:e,note:c?`Hermes profile bound (${s.length?`keys: ${s.join(", ")}`:"no API keys detected"})`:[t.note,o?void 0:"no ~/.hermes/.env"].filter(Boolean).join("; ")}}function nt(e={}){let r=e.nowIso?.()??new Date().toISOString(),t=q(r),n={codex:t,cursor:rt(r),claude:Qr(r)},o=Object.values(n).filter(s=>s.ready).length;return{generatedAt:r,bindings:n,cloudApiCredits:{anthropicApiKey:!!process.env.ANTHROPIC_API_KEY?.trim(),openaiApiKey:!!process.env.OPENAI_API_KEY?.trim(),codexApiKey:!!process.env.CODEX_API_KEY?.trim()},workerEndpoint:{baseUrlConfigured:!!process.env.KYNVER_WORKER_BASE_URL?.trim(),apiKeyConfigured:!!process.env.KYNVER_WORKER_API_KEY?.trim()},hermes:tt(r),hermesOpenAiCodex:de(r),codexAdapterPath:t.path,readyCount:o}}var Zn=[/\bprivileged\b/i,/\bproduction\s+db\b/i,/\bdb:push\b/i,/\bmigration\b/i,/\bdeploy\b/i,/\bsecrets?\b/i,/\bstripe\b/i,/\[require-approval\]/i,/\[operator-only\]/i],Qn=[/\borchestration\b/i,/\bplan[- ]?progress\b/i,/\bstatus\s+sync\b/i,/\bheartbeat\b/i,/\bboard[- ]?drain\b/i,/\bmaintenance\b/i,/\[orchestration:\s*low-risk\]/i];function Ue(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function eo(e){let r=Ue(e,"executorRef").toLowerCase(),t=Ue(e,"title").toLowerCase(),n=Ue(e,"description").toLowerCase(),o=`${r}
|
|
67
|
+
`});var xr=a(()=>{"use strict";ae();d();x()});var Rr=a(()=>{"use strict";le();G()});var vr=a(()=>{"use strict"});var ea,ra,br=a(()=>{"use strict";re();ea=10*6e4,ra=60*6e4});var Er=a(()=>{"use strict"});var Pe=a(()=>{"use strict"});var Sr=a(()=>{"use strict"});var Cr=a(()=>{"use strict";Pe();Sr()});var Or=a(()=>{"use strict";fr();kr();xr();x();le();Rr();vr();br();Er();Cr();Pe();d()});var Ar=a(()=>{"use strict";Or();d()});var en,rn,wr=a(()=>{"use strict";ir();A();O();te();ie();Oe();ae();pr();Ar();d();en=500*1024*1024,rn=4*1024*1024*1024});var ie=a(()=>{"use strict";wr()});import{homedir as tn}from"node:os";import nn from"node:path";var Pr,Ie=a(()=>{"use strict";Pr=nn.join(tn(),".kynver",".env")});var Ir=a(()=>{"use strict"});var Nr=a(()=>{"use strict";Ir()});var Tr=a(()=>{"use strict"});var Dr=a(()=>{"use strict";d()});var Ne=a(()=>{"use strict";Nr();Tr();Dr()});var Kr=a(()=>{"use strict"});var Wr=a(()=>{"use strict";Kr()});var ce=a(()=>{"use strict";Ie();E();A();Ne();Wr()});var Mr=a(()=>{"use strict";O();O()});var Br=a(()=>{"use strict";Ie();Ne();ce()});var Te=a(()=>{"use strict"});var Ur=a(()=>{"use strict";Ee();O();Mr();A();ce();Br();Se();Te();oe()});function P(e){let r=e.trim().toLowerCase();return fn[r]??r}var Lr,mn,fn,ue=a(()=>{"use strict";Lr=["claude","cursor","codex","gemini","gemini-api","openai-compatible","venice"],mn=Lr.join("|"),fn={anthropic:"claude",opus:"claude",openai:"openai-compatible",openai_compatible:"openai-compatible","openai-compat":"openai-compatible",chatgpt:"codex",gpt:"codex","openai-api":"openai-compatible",openai_api:"openai-compatible","venice-ai":"venice",venice_ai:"venice",veniceai:"venice",google:"gemini",gemini_cli:"gemini",gemini_api:"gemini-api","google-api":"gemini-api",google_api:"gemini-api"}});var Fr=a(()=>{"use strict";E()});var $r=a(()=>{"use strict";Fr()});var Hr=a(()=>{"use strict"});var jr=a(()=>{"use strict";Hr()});import{existsSync as hn,mkdirSync as Hc,readFileSync as yn,writeFileSync as jc}from"node:fs";import{homedir as _n,totalmem as Yc}from"node:os";import De from"node:path";function kn(e){return{...e,...e.harnessRoot?.trim()?{harnessRoot:v(e.harnessRoot.trim())}:{},...e.defaultRepo?.trim()?{defaultRepo:v(e.defaultRepo.trim())}:{}}}function xn(e){let r=e.defaultRepo?.trim();return!r||e.defaultBase?.trim()||!er(v(r))?e:{...e,defaultBase:Qe}}function Rn(){if(!hn(Vr))return null;try{return JSON.parse(yn(Vr,"utf8"))}catch{return null}}function W(){let e=Rn();return e?xn(kn(e)):{}}var Yr,Vr,uu,du,pu,A=a(()=>{"use strict";Ee();E();be();or();Se();O();te();ie();Oe();ce();Ur();ue();oe();$r();Te();jr();Yr=De.join(_n(),".kynver"),Vr=De.join(Yr,"config.json"),uu=De.join(Yr,"credentials");du=500*1024*1024,pu=4*1024*1024*1024});var _t=/^claude[-_]/i,kt=/^(?:opus|sonnet|haiku)\b/i;function Ye(e){let r=e.trim();return _t.test(r)||kt.test(r)}function Ge(e){let r=e.trim().toLowerCase();return r.startsWith("gpt-")||r.startsWith("gpt5")||r.includes("codex")}function ke(e){let r=e.trim().toLowerCase();return r.includes("composer")||r.includes("cursor")}function qe(e){return e.trim().toLowerCase().startsWith("gemini-")}function xt(e){return Ge(e)?"codex":Ye(e)?"claude":qe(e)?"gemini":(ke(e),"cursor")}function Rt(e){if(!e.startsWith("provider:"))return null;let r=e.slice(9),t=r.indexOf(":"),n=(t>=0?r.slice(0,t):r).trim().toLowerCase(),o=t>=0&&r.slice(t+1).trim()||void 0;return n?n==="claude"||n==="opus"||n==="anthropic"?{provider:"claude",model:o,rule:o?"executor_ref:provider_claude_model":"executor_ref:provider_claude"}:n==="codex"?{provider:"codex",model:o,rule:"executor_ref:provider_codex"}:n==="openai-compatible"||n==="openai"||n==="openai_compatible"?{provider:"openai-compatible",model:o,rule:"executor_ref:provider_openai_compatible"}:n==="venice"||n==="venice-ai"||n==="venice_ai"||n==="veniceai"?{provider:"venice",model:o,rule:"executor_ref:provider_venice"}:n==="chatgpt"||n==="gpt"?{provider:"codex",model:o,rule:"executor_ref:provider_codex"}:n==="openai-api"||n==="openai_api"?{provider:"openai-compatible",model:o,rule:"executor_ref:provider_openai_compatible"}:n==="cursor"||n==="composer"?{provider:"cursor",model:o,rule:"executor_ref:provider_cursor"}:n==="gemini-api"||n==="gemini_api"||n==="google-api"?{provider:"gemini-api",model:o,rule:"executor_ref:provider_gemini_api"}:n==="gemini"||n==="google"||n==="gemini_cli"?{provider:"gemini",model:o,rule:o?"executor_ref:provider_gemini_model":"executor_ref:provider_gemini"}:null:null}function vt(e){if(!e.startsWith("harness-lane:"))return null;let r=e.split(":").map(o=>o.trim()).filter(Boolean);if(r.length<2)return null;let t=r[1],n=r.slice(2).join(":");return n?Ye(n)||Ge(n)||ke(n)||qe(n)?{lane:t,model:n,provider:xt(n),rule:"executor_ref:harness_lane_model"}:{lane:t,rule:"executor_ref:harness_lane"}:{lane:t,rule:"executor_ref:harness_lane"}}function f(e){let r=typeof e=="string"?e.trim():"";return r?Rt(r)??vt(r):null}function xe(e){let r=f(e);return r?!!(r.provider&&r.provider!=="cursor"||r.model&&!ke(r.model)):!1}A();var Gr={codex:{id:"codex",displayName:"Codex (BYO OAuth / Hermes openai-codex)",costTier:"low",authSources:["oauth_local","api_key_env","subscription_hermes"],supportsLowRiskOrchestration:!0,supportsPrivilegedPlatformActions:!1,workerMcpTools:"supported"},cursor:{id:"cursor",displayName:"Cursor / Composer",costTier:"medium",authSources:["oauth_local","api_key_env"],supportsLowRiskOrchestration:!0,supportsPrivilegedPlatformActions:!0,workerMcpTools:"supported"},claude:{id:"claude",displayName:"Claude Code",costTier:"high",authSources:["oauth_local"],supportsLowRiskOrchestration:!0,supportsPrivilegedPlatformActions:!0,workerMcpTools:"supported"}};function M(e){return Gr[e]}function qr(){return Object.values(Gr)}import{existsSync as bn}from"node:fs";import{homedir as En}from"node:os";import q from"node:path";C();import{createHash as Jr}from"node:crypto";import{statSync as vn}from"node:fs";import{spawnSync as zr}from"node:child_process";function y(e){try{let r=vn(e),t=`${e}|${r.size}|${r.mtimeMs}`;return Jr("sha256").update(t).digest("hex").slice(0,16)}catch{return}}function B(e){return Jr("sha256").update(`env:${e}`).digest("hex").slice(0,16)}function g(e,r){for(let t of r){let n=process.env[t]?.trim();if(n)return n}return e}function h(e,r,t={}){let n=t.timeoutMs??8e3;try{let[o,s]=b(e,r),i=zr(o,s,{windowsHide:!0,encoding:"utf8",timeout:n,env:{...process.env,...t.env,CI:"1",NO_COLOR:"1"}});if(i.status===0)return{ok:!0,note:t.okNote??`${e} ${r.join(" ")}: ok`};let l=(i.stderr||i.stdout||"").trim(),c=t.failPrefix??`${e} ${r.join(" ")} failed`;return{ok:!1,note:l?`${c}: ${l.slice(0,200)}`:c}}catch(o){return{ok:!1,note:o instanceof Error?o.message:`${e} probe failed`}}}function de(e,r,t={}){let n=t.timeoutMs??8e3;try{let[o,s]=b(e,r);return zr(o,s,{windowsHide:!0,stdio:"ignore",timeout:n,env:{...process.env,CI:"1",NO_COLOR:"1"}}).status===0?{ok:!0,note:t.okNote??`${e} authenticated`}:{ok:!1,note:t.failNote??`${e} not authenticated`}}catch(o){return{ok:!1,note:o instanceof Error?o.message:`${e} auth probe failed`}}}var Sn="codex";function Cn(){let e=En();return[process.env.CODEX_HOME?.trim()?q.join(q.resolve(process.env.CODEX_HOME.trim()),"auth.json"):null,q.join(e,".codex","auth.json"),q.join(e,".config","codex","auth.json")].filter(t=>!!t)}function On(e){return q.dirname(e)}function An(e){let r,t;for(let n of Cn()){if(!bn(n))continue;r??=n;let o=h(e,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status",env:{CODEX_HOME:On(n)}});if(t??=o,o.ok)return{authPath:n,login:o}}return{authPath:r,login:t??h(e,["login","status"],{okNote:"codex login status: authenticated",failPrefix:"codex login status"})}}function Xr(e=new Date().toISOString()){let r=g(Sn,["KYNVER_CODEX_BIN","CODEX_BIN"]);if(process.env.CODEX_API_KEY?.trim())return{providerId:"codex",ready:!0,authSource:"api_key_env",sessionFingerprint:B("CODEX_API_KEY"),checkedAt:e,note:"CODEX_API_KEY present (env binding \u2014 cloud credits path, no token stored in Kynver)"};let{authPath:t,login:n}=An(r),o=!!t&&n.ok;return{providerId:"codex",ready:o,authSource:"oauth_local",sessionFingerprint:t?y(t):void 0,checkedAt:e,note:o?"Local Codex OAuth session bound on runner":[n.note,t?void 0:"no Codex auth store found"].filter(Boolean).join("; ")}}import{existsSync as wn}from"node:fs";import{homedir as Pn}from"node:os";import Ke from"node:path";function In(){let e=process.env.HERMES_HOME?.trim(),r=e?Ke.resolve(e):Ke.join(Pn(),".hermes");return Ke.join(r,"auth.json")}function pe(e=new Date().toISOString()){let r=g("hermes",["KYNVER_HERMES_BIN","HERMES_BIN"]),t=h(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=In(),o=wn(n),s=de(r,["auth","status","openai-codex"],{okNote:"hermes openai-codex: logged in",failNote:"hermes openai-codex: not logged in"}),i=t.ok&&s.ok;return{path:"hermes_openai_codex",ready:i,authSource:i?"subscription_hermes":"none",sessionFingerprint:o?y(n):void 0,checkedAt:e,note:i?"Hermes openai-codex subscription session bound (ChatGPT Codex OAuth)":[t.note,s.note,o?void 0:"no ~/.hermes/auth.json"].filter(Boolean).join("; ")}}function J(e=new Date().toISOString()){let r=Xr(e);if(r.ready)return{...r,path:"codex_cli"};let t=pe(e);return t.ready?{providerId:"codex",ready:!0,authSource:t.authSource,sessionFingerprint:t.sessionFingerprint,checkedAt:t.checkedAt,note:t.note,path:"hermes_openai_codex",hermesOpenAiCodex:t}:{providerId:"codex",ready:!1,authSource:"none",checkedAt:e,path:"none",hermesOpenAiCodex:t,note:[r.note,t.note].filter(Boolean).join("; ")||"Codex CLI and Hermes openai-codex unavailable"}}var Zr=["low","medium","high"],Qr={oauth_local:0,subscription_hermes:0,runner_token:1,api_key_env:2,none:3};function et(e,r){let t=M(e);return r==="privileged"?t.supportsPrivilegedPlatformActions:r==="low"?t.supportsLowRiskOrchestration:!0}function Nn(e,r){let t=M(e.providerId),n=M(r.providerId),o=Zr.indexOf(t.costTier)-Zr.indexOf(n.costTier);if(o!==0)return o;let s=Qr[e.binding.authSource]-Qr[r.binding.authSource];return s!==0?s:e.providerId.localeCompare(r.providerId)}function We(e){let r=qr().map(l=>({providerId:l.id,binding:e.inventory.bindings[l.id]})).filter(l=>l.binding.ready&&et(l.providerId,e.riskClass));if(r.length===0)return null;let n=[...r].sort(Nn)[0],o="codex";if(n.providerId===o)return{providerId:n.providerId,binding:n.binding};let s=e.inventory.bindings[o],i;return et(o,e.riskClass)?s.ready||(i=s.note??`${o} not bound`):i=`${e.riskClass} orchestration requires privileged-capable provider`,{providerId:n.providerId,binding:n.binding,escalatedFrom:o,escalatedReason:i}}import{existsSync as Tn}from"node:fs";import{homedir as Dn}from"node:os";import Kn from"node:path";var Wn="claude";function Mn(){let e=Dn();return[Kn.join(e,".claude",".credentials.json")]}function rt(e=new Date().toISOString()){let r=g(Wn,["KYNVER_CLAUDE_BIN","CLAUDE_BIN"]);if(process.env.ANTHROPIC_API_KEY?.trim())return{providerId:"claude",ready:!1,authSource:"api_key_env",sessionFingerprint:B("ANTHROPIC_API_KEY"),checkedAt:e,note:"ANTHROPIC_API_KEY present but scrubbed from worker env (deployment secret) \u2014 use `claude` CLI login (OAuth) for harness workers"};let t=h(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=Mn().find(i=>Tn(i)),o=de(r,["auth","status"],{okNote:"claude auth status: authenticated",failNote:"claude auth status: not authenticated"}),s=t.ok&&(o.ok||!!n);return{providerId:"claude",ready:s,authSource:"oauth_local",sessionFingerprint:n?y(n):void 0,checkedAt:e,note:s?"Local Claude Code OAuth session bound on runner":[t.note,o.note,n?void 0:"no ~/.claude/.credentials.json"].filter(Boolean).join("; ")}}import{existsSync as Yn}from"node:fs";import{homedir as Vn}from"node:os";import L from"node:path";x();import{closeSync as qu,existsSync as $n,mkdirSync as Ju,openSync as zu,statSync as Xu,unlinkSync as Zu}from"node:fs";d();import U from"node:path";Re();import{existsSync as z,readdirSync as Bn}from"node:fs";import I from"node:path";var Un=/^\d{4}\.\d{1,2}\.\d{1,2}-[a-f0-9]+$/i;function Ln(e){let t=e.split("-")[0].split(".");if(t.length!==3)return null;let[n,o,s]=t;return!n||!o||!s?null:+`${n}${o.padStart(2,"0")}${s.padStart(2,"0")}`}function Fn(e){let r=I.join(e,"versions");if(!z(r))return null;let t=null,n=-1;for(let o of Bn(r,{withFileTypes:!0})){if(!o.isDirectory()||!Un.test(o.name))continue;let s=Ln(o.name);s==null||s<=n||(n=s,t=I.join(r,o.name))}return t}function Me(e){let r=e?.trim()||I.join(process.env.LOCALAPPDATA||"","cursor-agent"),t=I.join(r,"node.exe"),n=I.join(r,"index.js");if(z(t)&&z(n))return{nodeExe:t,indexJs:n,versionDir:r};let o=Fn(r);if(!o)return null;let s=I.join(o,"node.exe"),i=I.join(o,"index.js");return!z(s)||!z(i)?null:{nodeExe:s,indexJs:i,versionDir:o}}function Hn(e,r,t){return{executable:e,prefixArgs:[r],shell:!1,detached:_(),bundledVersionDir:t}}function tt(e){if(process.platform==="win32"){let r=/\.(cmd|bat)$/i.test(e),t=/node\.exe$/i.test(e)&&$n(U.join(U.dirname(e),"index.js"));if(r||t||e==="agent"){let o=r?Me(U.dirname(e)):t?{nodeExe:e,indexJs:U.join(U.dirname(e),"index.js"),versionDir:U.dirname(e)}:Me();if(o)return Hn(o.nodeExe,o.indexJs,o.versionDir);throw new Error("Cursor Agent on Windows has no headless bundled node.exe under %LOCALAPPDATA%\\cursor-agent\\versions\\\u2026. Run `agent login` / update Cursor Agent CLI, use `--provider claude`, or set KYNVER_CURSOR_AGENT_ROOT to the cursor-agent folder.")}}return{executable:e,prefixArgs:[],shell:!1,detached:_()}}import{spawnSync as jn}from"node:child_process";function Be(e,r=process.env){try{let t;try{t=tt(e)}catch{t={executable:e,prefixArgs:[]}}let n=jn(t.executable,[...t.prefixArgs,"status","--format","json"],{encoding:"utf8",windowsHide:!0,timeout:8e3,env:{...r,CI:"1",NO_COLOR:"1"}});if(n.status!==0)return{ok:!1,note:"agent status: not authenticated"};let o=(n.stdout||"").trim();if(!o)return{ok:!1,note:"agent status: empty response"};let s;try{s=JSON.parse(o)}catch{return{ok:!1,note:"agent status: unparseable response"}}return typeof s=="object"&&s!==null&&s.isAuthenticated===!0?{ok:!0,note:"agent status: authenticated"}:{ok:!1,note:"agent status: not authenticated"}}catch(t){return{ok:!1,note:t instanceof Error?t.message:"agent status probe failed"}}}function Ue(e=process.env){let r=[],t=e.KYNVER_CURSOR_AUTH_HOME?.trim();t&&(r.push(L.join(t,".config","cursor","auth.json")),r.push(L.join(t,".cursor-agent","auth.json")));let n=Vn();if(r.push(L.join(n,".config","cursor","auth.json")),r.push(L.join(n,".cursor-agent","auth.json")),process.platform==="win32"){let o=e.LOCALAPPDATA?.trim(),s=e.APPDATA?.trim();o&&r.push(L.join(o,"cursor-agent","auth.json")),s&&r.push(L.join(s,"cursor","auth.json"))}return r}var Gn="agent";function nt(e=new Date().toISOString()){let r=g(Gn,["KYNVER_CURSOR_AGENT_BIN","CURSOR_AGENT_BIN"]);if(process.env.CURSOR_API_KEY?.trim())return{providerId:"cursor",ready:!1,authSource:"api_key_env",sessionFingerprint:B("CURSOR_API_KEY"),checkedAt:e,note:"CURSOR_API_KEY present but scrubbed from worker env (deployment secret) \u2014 use `agent login` (OAuth) for harness workers"};let t=h(r,["-v"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=Ue().find(l=>Yn(l)),o=Be(r),s=!!n||o.ok,i=t.ok&&s;return{providerId:"cursor",ready:i,authSource:"oauth_local",sessionFingerprint:n?y(n):void 0,checkedAt:e,note:i?"Local Cursor/Composer OAuth session bound on runner":[t.note,s?void 0:o.note??"no ~/.config/cursor/auth.json or `agent login` session"].filter(Boolean).join("; ")}}import{existsSync as qn,readFileSync as Jn}from"node:fs";import{homedir as zn}from"node:os";import Le from"node:path";var Xn=["OPENAI_API_KEY","ANTHROPIC_API_KEY","KYNVER_API_KEY","KYNVER_BASE_URL"];function Zn(){let e=process.env.HERMES_HOME?.trim(),r=e?Le.resolve(e):Le.join(zn(),".hermes");return Le.join(r,".env")}function Qn(e){try{let r=Jn(e,"utf8"),t=[];for(let n of Xn)new RegExp(`^${n}=`,"m").test(r)&&t.push(n);return t}catch{return[]}}function ot(e=new Date().toISOString()){let r=g("hermes",["KYNVER_HERMES_BIN","HERMES_BIN"]),t=h(r,["--version"],{okNote:`${r} CLI available`,failPrefix:`${r} CLI not available`}),n=Zn(),o=qn(n),s=o?Qn(n):[],l=s.some(u=>u.endsWith("_API_KEY"))?"api_key_env":o?"oauth_local":"none",c=t.ok&&o;return{adapterId:"hermes",cliAvailable:t.ok,profileBound:o,authSource:l,sessionFingerprint:o?y(n):void 0,checkedAt:e,note:c?`Hermes profile bound (${s.length?`keys: ${s.join(", ")}`:"no API keys detected"})`:[t.note,o?void 0:"no ~/.hermes/.env"].filter(Boolean).join("; ")}}function it(e={}){let r=e.nowIso?.()??new Date().toISOString(),t=J(r),n={codex:t,cursor:nt(r),claude:rt(r)},o=Object.values(n).filter(s=>s.ready).length;return{generatedAt:r,bindings:n,cloudApiCredits:{anthropicApiKey:!!process.env.ANTHROPIC_API_KEY?.trim(),openaiApiKey:!!process.env.OPENAI_API_KEY?.trim(),codexApiKey:!!process.env.CODEX_API_KEY?.trim()},workerEndpoint:{baseUrlConfigured:!!process.env.KYNVER_WORKER_BASE_URL?.trim(),apiKeyConfigured:!!process.env.KYNVER_WORKER_API_KEY?.trim()},hermes:ot(r),hermesOpenAiCodex:pe(r),codexAdapterPath:t.path,readyCount:o}}var eo=[/\bprivileged\b/i,/\bproduction\s+db\b/i,/\bdb:push\b/i,/\bmigration\b/i,/\bdeploy\b/i,/\bsecrets?\b/i,/\bstripe\b/i,/\[require-approval\]/i,/\[operator-only\]/i],ro=[/\borchestration\b/i,/\bplan[- ]?progress\b/i,/\bstatus\s+sync\b/i,/\bheartbeat\b/i,/\bboard[- ]?drain\b/i,/\bmaintenance\b/i,/\[orchestration:\s*low-risk\]/i];function Fe(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function to(e){let r=Fe(e,"executorRef").toLowerCase(),t=Fe(e,"title").toLowerCase(),n=Fe(e,"description").toLowerCase(),o=`${r}
|
|
68
68
|
${t}
|
|
69
|
-
${n}`;return
|
|
69
|
+
${n}`;return eo.some(s=>s.test(o))?"privileged":r.includes("provider:claude")||r.includes("deep_review")||r.includes("security")||r.includes("landing")||r.includes("review")||t.startsWith("land:")||r.includes("implementer")||r.includes("repair")||t.includes("implement")?"elevated":ro.some(s=>s.test(o))?"low":"elevated"}function no(e){let r=M(e.provider),t=e.escalatedFrom&&e.escalatedReason?`Escalated from ${e.escalatedFrom} (${e.escalatedReason}); using ${r.displayName} (${r.costTier} tier)`:`${r.displayName} selected for ${e.riskClass} orchestration (${r.costTier} tier, auth=${e.authSource})`;return{provider:e.provider,model:e.model,authSource:e.authSource,costTier:r.costTier,riskClass:e.riskClass,costRationale:t,routingRule:e.routingRule,escalatedFrom:e.escalatedFrom,escalatedReason:e.escalatedReason}}function oo(e){let r=e.inventory??it();return e.codexBinding?{...r,bindings:{...r.bindings,codex:e.codexBinding}}:r}function N(e){let r=no({provider:e.providerId,model:e.model,authSource:e.binding.authSource,riskClass:e.riskClass,routingRule:e.routingRule,escalatedFrom:e.escalatedFrom,escalatedReason:e.escalatedReason});return{provider:e.providerId,model:e.model,rule:r.routingRule,audit:r}}function st(e){let r=e.task??{},t=to(r),n=oo({inventory:e.inventory,codexBinding:e.codexBinding??(e.inventory?null:J())}),o=e.preferLowCost===!1?null:e.explicitProvider?.trim().toLowerCase(),s=e.explicitModel?.trim()||void 0,i=F;if(o==="codex"||o==="provider:codex"){let u=n.bindings.codex;if(!u.ready){let p=We({inventory:n,riskClass:t});return N(p?{providerId:p.providerId,binding:p.binding,riskClass:t,routingRule:"orchestration:explicit_codex_unavailable_cost_aware",model:s,escalatedFrom:"codex",escalatedReason:u.note??"codex oauth not bound"}:{providerId:i,binding:n.bindings[i],riskClass:t,routingRule:"orchestration:codex_unavailable_escalate_cursor",model:s,escalatedFrom:"codex",escalatedReason:u.note??"codex oauth not bound"})}return N({providerId:"codex",binding:u,riskClass:t,routingRule:"orchestration:explicit_codex",model:s})}if(o==="cursor"||o==="provider:cursor"){let u=n.bindings.cursor;if(u.ready)return N({providerId:"cursor",binding:u,riskClass:t,routingRule:"orchestration:explicit_cursor",model:s})}if(o==="claude"||o==="provider:claude"){let u=n.bindings.claude;if(u.ready)return N({providerId:"claude",binding:u,riskClass:t,routingRule:"orchestration:explicit_claude",model:s})}let l=We({inventory:n,riskClass:t});if(l)return N({providerId:l.providerId,binding:l.binding,riskClass:t,routingRule:`orchestration:cost_aware_${l.providerId}`,model:s,escalatedFrom:l.escalatedFrom,escalatedReason:l.escalatedReason});let c=n.bindings.codex;return N({providerId:i,binding:n.bindings[i],riskClass:t,routingRule:c.ready?"orchestration:inventory_empty_default_cursor":"orchestration:codex_unavailable_default_cursor",model:s,...c.ready?{}:{escalatedFrom:"codex",escalatedReason:c.note??"codex oauth not bound"}})}x();d();C();G();var at="kynver",lt=["agent_os_context_envelope","agent_os_search_memory","agent_os_search_skills","agent_os_get_skill","agent_os_progress_note"],io=lt.map(e=>`mcp__${at}__${e}`);G();x();d();C();x();d();C();var me="gpt-5.6-sol";var lp=process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||me;function ao(){return process.env.KYNVER_CODEX_DEFAULT_MODEL?.trim()||me}var $=ao();x();d();var $e="openai-compatible",Fp=600*1e3;x();d();C();var T="gemini";function D(e=process.env){return e.KYNVER_GEMINI_DEFAULT_MODEL?.trim()||"gemini-2.5-pro"}var H="gemini-api";var um=600*1e3;var j="venice";var uo="venice-uncensored-1-2";var po="KYNVER_VENICE_DEFAULT_MODEL";function fe(e=process.env){return e[po]?.trim()||uo}var dt=k,Q="composer-2.5";function m(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function mo(e){if(!e)return;let r=m(e,"workerModelOverride")||m(e,"modelOverride");return r||`${m(e,"title")}
|
|
70
70
|
${m(e,"description")}
|
|
71
|
-
${m(e,"executorRef")}`.match(/\[(?:worker-)?model:\s*([^\]\n]+)\]/i)?.[1]?.trim()||void 0}function
|
|
71
|
+
${m(e,"executorRef")}`.match(/\[(?:worker-)?model:\s*([^\]\n]+)\]/i)?.[1]?.trim()||void 0}function ct(e){return e.toLowerCase()}function ye(e=W()){let r=e.defaultModel?.trim();if(r)return r;let t=process.env.KYNVER_DEFAULT_MODEL?.trim();return t||dt}function ge(e){let r=(e??"").toLowerCase();return!r||r.includes("composer")||r.includes("cursor")||r.includes("codex")||r.startsWith("gpt-")||r.startsWith("gpt5")?"cursor":/^claude[-_]/i.test(r)||/^(?:opus|sonnet|haiku)\b/i.test(r)?"claude":r.startsWith("gemini-")?T:"cursor"}function fo(e,r){let t=e.trim().toLowerCase(),n=r?.trim();return t==="cursor"?{model:Q,provider:"cursor",rule:n&&n!=="cursor"?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:t==="claude"||t==="anthropic"?{model:k,provider:"claude",rule:n&&n!=="claude"?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:t==="gemini"||t==="google"?{model:D(),provider:T,rule:n&&n!==T?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:t==="gemini-api"||t==="gemini_api"||t==="google-api"?{model:D(),provider:H,rule:n&&n!==H?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:t==="venice"||t==="venice-ai"||t==="venice_ai"?{model:fe(),provider:j,rule:n&&n!==j?"explicit:model_provider_alias_overrode_provider":"explicit:model_provider_alias",requestedModel:e}:null}function ut(e,r){return!!(e.includes("deep")&&e.includes("review")||e.includes("security")||e.includes("plan_author")||e.includes("plan-author")||r.includes("deep review")||r.includes("security review")||e.includes("plan")&&!e.includes("review")&&(e.includes("author")||e.includes("strategy")))}var go=new Set(["report_reviewer","deep_reviewer","plan_reviewer"]);function pt(e,r,t){return go.has(e)?w:r.includes("review")||/^review[\s:]/.test(t)||t.includes("critique")?w:k}function mt(e){let r=ct(m(e,"executorRef")),t=m(e,"title").toLowerCase(),n=m(e,"priority")||"normal",o=ct(m(e,"roleLane"));if(r.includes("provider:claude")||r.startsWith("claude:")){let i=pt(o,r,t);return{provider:"claude",model:i,rule:i===w?"factory:claude_review":"factory:claude_implementation"}}if(r.includes("provider:codex")||r.startsWith("codex:"))return{provider:"codex",model:$,rule:"lane:codex_orchestration"};if(r.includes("provider:chatgpt")||r.startsWith("chatgpt:")||r.includes("provider:gpt")||r.startsWith("gpt:")){let i=f(m(e,"executorRef"));return{provider:"codex",...i?.model?{model:i.model}:{model:$},rule:"lane:codex_orchestration"}}if(r.includes("provider:openai")||r.startsWith("openai-compatible:")){let i=f(m(e,"executorRef"));return{provider:$e,...i?.model?{model:i.model}:{},rule:"lane:openai_compatible"}}if(r.includes("provider:venice")||r.startsWith("venice:")){let i=f(m(e,"executorRef"));return{provider:j,...i?.model?{model:i.model}:{model:fe()},rule:"lane:venice"}}if(r.includes("provider:gemini-api")||r.startsWith("gemini-api:")){let i=f(m(e,"executorRef"));return{provider:H,...i?.model?{model:i.model}:{model:D()},rule:"lane:gemini_api"}}if(r.includes("provider:gemini")||r.startsWith("gemini:")){let i=f(m(e,"executorRef"));return{provider:T,...i?.model?{model:i.model}:{model:D()},rule:"lane:gemini"}}if(r.includes("cursor")||r.includes("composer")||r.includes("copilot")||o==="implementer"||o==="repair_implementer")return{provider:"cursor",rule:"lane:implementation"};if(r.includes("codex"))return{provider:"codex",model:$,rule:"lane:codex_orchestration"};if(r.includes("landing")||t.startsWith("land:")||t.includes(" merge"))return{provider:"cursor",rule:"lane:landing"};if(r.includes("review")||/^review[\s:]/.test(t)||o.includes("review"))return ut(r,t)||o==="deep_reviewer"?{provider:"cursor",rule:"lane:deep_review"}:{provider:"cursor",rule:"lane:review"};if(ut(r,t)||o==="plan_author")return{provider:"cursor",rule:"lane:planning"};if(n==="critical")return{provider:"cursor",rule:"priority:critical"};if(n==="high")return{provider:"cursor",rule:"priority:high"};if(n==="low")return{provider:"cursor",rule:"priority:low"};let s=ye();return{model:s,provider:ge(s),rule:"default:global"}}function ho(e){return e?f(m(e,"executorRef")):null}function yo(e){switch(P(e)){case T:case H:return D();case j:return fe();case"claude":return k;case"codex":return $;case"cursor":return Q;default:return}}var He="explicit:cli_provider",ft="config:worker_provider";function gt(e,r,t){let n=P(r);return n===e.provider&&e.rule===t?e:{...e,provider:n,model:yo(n)??e.model,rule:t}}function _o(e,r){let t=r?.trim();return!t||e.rule.startsWith("explicit:")&&e.rule!==He?e:gt(e,t,He)}function ko(e,r){if(r.explicitProvider?.trim()||je(r.task))return e;let t=r.configuredProvider?.trim();if(!t)return e;let n=P(t);return n===F||n===e.provider?e:gt(e,n,ft)}function xo(e){let r,t=ho(e.task),n=e.explicitModel?.trim()?void 0:t?.model?.trim(),o=!e.explicitProvider?.trim()&&t?.provider?.trim()?t.provider.trim():void 0;if(e.explicitModel?.trim()){let c=e.explicitModel.trim(),u=fo(c,e.explicitProvider);u?r=u:r={model:c,provider:e.explicitProvider?.trim()||ge(c),rule:"explicit:cli",requestedModel:c}}else if(n)r={model:n,provider:o||ge(n),rule:t?.rule??"executor_ref:model",requestedModel:n};else if(e.task&&he(e.task)){let c=mo(e.task),u,p;if(c)u=c,p="task:provider_override";else{let V=typeof e.task.roleLane=="string"?e.task.roleLane.toLowerCase():"",Ve=typeof e.task.executorRef=="string"?e.task.executorRef.toLowerCase():"",_e=typeof e.task.title=="string"?e.task.title.toLowerCase():"";u=pt(V,Ve,_e),p=u===w?"factory:claude_review":"factory:claude_implementation"}r={model:u,provider:"claude",rule:p,requestedModel:u}}else if(e.task&&Object.keys(e.task).length>0){let c=mt(e.task);r={...c,requestedModel:c.model}}else{let c=ye();r={model:c,provider:e.explicitProvider?.trim()||ge(c),rule:"default:global",requestedModel:c}}r=_o(r,e.explicitProvider),r=ko(r,{explicitProvider:e.explicitProvider,task:e.task,configuredProvider:e.configuredProvider});let s=!!e.configuredProvider?.trim()&&P(e.configuredProvider)!==F&&r.rule==="config:worker_provider",i=ht({routing:r,task:e.task,explicitProvider:e.explicitProvider??(s?r.provider:void 0),explicitProviderIsOperatorOverride:!!e.explicitProviderIsOperatorOverride||s});if(!e.task||Object.keys(e.task).length===0||i.rule==="explicit:model_provider_alias"||i.rule==="explicit:model_provider_alias_overrode_provider"||i.rule==="explicit:cli"||i.rule===He||i.rule===ft||R(i.provider)&&(e.explicitProviderIsOperatorOverride||he(e.task))||i.provider===$e||i.provider===T||i.provider===H||i.provider===j||i.provider==="codex")return i;let l=st({task:e.task,explicitProvider:e.explicitProvider??i.provider,explicitModel:i.model,inventory:e.orchestrationInventory??void 0});return{provider:l.provider,model:l.provider==="codex"?l.model??i.model??$:i.model,rule:l.rule,requestedModel:i.requestedModel,orchestrationAudit:l.audit}}function Ro(e,r,t){return e||r||t||ye()||k}ue();ue();var F="cursor",vo=new Set(["claude","opus","anthropic"]),bo=[/\[worker-provider:\s*claude\]/i,/\[use-claude-worker\]/i,/\[operator-worker-provider:\s*claude\]/i];function ee(e,r){let t=e[r];return typeof t=="string"?t.trim():""}function R(e){if(!e?.trim())return!1;let r=e.trim().toLowerCase();return vo.has(r)?!0:r.includes("claude")||r.includes("opus")}function he(e){if(!e)return!1;let r=e.workerProviderOverride;if(typeof r=="string"&&R(r))return!0;let t=ee(e,"executorRef").toLowerCase();if(t==="provider:claude"||t.startsWith("provider:claude:")||t.includes("claude-worker-override")||t.includes("operator-claude"))return!0;let n=f(ee(e,"executorRef"));if(n?.provider&&R(n.provider)||n?.model&&R(Eo(n.model)))return!0;let o=ee(e,"description");if(bo.some(i=>i.test(o)))return!0;let s=ee(e,"title");return!!/\[use-claude-worker\]/i.test(s)}function Eo(e){let r=e.trim().toLowerCase();return/^claude[-_]/.test(r)||/^(?:opus|sonnet|haiku)\b/.test(r)?"claude":r}function So(e,r){return{provider:F,model:Q,rule:`policy:cursor_default${r}`,requestedModel:e}}var Co=["explicit:","executor_ref:","factory:","task:"];function Oo(e){return Co.some(r=>e.startsWith(r))}function je(e){if(!e)return!1;let r=e.workerProviderOverride;return typeof r=="string"&&r.trim()||f(ee(e,"executorRef"))?.provider?!0:he(e)}function ht(e){let{routing:r,task:t}=e,n=e.explicitProvider?.trim().toLowerCase();if(e.explicitProviderIsOperatorOverride&&R(n))return{...r,provider:"claude",rule:r.rule.startsWith("explicit:")?r.rule:"explicit:operator_provider"};if(n||Oo(r.rule)||je(t)||!R(r.provider))return r;let o=r.rule&&r.rule!=="default:global"?`:${r.rule.replace(/:/g,"_")}`:"";return So(r.model,o)}function Ao(e){let r=e?.executorRef;return typeof r=="string"?r.trim():""}function yt(e){return e?.trim()||void 0}function wo(e){let r=Ao(e.task),t=f(r),n=e.explicitProvider?.trim().toLowerCase(),o=yt(e.explicitModel??void 0),s=n||t?.provider,i=o||t?.model,l=n||o?"cli":t?.rule??"none";if(!s&&!i)return{ok:!0};!s&&i&&(/^claude[-_]/i.test(i)||/^(?:opus|sonnet|haiku)\b/i.test(i))&&(s="claude");let c=e.routing.provider,u=yt(e.routing.model),p={provider:c,model:u,rule:e.routing.rule};return s&&s!=="cursor"||r&&xe(r)||n&&n!=="cursor"?c==="cursor"?{ok:!1,error:`model_routing_mismatch: requested ${s??"non-cursor"}${i?` model=${i}`:""} (${l}) but routing resolved to cursor (${e.routing.rule})`,requested:{provider:s,model:i,source:l},resolved:p}:i&&u&&i!==u&&!R(c)?{ok:!1,error:`model_routing_mismatch: requested model=${i} (${l}) but routing resolved model=${u} (${e.routing.rule})`,requested:{provider:s,model:i,source:l},resolved:p}:{ok:!0,requested:{provider:s,model:i,source:l},resolved:p}:{ok:!0,resolved:p}}export{Q as CURSOR_DEFAULT_MODEL,dt as GLOBAL_DEFAULT_MODEL,wo as assessDispatchModelGuard,xe as executorRefRequestsNonCursorWorker,mt as inferModelRoutingFromTask,f as parseExecutorRefRoutingIntent,ye as resolveGlobalDefaultModel,Ro as resolveModelFallback,xo as resolveWorkerLaunch};
|