"use client"; import React from "react"; type Framework = { name: string; slug: string; }; type Feature = { name: string; key: string; }; const frameworks: Framework[] = [ { name: "Built-in", slug: "built-in-agent" }, { name: "LangChain", slug: "langgraph" }, { name: "Deep Agents", slug: "deepagents" }, { name: "ADK", slug: "adk" }, { name: "Microsoft", slug: "microsoft-agent-framework" }, { name: "AWS Strands", slug: "aws-strands" }, { name: "Mastra", slug: "mastra" }, { name: "Agno", slug: "agno" }, { name: "Pydantic AI", slug: "pydantic-ai" }, { name: "CrewAI Flows", slug: "crewai-flows" }, { name: "LlamaIndex", slug: "llamaindex" }, { name: "AG2", slug: "ag2" }, { name: "Agent Spec", slug: "agent-spec" }, ]; const features: Feature[] = [ { name: "Generative UI", key: "genUI" }, { name: "Frontend Tools", key: "feTools" }, { name: "Tool Rendering", key: "toolRendering" }, { name: "MCP Apps", key: "mcpApps" }, { name: "A2UI", key: "a2ui" }, { name: "Shared State", key: "sharedState" }, { name: "Readables", key: "readables" }, { name: "Interrupts", key: "interrupts" }, { name: "State Streaming", key: "stateStreaming" }, ]; const matrix: Record> = { langgraph: { sharedState: true, feTools: true, readables: true, toolRendering: true, stateStreaming: true, genUI: true, interrupts: true, agentAppContext: true, mcpApps: true, a2ui: true, }, deepagents: { sharedState: true, feTools: true, readables: true, toolRendering: true, stateStreaming: true, genUI: true, interrupts: true, agentAppContext: true, mcpApps: true, a2ui: true, }, adk: { sharedState: true, feTools: true, readables: true, toolRendering: true, stateStreaming: false, genUI: true, interrupts: false, agentAppContext: true, mcpApps: true, a2ui: true, }, agno: { sharedState: false, feTools: true, readables: false, toolRendering: true, stateStreaming: false, genUI: true, interrupts: false, agentAppContext: true, mcpApps: true, a2ui: true, }, "crewai-flows": { sharedState: true, feTools: true, readables: true, toolRendering: true, stateStreaming: false, genUI: true, interrupts: false, agentAppContext: true, mcpApps: true, a2ui: true, }, "pydantic-ai": { sharedState: true, feTools: true, readables: true, toolRendering: true, stateStreaming: true, genUI: true, interrupts: false, agentAppContext: true, mcpApps: true, a2ui: true, }, llamaindex: { sharedState: true, feTools: true, readables: true, toolRendering: true, stateStreaming: true, genUI: true, interrupts: false, agentAppContext: true, mcpApps: true, a2ui: true, }, mastra: { sharedState: true, feTools: true, readables: true, toolRendering: true, stateStreaming: false, genUI: true, interrupts: false, agentAppContext: true, mcpApps: true, a2ui: true, }, "agent-spec": { sharedState: true, feTools: true, readables: true, toolRendering: true, stateStreaming: false, genUI: true, interrupts: false, agentAppContext: true, mcpApps: true, a2ui: true, }, ag2: { sharedState: true, feTools: true, readables: false, toolRendering: true, stateStreaming: false, genUI: true, interrupts: false, agentAppContext: true, mcpApps: true, a2ui: true, }, "microsoft-agent-framework": { sharedState: true, feTools: true, readables: true, toolRendering: true, stateStreaming: true, genUI: true, interrupts: false, agentAppContext: true, mcpApps: true, a2ui: true, }, "aws-strands": { sharedState: true, feTools: true, readables: true, toolRendering: true, stateStreaming: false, genUI: true, interrupts: false, agentAppContext: true, mcpApps: true, a2ui: true, }, "built-in-agent": { sharedState: true, feTools: true, readables: true, toolRendering: true, stateStreaming: false, genUI: true, interrupts: false, agentAppContext: true, mcpApps: true, a2ui: true, }, }; function Check() { return ( ); } function Dash() { return ( ); } export function FeatureMatrix() { return (
{frameworks.map((fw) => ( ))} {features.map((feature, i) => ( {frameworks.map((fw) => ( ))} ))}
Feature {fw.name}
{feature.name} {matrix[fw.slug]?.[feature.key] ? : }
); }