Files
copilotkit__copilotkit/scripts
yannj-fr f4029e49d6 feat(react-core): consume shared mcp-apps-renderer, drop direct MCP deps
Reduce MCPAppsActivityRenderer from a 786-line self-contained implementation to
a thin React adapter over the framework-agnostic bindMcpApp:

- the React shell owns the iframe (create / mount / size / remove) and wires the
  session hooks (onResource, onSizeChanged, onError) to React state; all protocol
  logic (AppBridge, sandbox proxy, request queue, ui/message + open-link, tool
  input/result) now lives in @copilotkit/mcp-apps-renderer
- the bridge-free activity surface (MCPAppsActivityType, content schema, follow-up
  runner) is re-exported statically from the package's new ./activity entry, so
  registering the activity does not pull the ext-apps bundle
- bindMcpApp is loaded via a lazy import("@copilotkit/mcp-apps-renderer") inside
  the effect, keeping ext-apps (~40-50 kB gzipped) out of the main chunk

Dependency move (FR-007): react-core drops its direct @modelcontextprotocol/ext-apps
dependency, the @modelcontextprotocol/sdk peer + devDependency, and the zod >=3.25
peer floor (reverted to >=3.0.0), and depends on @copilotkit/mcp-apps-renderer
instead. The package becomes the sole owner of the MCP libraries: sdk moves from a
peer to a dependency there (satisfying ext-apps' required sdk peer), and a
bridge-free ./activity subpath is exported.

Register the package in the monorepo release scope and regenerate the public API
manifest. react-core's MCP e2e suite (37 tests across 4 files) stays green;
check-types + oxlint clean; behavior-preserving.
2026-09-04 05:59:13 +01:00
..