mirror of
https://github.com/garrytan/gstack.git
synced 2026-09-18 10:52:24 +02:00
fix: raise gbrain version-probe timeout to 10s on Windows
On Windows the gbrain CLI is a .cmd shim that runs `bun run cli.ts`. A cold spawn takes over the 2s timeout in resolveGbrainBin (warm runs are ~700ms), so the probe times out, localEngineStatus classifies the engine as "no-cli", and the 60s status cache then serves that false negative to every skill preamble and sync run. /sync-gbrain skips the memory stage with "gbrain CLI not on PATH" even though the CLI works. Give the shim 10s of headroom, gated on NEEDS_SHELL_ON_WINDOWS so POSIX keeps the cheap 2s probe. Applies to both resolveGbrainBin and readGbrainVersion. Observed on Windows 11, bun 1.3.14, gbrain 0.42.59.0. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
c4e2233832
commit
af23375aa2
@@ -221,6 +221,10 @@ function hashPath(p: string): string {
|
|||||||
* call share one fork-exec (~200ms saved per skill preamble).
|
* call share one fork-exec (~200ms saved per skill preamble).
|
||||||
*/
|
*/
|
||||||
const _gbrainBinCache = new Map<string, string | null>();
|
const _gbrainBinCache = new Map<string, string | null>();
|
||||||
|
// On Windows the shim is `gbrain.cmd` → `bun run cli.ts`; a cold spawn can
|
||||||
|
// exceed 2s, and a false negative here poisons the 60s status cache with
|
||||||
|
// "no-cli". Give the shim headroom; POSIX keeps the tight timeout.
|
||||||
|
const VERSION_PROBE_TIMEOUT_MS = NEEDS_SHELL_ON_WINDOWS ? 10_000 : 2_000;
|
||||||
export function resolveGbrainBin(env?: NodeJS.ProcessEnv): string | null {
|
export function resolveGbrainBin(env?: NodeJS.ProcessEnv): string | null {
|
||||||
const e = env ?? process.env;
|
const e = env ?? process.env;
|
||||||
const key = e.PATH || "";
|
const key = e.PATH || "";
|
||||||
@@ -229,7 +233,7 @@ export function resolveGbrainBin(env?: NodeJS.ProcessEnv): string | null {
|
|||||||
try {
|
try {
|
||||||
execFileSync("gbrain", ["--version"], {
|
execFileSync("gbrain", ["--version"], {
|
||||||
encoding: "utf-8",
|
encoding: "utf-8",
|
||||||
timeout: 2_000,
|
timeout: VERSION_PROBE_TIMEOUT_MS,
|
||||||
stdio: ["ignore", "ignore", "ignore"],
|
stdio: ["ignore", "ignore", "ignore"],
|
||||||
env: e,
|
env: e,
|
||||||
shell: NEEDS_SHELL_ON_WINDOWS, // #1731: gbrain is a .cmd shim on Windows
|
shell: NEEDS_SHELL_ON_WINDOWS, // #1731: gbrain is a .cmd shim on Windows
|
||||||
@@ -252,7 +256,7 @@ export function readGbrainVersion(env?: NodeJS.ProcessEnv): string {
|
|||||||
try {
|
try {
|
||||||
const out = execFileSync("gbrain", ["--version"], {
|
const out = execFileSync("gbrain", ["--version"], {
|
||||||
encoding: "utf-8",
|
encoding: "utf-8",
|
||||||
timeout: 2_000,
|
timeout: VERSION_PROBE_TIMEOUT_MS,
|
||||||
stdio: ["ignore", "pipe", "ignore"],
|
stdio: ["ignore", "pipe", "ignore"],
|
||||||
env: e,
|
env: e,
|
||||||
shell: NEEDS_SHELL_ON_WINDOWS, // #1731: gbrain is a .cmd shim on Windows
|
shell: NEEDS_SHELL_ON_WINDOWS, // #1731: gbrain is a .cmd shim on Windows
|
||||||
|
|||||||
Reference in New Issue
Block a user