branch:
Home.tsx
5382 bytesRaw
import { Link } from "react-router-dom";
import { Text, Surface } from "@cloudflare/kumo";
const features = [
{
category: "Core",
items: [
{
name: "State",
path: "/core/state",
description: "Real-time state synchronization"
},
{
name: "Callable",
path: "/core/callable",
description: "@callable decorator for RPC"
},
{
name: "Streaming",
path: "/core/streaming",
description: "Streaming RPC responses"
},
{
name: "Schedule",
path: "/core/schedule",
description: "Cron, delayed, and interval tasks"
},
{
name: "Connections",
path: "/core/connections",
description: "WebSocket lifecycle and broadcast"
},
{ name: "SQL", path: "/core/sql", description: "Direct SQL queries" },
{
name: "Routing",
path: "/core/routing",
description: "Agent naming strategies"
},
{
name: "Readonly",
path: "/core/readonly",
description: "Read-only agent access"
},
{
name: "Retry",
path: "/core/retry",
description: "Retry with backoff and shouldRetry"
}
]
},
{
category: "AI",
items: [
{
name: "Chat",
path: "/ai/chat",
description: "AI chat with message history"
},
{
name: "Tools",
path: "/ai/tools",
description: "Client-side tool execution"
},
{
name: "Codemode",
path: "/ai/codemode",
description: "AI code generation and editing"
}
]
},
{
category: "MCP",
items: [
{
name: "Server",
path: "/mcp/server",
description: "Create MCP tools and resources"
},
{
name: "Client",
path: "/mcp/client",
description: "Connect to MCP servers"
},
{
name: "OAuth",
path: "/mcp/oauth",
description: "OAuth authentication flow"
}
]
},
{
category: "Workflows",
items: [
{
name: "Basic",
path: "/workflow/basic",
description: "Durable multi-step execution"
},
{
name: "Approval",
path: "/workflow/approval",
description: "Human-in-the-loop patterns"
}
]
},
{
category: "Multi-Agent",
items: [
{
name: "Supervisor",
path: "/multi-agent/supervisor",
description: "Manager-child agent pattern"
},
{
name: "Chat Rooms",
path: "/multi-agent/rooms",
description: "Lobby with room agents"
},
{
name: "Workers",
path: "/multi-agent/workers",
description: "Fan-out parallel processing"
},
{
name: "Pipeline",
path: "/multi-agent/pipeline",
description: "Chain of responsibility"
}
]
},
{
category: "Voice",
items: [
{
name: "Voice Chat",
path: "/voice/chat",
description: "Real-time voice conversation with STT/TTS"
}
]
},
{
category: "Email",
items: [
{
name: "Receive",
path: "/email/receive",
description: "Receive real emails"
},
{
name: "Secure Replies",
path: "/email/secure",
description: "HMAC-signed replies"
}
]
}
];
export function Home() {
return (
<div className="h-full flex flex-col">
<header className="p-4 md:p-6 border-b border-kumo-line">
<Text variant="heading1">Agents SDK Playground</Text>
<div className="mt-1">
<Text variant="secondary" size="sm">
Interactive demos for every feature of the Cloudflare Agents SDK
</Text>
</div>
</header>
<div className="flex-1 overflow-y-auto p-4 md:p-6">
<div className="max-w-4xl">
<div className="mb-8">
<Text variant="secondary">
Select a feature to explore its capabilities. Each demo includes
interactive controls, real-time event logging, and code examples
you can copy.
</Text>
</div>
<div className="space-y-8">
{features.map((section) => (
<div key={section.category}>
<div className="uppercase tracking-wider mb-3">
<Text variant="secondary" size="xs" bold>
{section.category}
</Text>
</div>
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-3">
{section.items.map((item) => (
<Link key={item.path} to={item.path} className="block">
<Surface className="p-4 rounded-lg ring ring-kumo-line hover:ring-kumo-interact transition-colors">
<Text bold>{item.name}</Text>
<div className="mt-1">
<Text variant="secondary" size="xs">
{item.description}
</Text>
</div>
</Surface>
</Link>
))}
</div>
</div>
))}
</div>
</div>
</div>
</div>
);
}