From 48e4f2f45d54364a8123d603dbbca7bfe8fcc763 Mon Sep 17 00:00:00 2001 From: Aiden Cline Date: Wed, 19 Nov 2025 13:04:20 -0600 Subject: [PATCH] tweak: add bun install retries --- packages/opencode/src/bun/index.ts | 52 ++++++++++++++++++++++++------ 1 file changed, 42 insertions(+), 10 deletions(-) diff --git a/packages/opencode/src/bun/index.ts b/packages/opencode/src/bun/index.ts index 5f1847275..764be05ab 100644 --- a/packages/opencode/src/bun/index.ts +++ b/packages/opencode/src/bun/index.ts @@ -79,16 +79,48 @@ export namespace BunProc { version, }) - await BunProc.run(args, { - cwd: Global.Path.cache, - }).catch((e) => { - throw new InstallFailedError( - { pkg, version }, - { - cause: e, - }, - ) - }) + const total = 3 + const wait = 500 + + const runInstall = async (count: number = 1): Promise => { + log.info("bun install attempt", { + pkg, + version, + attempt: count, + total, + }) + await BunProc.run(args, { + cwd: Global.Path.cache, + }).catch(async (error) => { + log.warn("bun install failed", { + pkg, + version, + attempt: count, + total, + error, + }) + if (count >= total) { + throw new InstallFailedError( + { pkg, version }, + { + cause: error, + }, + ) + } + const delay = wait * count + log.info("bun install retrying", { + pkg, + version, + next: count + 1, + delay, + }) + await Bun.sleep(delay) + return runInstall(count + 1) + }) + } + + await runInstall() + parsed.dependencies[pkg] = version await Bun.write(pkgjson.name!, JSON.stringify(parsed, null, 2)) return mod