Summary (deferred — post-v1)
The interactive MCP-App bridge in @netscript/fresh-ui: the bidirectional half deferred out of FB4 (#257). A rendered MCP-UI widget can dispatch an action → tools/call → the host re-renders the widget with the new resource, all without a full round-trip through a new connection.
Load-bearing gotcha (★)
Hand the new resource to the EXISTING AppBridge — never call connect() again. A second connect() throws "AppBridge is already connected". The bridge is connect-once / update-many against a streaming host: one connection, many resource updates.
Scope
@netscript/fresh-ui MCP-UI seam (bidirectional). wave:defer (post-v1, after FB4). POC reference: eis-chat #57 (lib/mcp.ts#L78-104 + mcp-widget.tsx#L185-195).
Part of #238 · Refs #244 (E5) #257 (FB4) · POC eis-chat#57
Summary (deferred — post-v1)
The interactive MCP-App bridge in
@netscript/fresh-ui: the bidirectional half deferred out of FB4 (#257). A rendered MCP-UI widget can dispatch an action →tools/call→ the host re-renders the widget with the new resource, all without a full round-trip through a new connection.Load-bearing gotcha (★)
Hand the new resource to the EXISTING
AppBridge— never callconnect()again. A secondconnect()throws"AppBridge is already connected". The bridge is connect-once / update-many against a streaming host: one connection, many resource updates.allow-scriptsonly (noallow-same-origin) — the widget is untrusted.Scope
@netscript/fresh-uiMCP-UI seam (bidirectional). wave:defer (post-v1, after FB4). POC reference: eis-chat #57 (lib/mcp.ts#L78-104+mcp-widget.tsx#L185-195).Part of #238 · Refs #244 (E5) #257 (FB4) · POC eis-chat#57