From 30a409b2f8c971d92ba86df03b06ffe631506cb5 Mon Sep 17 00:00:00 2001 From: Jeff Emmett Date: Tue, 10 Mar 2026 19:30:27 -0700 Subject: [PATCH] =?UTF-8?q?fix(rflows):=20fix=20Openfort=20wallet=20label?= =?UTF-8?q?=20=E2=80=94=20colon=20not=20allowed=20in=20name?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Openfort rejects ':' in player name query param. Changed label from 'user:email@example.com' to just 'email@example.com'. Also improved error serialization for Openfort's non-standard APIError objects. Co-Authored-By: Claude Opus 4.6 --- modules/rflows/mod.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/modules/rflows/mod.ts b/modules/rflows/mod.ts index 1850b02..2a1f4ef 100644 --- a/modules/rflows/mod.ts +++ b/modules/rflows/mod.ts @@ -173,7 +173,7 @@ routes.post("/api/flows/user-onramp", async (c) => { const provider = 'transak'; // 1. Find or create Openfort smart wallet for this user (one wallet per email) - const wallet = await _openfort.findOrCreateWallet(`user:${email}`, { + const wallet = await _openfort.findOrCreateWallet(email, { type: 'user-onramp', email, }); @@ -241,7 +241,10 @@ routes.post("/api/flows/user-onramp", async (c) => { }); } catch (err) { console.error("[rflows] user-onramp failed:", err); - const message = err instanceof Error ? err.message : String(err); + let message: string; + if (err instanceof Error) message = err.message; + else if (err && typeof err === 'object') message = JSON.stringify(err); + else message = String(err); return c.json({ error: message }, 500); } });