Fix RPC bridge response unwrapping and export

- Bridge was double-wrapping responses ({ok, result: {ok, base64}}) — now
  forwards the server's payload directly, stripping only type/id fields
- Compute layouts after mutations so auto-layout frames position correctly
- Export createElement and resolveToTree from core for bridge JSX transform
- Fix package.json exports: remove node condition that pointed to non-existent
  dist/, use publishConfig.exports for npm consumers
This commit is contained in:
Danila Poyarkov 2026-03-07 20:27:57 +03:00
parent 1f04926166
commit c9e755a181

View file

@ -69,7 +69,10 @@ function handleBrowserMessage(data: string) {
pending.delete(msg.id) pending.delete(msg.id)
clearTimeout(req.timer) clearTimeout(req.timer)
if (msg.ok === false) req.reject(new Error(msg.error ?? 'RPC failed')) if (msg.ok === false) req.reject(new Error(msg.error ?? 'RPC failed'))
else req.resolve(msg.result) else {
const { type: _, id: __, ...payload } = msg
req.resolve(payload)
}
} }
} catch { } catch {
// ignore malformed messages // ignore malformed messages
@ -130,7 +133,7 @@ export function startAutomationBridge(server: ViteServer) {
try { try {
body = await preprocessRpc(body as Record<string, unknown>) body = await preprocessRpc(body as Record<string, unknown>)
const result = await sendToBrowser(body as Record<string, unknown>) const result = await sendToBrowser(body as Record<string, unknown>)
return c.json({ ok: true, result }) return c.json(result)
} catch (e) { } catch (e) {
const msg = e instanceof Error ? e.message : String(e) const msg = e instanceof Error ? e.message : String(e)
return c.json({ ok: false, error: msg }, 502) return c.json({ ok: false, error: msg }, 502)