From d98e35d3336da4f81aa2ffe66c7fb171c4745d7d Mon Sep 17 00:00:00 2001 From: Zhou Xiao Date: Sat, 9 May 2026 10:52:01 +0800 Subject: [PATCH] fix(ble): handle permission reply fallbacks (cherry picked from commit ad7189e7ddd71aa301781f7efcb401d95b91534e) Co-authored-by: Zhou Xiao --- .../demos/opencode/src/opencode-permission-reply.ts | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/tools/ble/ble_uart_bridge/demos/opencode/src/opencode-permission-reply.ts b/tools/ble/ble_uart_bridge/demos/opencode/src/opencode-permission-reply.ts index 6ce20b8d172..8d4fe00c37c 100644 --- a/tools/ble/ble_uart_bridge/demos/opencode/src/opencode-permission-reply.ts +++ b/tools/ble/ble_uart_bridge/demos/opencode/src/opencode-permission-reply.ts @@ -90,7 +90,7 @@ export async function replyToOpenCodePermission( return } - if (typeof client._client?.post === "function" && message !== undefined) { + if (typeof client._client?.post === "function") { // In TUI/plugin runtime, serverUrl can be a phantom URL: a plain // fetch(serverUrl) may fail or hit the wrong OpenCode instance. The // injected HeyAPI client uses OpenCode's in-process app.fetch() binding, @@ -112,7 +112,7 @@ export async function replyToOpenCodePermission( return } - if (serverUrl !== undefined && directory !== undefined && message !== undefined) { + if (serverUrl !== undefined && directory !== undefined) { debugLog("using OpenCode raw v2 permission.reply endpoint") try { const response = await fetch(new URL(`/permission/${encodeURIComponent(requestID)}/reply`, serverUrl), { @@ -126,7 +126,11 @@ export async function replyToOpenCodePermission( if (!response.ok) { throw new Error(`HTTP ${response.status} ${await response.text()}`) } - debugLog("OpenCode permission response completed", await response.json()) + try { + debugLog("OpenCode permission response completed", await response.json()) + } catch { + debugLog("OpenCode permission response completed (non-JSON body)") + } return } catch (error) { debugLog("OpenCode raw v2 permission.reply failed, trying fallback", { error: String(error) })