From 725f6582603148ed44357459c378259bd8249275 Mon Sep 17 00:00:00 2001 From: ry2009 <134240944+ry2009@users.noreply.github.com> Date: Sun, 7 Dec 2025 23:22:21 -0500 Subject: [PATCH] fix: ensure Auth.all returns valid objs (#5128) --- packages/opencode/src/auth/index.ts | 15 +++++++++------ packages/opencode/src/cli/cmd/auth.ts | 2 +- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/packages/opencode/src/auth/index.ts b/packages/opencode/src/auth/index.ts index 883b9acc6..e6adb77cf 100644 --- a/packages/opencode/src/auth/index.ts +++ b/packages/opencode/src/auth/index.ts @@ -35,16 +35,19 @@ export namespace Auth { const filepath = path.join(Global.Path.data, "auth.json") export async function get(providerID: string) { - const file = Bun.file(filepath) - return file - .json() - .catch(() => ({})) - .then((x) => x[providerID] as Info | undefined) + const auth = await all() + return auth[providerID] } export async function all(): Promise> { const file = Bun.file(filepath) - return file.json().catch(() => ({})) + const data = await file.json().catch(() => ({} as Record)) + return Object.entries(data).reduce((acc, [key, value]) => { + const parsed = Info.safeParse(value) + if (!parsed.success) return acc + acc[key] = parsed.data + return acc + }, {} as Record) } export async function set(key: string, info: Info) { diff --git a/packages/opencode/src/cli/cmd/auth.ts b/packages/opencode/src/cli/cmd/auth.ts index 1f37ec805..af4424e24 100644 --- a/packages/opencode/src/cli/cmd/auth.ts +++ b/packages/opencode/src/cli/cmd/auth.ts @@ -29,7 +29,7 @@ export const AuthListCommand = cmd({ const homedir = os.homedir() const displayPath = authPath.startsWith(homedir) ? authPath.replace(homedir, "~") : authPath prompts.intro(`Credentials ${UI.Style.TEXT_DIM}${displayPath}`) - const results = await Auth.all().then((x) => Object.entries(x)) + const results = Object.entries(await Auth.all()) const database = await ModelsDev.get() for (const [providerID, result] of results) {