diff --git a/README.md b/README.md index c9aae3f7b..17cb62087 100644 --- a/README.md +++ b/README.md @@ -101,7 +101,7 @@ pnpm start ## 🤝 Contributing -All contributions are welcome! Please check out our [Contributing Guide](CONTRIBUTION.md) for details on how to get started. +All contributions are welcome! Please check out our [Contributing Guide](CONTRIBUTING.md) for details on how to get started. ## 🌍 Community diff --git a/apps/adk-web/README.md b/apps/adk-web/README.md index 74691c590..fda29720a 100644 --- a/apps/adk-web/README.md +++ b/apps/adk-web/README.md @@ -259,7 +259,7 @@ We welcome various types of contributions: - **[Check existing issues](https://github.com/IQAIcom/adk-ts/issues)** for similar questions or problems - **[Ask in discussions](https://github.com/IQAIcom/adk-ts/discussions)** for clarification on development topics -- **[Contributing Guide](../../CONTRIBUTION.md)** - Main project contribution guidelines +- **[Contributing Guide](../../CONTRIBUTING.md)** - Main project contribution guidelines --- diff --git a/apps/docs/README.md b/apps/docs/README.md index 27c3592c6..3035a5781 100644 --- a/apps/docs/README.md +++ b/apps/docs/README.md @@ -135,7 +135,7 @@ We welcome various types of contributions to improve the documentation: - **[Check existing issues](https://github.com/IQAIcom/adk-ts/issues)** for similar questions or problems - **[Ask in discussions](https://github.com/IQAIcom/adk-ts/discussions)** for clarification on documentation topics -For more detailed contribution guidelines, see the main project's [Contributing Guide](../../CONTRIBUTION.md). +For more detailed contribution guidelines, see the main project's [Contributing Guide](../../CONTRIBUTING.md). ## 📚 Resources for Contributors @@ -149,7 +149,7 @@ For more detailed contribution guidelines, see the main project's [Contributing - **[ADK-TS Repository](https://github.com/IQAIcom/adk-ts)** - Main framework repository - **[Live Documentation](https://adk.iqai.com)** - Published documentation site -- **[Contributing Guide](../../CONTRIBUTION.md)** - General project contribution guidelines +- **[Contributing Guide](../../CONTRIBUTING.md)** - General project contribution guidelines - **[Examples](../../apps/examples/)** - Code examples and tutorials ### Writing & Style Resources diff --git a/apps/docs/app/(home)/_components/footer.tsx b/apps/docs/app/(home)/_components/footer.tsx index 7b1057546..657c0fd97 100644 --- a/apps/docs/app/(home)/_components/footer.tsx +++ b/apps/docs/app/(home)/_components/footer.tsx @@ -91,7 +91,7 @@ const developerLinks = [ ]; const resourceLinks = [ - { href: "https://blog.iqai.com/", text: "Blog", external: true }, + { href: "https://blog.iqai.com/tag/dev//", text: "Blog", external: true }, { href: "/showcase", text: "Showcase" }, { href: "https://github.com/IQAIcom/adk-ts-samples", @@ -112,7 +112,7 @@ const supportLinks = [ external: true, }, { - href: "https://github.com/IQAIcom/adk-ts/blob/main/CONTRIBUTION.md", + href: "https://github.com/IQAIcom/adk-ts/blob/main/CONTRIBUTING.md", text: "Contributing", external: true, }, diff --git a/apps/docs/app/layout.config.tsx b/apps/docs/app/layout.config.tsx index 02907bae9..f36a00ce2 100644 --- a/apps/docs/app/layout.config.tsx +++ b/apps/docs/app/layout.config.tsx @@ -30,7 +30,7 @@ const baseNavLinks = [ }, { text: "Blog", - url: "https://blog.iqai.com/", + url: "https://blog.iqai.com/tag/dev//", icon: , external: true, }, @@ -78,7 +78,7 @@ const docsResourceMenuItems = [ ...resourceMenuItems, { text: "Blog", - url: "https://blog.iqai.com/", + url: "https://blog.iqai.com/tag/dev//", icon: , external: true, }, diff --git a/apps/docs/app/new-landing/_components/built-for-developers.tsx b/apps/docs/app/new-landing/_components/built-for-developers.tsx index 56d654e67..b611687d7 100644 --- a/apps/docs/app/new-landing/_components/built-for-developers.tsx +++ b/apps/docs/app/new-landing/_components/built-for-developers.tsx @@ -32,7 +32,7 @@ const dxHighlights = [ }, { icon: LayoutDashboard, - title: "7 Starter Templates", + title: "7+ Starter Templates", description: "RAG, chat, workflow & more out of the box", }, { diff --git a/apps/docs/app/new-landing/_components/complete-stack.tsx b/apps/docs/app/new-landing/_components/complete-stack.tsx index ef22fe326..5a3e087ce 100644 --- a/apps/docs/app/new-landing/_components/complete-stack.tsx +++ b/apps/docs/app/new-landing/_components/complete-stack.tsx @@ -1,11 +1,369 @@ +"use client"; + +import { motion } from "motion/react"; +import { Zap, Flame, FileStack, Rocket } from "lucide-react"; import { SectionWrapper } from "./section-wrapper"; const CompleteStackSection = () => { return ( - -
CompleteStackSection
+ + {/* Section Header */} +
+ Developer Platform +

The Complete ADK-TS Stack

+

+ Not just a framework, but a complete development experience. Every + layer you need, from project scaffolding to production observability. +

+
+ + {/* 2x2 Grid of Capabilities */} +
+ {/* CLI Card */} + +

ADK-TS CLI

+ +

+ The official CLI for ADK-TS. Scaffold projects from templates, run + agents with hot-reload, and launch a web UI for testing — all in one + tool. +

+ + {/* Stats grid */} +
+
+
+
+
+
+ +
+
+
+ {"<"}3s +
+
Project ready
+
+
+
+ +
+
+
+
+
+ +
+
+
7+
+
Starter templates
+
+
+
+ +
+
+
+
+
+ +
+
+
HMR
+
Hot reload
+
+
+
+ +
+
+
+
+
+ +
+
+
Web
+
Browser UI
+
+
+
+
+ +
COMMANDS
+ +
+
+ $ adk new my-agent +
+
+ $ adk run +
+
+ $ adk web +
+
+ $ adk serve +
+
+ + + {/* Sessions & Memory Card */} + +

+ Sessions & Memory +

+ +

+ Persistent session state across every conversation. Multiple storage + backends with a unified interface and automatic conversation + threading. +

+ + {/* Stack visualization */} +
+
+
+
+ + In-Memory + +
+
+
+
+ Zero-config local development, no persistence needed. +
+
+ +
+
+
+ + PostgreSQL/SQLite + +
+
+
+ Persistent sessions with Drizzle ORM and full-text search. +
+
+ +
+
+
+ + Vertex AI + +
+
+
+ Google Cloud-native session storage for production scale. +
+
+
+ +
KEY FEATURES
+ +
+
+
+ Automatic conversation threading +
+
+
+ Context window management +
+
+
+ Cross-agent memory sharing +
+
+
+ Vertex AI RAG memory integration +
+
+
+ Unified Memory API (combine multiple sources) +
+
+ + + {/* Workflows & Extensibility Card */} + +

+ Workflows & Extensibility +

+ +

+ Orchestrate complex agents with a built-in workflow engine and + plugin system. Intercept events, manage long-running tasks, and + extend agent behavior with ease. +

+ + {/* Lifecycle flow */} +
+
LIFECYCLE HOOKS
+ +
+
+
+
beforeModelCallback
+
+ Inspect and transform prompts before model execution +
+
+ +
+
+
beforeToolCallback
+
+ Observe or override tool execution +
+
+ +
+
+
afterModelCallback
+
+ Post-process and validate model responses +
+
+ +
+
+
afterToolCallback
+
+ Capture and transform tool results +
+
+ +
+
+
beforeAgentCallback
+
+ Intercept agent execution before any step +
+
+ +
+
+
afterAgentCallback
+
+ Inspect final agent output and execution trace +
+
+
+
+ +
BUILT-IN PLUGINS
+ +
+
+ ModelFallbackPlugin +
+
+ LangfusePlugin +
+
+ ReflectRetryToolPlugin +
+
+ ToolFilterPlugin +
+
+ + + {/* Reliability & Observability Card */} + +

+ Reliability & Observability +

+ +

+ Production-grade observability and systematic evaluation. Monitor + performance with OpenTelemetry and test agent behavior with built-in + evaluation suites. +

+ + {/* Checkmarks list */} +
+
+
+
+
+
+ Distributed tracing (OTLP) with automatic context propagation +
+
+ +
+
+
+
+
+ ADK-TS semantic spans for agents, tools, and models +
+
+ +
+
+
+
+
+ Structured logs correlated with traces and requests +
+
+
+ +
MONITORING PLATFORMS
+ +
+
+ Langfuse (built-in) +
+
+ Datadog +
+
+ Grafana +
+
+ Jaeger +
+
+ New Relic +
+
+ +
); }; - export default CompleteStackSection; diff --git a/apps/docs/app/new-landing/_components/cta.tsx b/apps/docs/app/new-landing/_components/cta.tsx index c940e6012..ccba1d6ad 100644 --- a/apps/docs/app/new-landing/_components/cta.tsx +++ b/apps/docs/app/new-landing/_components/cta.tsx @@ -34,11 +34,13 @@ const CTASection = () => { href="/docs" className="inline-flex text-sm lg:text-base items-center gap-2 px-5 py-3.5 lg:py-4.5 rounded-md bg-primary text-white font-medium transition-colors hover:bg-primary/90 leading-0" > - Read Docs + Read the Docs Explore Templates diff --git a/apps/docs/app/new-landing/_components/footer.data.tsx b/apps/docs/app/new-landing/_components/footer.data.tsx index 1518fe5a2..c9348fa94 100644 --- a/apps/docs/app/new-landing/_components/footer.data.tsx +++ b/apps/docs/app/new-landing/_components/footer.data.tsx @@ -96,7 +96,7 @@ export const DOCUMENTATION_LINKS = [ ]; export const RESOURCE_LINKS = [ - { href: "https://blog.iqai.com/", text: "Blog", external: true }, + { href: "https://blog.iqai.com/tag/dev//", text: "Blog", external: true }, { href: "/showcase", text: "Showcase" }, { href: "https://github.com/IQAIcom/adk-ts-samples", @@ -117,7 +117,7 @@ export const SUPPORT_LINKS = [ external: true, }, { - href: "https://github.com/IQAIcom/adk-ts/blob/main/CONTRIBUTION.md", + href: "https://github.com/IQAIcom/adk-ts/blob/main/CONTRIBUTING.md", text: "Contributing", external: true, }, diff --git a/apps/docs/app/new-landing/_components/get-started.tsx b/apps/docs/app/new-landing/_components/get-started.tsx index 3729bb97e..fe7925ef6 100644 --- a/apps/docs/app/new-landing/_components/get-started.tsx +++ b/apps/docs/app/new-landing/_components/get-started.tsx @@ -19,7 +19,7 @@ const steps = [ labelColor: "text-[#4ADE80]", title: "Configure Your Agent", description: - "Choose your LLM provider and model, then add instructions, tools, and sub-agents.", + "Choose any supported model and add instructions, tools, or sub-agents.", code: [ { text: "import { AgentBuilder, GoogleSearchTool,", @@ -42,9 +42,22 @@ const steps = [ }, { text: ' assistant")', color: "text-[#98C379]" }, { - text: ' .withInstruction("Gather information and', + text: ' .withInstruction("Gather information', color: "text-[#98C379]", }, + { + text: ' and summarize findings.")', + color: "text-[#98C379]", + }, + { + text: " .withTools(new GoogleSearchTool(),", + color: "text-[#61AFEF]", + }, + { + text: " new LoadMemoryTool())", + color: "text-[#61AFEF]", + }, + { text: " .build();", color: "text-[#ABB2BF]" }, ], }, { @@ -78,7 +91,7 @@ const GetStartedSection = () => { {/* Section header */}
Getting Started -

Create Agents in Minutes

+

Create Your First Agent in Minutes

Start with a simple agent or scale to a full multi-agent system using the same strongly-typed AgentBuilder API. diff --git a/apps/docs/app/new-landing/_components/hero.tsx b/apps/docs/app/new-landing/_components/hero.tsx index 542ae3295..3033d0cb5 100644 --- a/apps/docs/app/new-landing/_components/hero.tsx +++ b/apps/docs/app/new-landing/_components/hero.tsx @@ -31,14 +31,14 @@ function ClipboardCopyButton({ text }: { text: string }) { const cliCommand = "npx @iqai/adk-cli new"; const codeSnippet = dedent` - const workflow = AgentBuilder - .asSequential([researchAgent,analysisAgent]) - .withTools([GoogleSearch, DataProcessor]) - .withMemory(vectorMemoryService); - - const result = await workflow.ask( - "Analyze market trends in AI" - ); +const { runner } = await AgentBuilder + .create("research-pipeline") + .withModel("gemini-2.5-flash") + .asSequential([researcher, analyst, summarizer]) + .withInstruction("Research, analyze and summarize") + .build(); + +const result = await runner.ask("AI market trends"); `; export function Hero() { @@ -126,16 +126,16 @@ export function Hero() { initial={{ opacity: 0, y: 30 }} animate={{ opacity: 1, y: 0 }} transition={{ duration: 0.6, delay: 0.4 }} - className="w-full max-w-117.5 mx-auto lg:mx-0 lg:ml-auto" + className="w-full max-w-120 mx-auto lg:mx-0 lg:ml-auto" >

- multi-agent-system.ts + agent-pipeline.ts
-
+
diff --git a/apps/docs/app/new-landing/_components/interactive-simulations.tsx b/apps/docs/app/new-landing/_components/interactive-simulations.tsx index 043c8aa0e..9f8e240fe 100644 --- a/apps/docs/app/new-landing/_components/interactive-simulations.tsx +++ b/apps/docs/app/new-landing/_components/interactive-simulations.tsx @@ -1,11 +1,1155 @@ +"use client"; + +import { useState, useRef, useEffect } from "react"; +import { motion } from "motion/react"; import { SectionWrapper } from "./section-wrapper"; +import { Play, RotateCw, Clock, Zap, Target } from "lucide-react"; + +interface DemoCardProps { + title: string; + subtitle: string; + description: string; + latency: string; + tokens: string; + accuracy?: string; + agents: Array<{ + name: string; + label: string; + }>; + inputLabel?: string; + outputLabel?: string; + hasInput?: boolean; + hasOutput?: boolean; + patternLabel?: string; +} + +function DemoCard({ + title, + subtitle, + description, + latency, + tokens, + accuracy, + agents, + inputLabel = "INPUT", + hasInput = true, + patternLabel, +}: DemoCardProps) { + const [isPlaying, setIsPlaying] = useState(false); + const [activeAgent, setActiveAgent] = useState(-1); + const [logs, setLogs] = useState([]); + const logContainerRef = useRef(null); + + // Auto-scroll to bottom when logs update + // biome-ignore lint/correctness/useExhaustiveDependencies: logs triggers scroll on update + useEffect(() => { + if (logContainerRef.current) { + logContainerRef.current.scrollTop = logContainerRef.current.scrollHeight; + } + }, [logs]); + + const generateDetailedLogs = (agent: { name: string; label: string }) => { + const timestamp = new Date().toLocaleTimeString("en-US", { hour12: false }); + return [ + `[${timestamp}] 🚀 Initializing ${agent.name} agent...`, + `[${timestamp}] ⚙️ Loading model: gemini-2.5-flash`, + `[${timestamp}] 📥 Processing input: ${agent.label}`, + `[${timestamp}] 🔄 Executing task...`, + `[${timestamp}] ✅ ${agent.name} completed successfully`, + `[${timestamp}] 📊 Tokens used: ${Math.floor(Math.random() * 500 + 200)}`, + `[${timestamp}] ⏱️ Execution time: ${Math.floor(Math.random() * 150 + 50)}ms`, + "", + ]; + }; + + const startSimulation = async () => { + if (isPlaying) { + setIsPlaying(false); + setActiveAgent(-1); + return; + } + + setIsPlaying(true); + setLogs([ + `[${new Date().toLocaleTimeString("en-US", { hour12: false })}] 🎬 Starting multi-agent pipeline...`, + "", + ]); + setActiveAgent(-1); + + // Execute agents one by one sequentially + for (let i = 0; i < agents.length; i++) { + await new Promise((resolve) => setTimeout(resolve, 500)); + setActiveAgent(i); + + const agentLogs = generateDetailedLogs(agents[i]); + for (const log of agentLogs) { + await new Promise((resolve) => setTimeout(resolve, 150)); + setLogs((prev) => [...prev, log]); + } + + setActiveAgent(-1); + await new Promise((resolve) => setTimeout(resolve, 300)); + } + + setLogs((prev) => [ + ...prev, + `[${new Date().toLocaleTimeString("en-US", { hour12: false })}] 🎉 Pipeline completed successfully`, + `[${new Date().toLocaleTimeString("en-US", { hour12: false })}] 📈 Total execution time: ${latency}`, + `[${new Date().toLocaleTimeString("en-US", { hour12: false })}] 🔢 Total tokens: ${tokens}`, + ]); + setIsPlaying(false); + }; + + const resetSimulation = () => { + setIsPlaying(false); + setActiveAgent(-1); + setLogs([]); + }; + + return ( +
+ {/* Header Section */} +
+
+

{title}

+

{subtitle}

+
+ +

+ {description} +

+ + {/* Metrics */} +
+
+ +
+
+ Latency: +
+
{latency}
+
+
+
+ +
+
+ Tokens: +
+
{tokens}
+
+
+ {accuracy && ( +
+ +
+
+ Accuracy: +
+
+ {accuracy} +
+
+
+ )} +
+
+ + {/* Body Section - Two Columns */} +
+ {/* LEFT - Node Graph Visualization */} +
+ {patternLabel && ( +
+ {patternLabel} +
+ )} + +
+ + {/* RIGHT - Terminal Window */} +
+ {/* Window Header - macOS Style */} +
+
+
+
+
+
+
agent-output.log
+ {/* Control Buttons - Relocated here */} +
+ + +
+
+ + {/* Window Content */} +
+
+ {logs.length === 0 ? ( +
+ Press Play to start simulation +
+ ) : ( + logs.map((log, index) => ( + + {log} + + )) + )} + {isPlaying && ( + + ▊ + + )} +
+
+
+
+
+ ); +} const InteractiveSimulationsSection = () => { return ( - -
InteractiveSimulationsSection
+ + {/* Section Header */} +
+ Interactive Simulations +

See Multi-Agent Execution in Action

+

+ Interactive simulations of real multi-agent execution flows. See how + agents coordinate, call tools, and generate structured outputs step by + step. +

+
+ + {/* Demo Cards */} +
+ + + + + + + + + + + +
); }; - export default InteractiveSimulationsSection; diff --git a/apps/docs/app/new-landing/_components/mcp-servers.tsx b/apps/docs/app/new-landing/_components/mcp-servers.tsx index 3e68b4f8a..83aab1064 100644 --- a/apps/docs/app/new-landing/_components/mcp-servers.tsx +++ b/apps/docs/app/new-landing/_components/mcp-servers.tsx @@ -1,11 +1,447 @@ +"use client"; + +import { useState } from "react"; +import { motion, AnimatePresence } from "motion/react"; +import { ArrowRight } from "lucide-react"; import { SectionWrapper } from "./section-wrapper"; +import Link from "next/link"; + +interface MCPHighlight { + name: string; + mcpName: string; + description: string; + features: string[]; +} + +interface CategoryContent { + id: string; + label: string; + description: string; + highlights: MCPHighlight[]; +} + +const categories: CategoryContent[] = [ + { + id: "defi", + label: "Blockchain & DeFi", + description: + "Connect agents to on-chain protocols, DEX liquidity, and blockchain execution across multiple networks.", + highlights: [ + { + name: "ABI Decoder", + mcpName: "McpAbi", + description: + "Decode and interact with smart contract ABIs for any on-chain address.", + features: ["ABI fetch", "Function decoding", "Event parsing"], + }, + { + name: "NEAR Intents", + mcpName: "McpNearIntents", + description: + "Execute cross-chain swaps and asset moves via NEAR's intent system without managing bridges.", + features: [ + "Cross-chain intents", + "Swap execution", + "Chain abstraction", + ], + }, + { + name: "Odos", + mcpName: "McpOdos", + description: + "Aggregated order routing across 100+ DEXs on 20+ chains for optimal swap execution and minimal slippage.", + features: [ + "Multi-hop optimization", + "20+ chains", + "100+ DEX integrations", + ], + }, + ], + }, + { + id: "market-data", + label: "Market Data", + description: + "Give agents real-time access to crypto prices, protocol TVL, wallet portfolios, and exchange data.", + highlights: [ + { + name: "DeFi Llama", + mcpName: "McpDefillama", + description: + "Access comprehensive DeFi protocol data, including TVL, yield rates, and protocol revenue.", + features: ["Real-time TVL", "Protocol revenue", "200+ chain support"], + }, + { + name: "DeBank", + mcpName: "McpDebank", + description: + "Track wallet portfolios, DeFi positions, and NFT holdings across multiple chains.", + features: [ + "Multi-chain portfolio", + "DeFi position analysis", + "NFT valuation", + ], + }, + { + name: "CoinGecko", + mcpName: "McpCoinGecko", + description: + "Access real-time and historical cryptocurrency market data from CoinGecko's free API.", + features: [ + "Price feeds", + "Market cap rankings", + "Historical OHLCV data", + ], + }, + ], + }, + { + id: "prediction", + label: "Prediction", + description: + "Build agents that monitor odds, place positions, and aggregate signals across prediction and event markets.", + highlights: [ + { + name: "Polymarket", + mcpName: "McpPolymarket", + description: + "Access Polymarket's decentralized prediction markets for real-time odds, position management, and historical resolution data.", + features: [ + "Real-time market odds", + "Order placement", + "Historical resolution", + ], + }, + { + name: "Kalshi", + mcpName: "McpKalshi", + description: + "CFTC-regulated event contracts marketplace for US-based prediction markets.", + features: [ + "Regulated trading", + "Economic & Political Events", + "Settlement Tracking", + ], + }, + { + name: "Limitless", + mcpName: "McpLimitless", + description: + "Access Limitless prediction markets for question-based event contracts.", + features: ["Market discovery", "Position tracking", "Settlement data"], + }, + ], + }, + { + id: "messaging", + label: "Messaging", + description: + "Give agents a presence in messaging platforms. Send messages, handle commands, and manage communities.", + highlights: [ + { + name: "Telegram", + mcpName: "McpTelegram", + description: + "Build Telegram bots with full ADK-TS agent capabilities — messaging, commands, and group management.", + features: [ + "Bot Messaging", + "Command Handling", + "Group management", + "Media Uploads", + ], + }, + { + name: "Discord", + mcpName: "McpDiscord", + description: + "Create Discord bots powered by ADK-TS agents for slash commands, role management, and rich embeds.", + features: [ + "Slash commands", + "Role management", + "Voice integration", + "Embeds & reactions", + ], + }, + ], + }, + { + id: "ai-data", + label: "AI & Data", + description: + "Specialized MCPs for agent orchestration, knowledge bases, and utilities", + highlights: [ + { + name: "NEAR Agent", + mcpName: "McpNearAgent", + description: + "Build and deploy AI agents on NEAR blockchain with intent-based interactions", + features: [ + "On-chain agent execution", + "Intent routing", + "Smart contract calls", + ], + }, + { + name: "IQ Wiki", + mcpName: "McpIqWiki", + description: + "Access decentralized knowledge base for blockchain and crypto information", + features: [ + "Structured knowledge retrieval", + "Semantic search", + "Fact verification", + ], + }, + { + name: "Filesystem & Memory", + mcpName: "McpFilesystem / McpMemory", + description: + "Essential utilities for file operations and persistent memory management", + features: [ + "File read/write/search", + "Session persistence", + "Context retention", + ], + }, + ], + }, +]; const MCPServersSection = () => { + const [activeTab, setActiveTab] = useState("defi"); + const activeCategory = + categories.find((cat) => cat.id === activeTab) || categories[0]; + return ( -
MCPServersSection
+ {/* Section Header */} +
+ Model Context Protocol (MCP) +

Pre-Built MCP Servers

+

+ Production-ready MCP servers built by IQ AI for DeFi, market data, + messaging, prediction markets, and more. Use them with ADK-TS, other + agent frameworks, or any MCP-compatible runtime. +

+
+ +
+ +
+ {/* Explore All MCPs button */} + + + Browse All MCP Servers + + + + + {/* Overview Stats */} +
+
+
20+
+
MCP Servers
+
+
+
100%
+
TypeScript First
+
+
+
MIT
+
MIT Licensed
+
+
+
+
+
+ + {/* Horizontal Tabs */} +
+
+ {categories.map((category, index) => ( + + ))} +
+
+ + {/* Tab Content */} + + + {/* Category Description */} +
+

+ {activeCategory.description} +

+
+ + {/* MCP Highlights Grid */} +
+ {activeCategory.highlights.map((highlight) => ( +
+
+
+ {highlight.mcpName} +
+

{highlight.name}

+

+ {highlight.description} +

+
+ +
+ {highlight.features.map((feature) => ( +
+
+
{feature}
+
+ ))} +
+
+ ))} + + {/* Bot Animation - Only show for communication tab */} + {activeTab === "communication" && ( + +
+ + + MCP Communication + +
+
+ )} +
+ + {/* Quick Integration Example */} +
+
+ Quick Integration +
+
+
+								{`import { AgentBuilder, ${activeCategory.highlights[0].mcpName} } from "@iqai/adk";
+
+const toolset = ${activeCategory.highlights[0].mcpName}();
+const tools = await toolset.getTools();
+
+const { runner } = await AgentBuilder.create("my-agent")
+  .withModel("gemini-2.5-flash")
+  .withTools(...tools)
+  .build();`}
+							
+
+
+ + + + {/* Compatibility Footer */} + +
+
COMPATIBILITY
+
+
+ ADK-TS v2.0+ +
+
+ Standalone Usage +
+
+ Node.js 18+ +
+
+ TypeScript 5+ +
+
+
+
+ + {/* External MCP callout */} +
+

+ Not just IQ AI servers. +

+

+ ADK-TS connects to any MCP server from the ecosystem — + Anthropic's official servers, community servers, or servers you + build yourself using the{" "} + mcp-starter template. +

+
); }; - export default MCPServersSection; diff --git a/apps/docs/app/new-landing/_components/navbar.tsx b/apps/docs/app/new-landing/_components/navbar.tsx index 7088ccb49..2d183b99d 100644 --- a/apps/docs/app/new-landing/_components/navbar.tsx +++ b/apps/docs/app/new-landing/_components/navbar.tsx @@ -24,7 +24,11 @@ const NAV_LINKS = [ { text: "Docs", href: "/docs" }, { text: "MCP", href: "/docs/mcp-servers" }, { text: "API", href: "https://iqaicom.github.io/adk-ts/", external: true }, - { text: "Blog", href: "https://blog.iqai.com/", external: true }, + { + text: "Blog", + href: "https://blog.iqai.com/tag/dev//tag/dev/", + external: true, + }, ]; type ResourceLinkType = { diff --git a/apps/docs/app/new-landing/_components/project-features.tsx b/apps/docs/app/new-landing/_components/project-features.tsx index ab57853e1..42ac30901 100644 --- a/apps/docs/app/new-landing/_components/project-features.tsx +++ b/apps/docs/app/new-landing/_components/project-features.tsx @@ -1,11 +1,316 @@ +"use client"; + +import { motion, useScroll, useTransform } from "motion/react"; +import { useRef, useLayoutEffect, useState } from "react"; +import { ArrowRight, ExternalLink } from "lucide-react"; +import Link from "next/link"; import { SectionWrapper } from "./section-wrapper"; +import { projects } from "@/app/showcase/_schema"; +import Image from "next/image"; + +const showcaseProjects = projects.slice(0, 6); // Show top 6 projects const ProjectFeaturesSection = () => { + const sectionRef = useRef(null); + const trackRef = useRef(null); + const rightColRef = useRef(null); + const [maxScroll, setMaxScroll] = useState(0); + + // Scroll progress for the section + const { scrollYProgress } = useScroll({ + target: sectionRef, + offset: ["start start", "end end"], + }); + + // Horizontal transform - converts scroll progress to horizontal movement + const x = useTransform(scrollYProgress, [0, 1], [0, -maxScroll]); + + useLayoutEffect(() => { + const calculateDimensions = () => { + if (!sectionRef.current || !trackRef.current || !rightColRef.current) + return; + + const trackWidth = trackRef.current.scrollWidth; + const visibleWidth = rightColRef.current.offsetWidth; + + // Total horizontal movement = total track minus visible area + const horizontalDistance = trackWidth - visibleWidth; + + // Set the section height = viewport height + horizontal distance + // This creates scroll space for the horizontal movement + sectionRef.current.style.height = `${horizontalDistance + window.innerHeight}px`; + + // Update the max scroll distance for the transform + setMaxScroll(horizontalDistance); + }; + + // Calculate on mount + calculateDimensions(); + + // Recalculate on resize + window.addEventListener("resize", calculateDimensions); + + // Small delay to ensure content is fully loaded + const timeout = setTimeout(calculateDimensions, 100); + + return () => { + window.removeEventListener("resize", calculateDimensions); + clearTimeout(timeout); + }; + }, []); + return ( - -
ProjectFeaturesSection
+ + {/* Vertical boundary lines — span full section height */} +
+
+
+
+
+
+ + {/* Mobile header — shown above sticky on small screens */} +
+
+ Community Projects +

Built with ADK-TS

+

+ Community-built projects and hackathon winners powered by ADK-TS. +

+
+ + View All Showcases + + +
+ +
+
+
+
+ {/* LEFT COLUMN — hidden on small screens (shown above sticky) */} +
+ + {/* Section header */} +
+ Community Projects +

Built with ADK-TS

+

+ Community-built projects and hackathon winners powered by + ADK-TS. +

+ +
+
+ + 90+ + + + Community Projects + +
+
+
+ + 115+ + + Stars +
+
+
+ + 100+ + + + Contributors + +
+
+
+ + {/* View All Showcases Button */} + + View All Showcases + + + +
+ +
+ + {/* RIGHT COLUMN (horizontal scroll) */} +
+ + {showcaseProjects.map((project, index) => ( + + ))} + + + {/* Scroll indicator — static, below the right section */} + +
+ SCROLL DOWN + + {" "} + + +
+
+
+
+
+
+
); }; - export default ProjectFeaturesSection; + +interface ShowcaseCardProps { + project: (typeof showcaseProjects)[0]; + index: number; +} + +function ShowcaseCard({ project, index }: ShowcaseCardProps) { + return ( + +
+ {/* Card header with gradient effect */} +
+ {/* Cover image */} +
+ {project.image ? ( + {project.title} + ) : ( +
+
+ {project.title.substring(0, 2).toUpperCase()} +
+
+ )} +
+ + {/* Pink accent line */} + + + {/* Project number */} +
+ + {String(index + 1).padStart(2, "0")} + +
+
+ + {/* Card content */} +
+

+ {project.title} +

+ +

+ {project.description.slice(0, 100)}... +

+ + {/* Tags */} +
+ {project.tags.map((tag) => ( + + {tag} + + ))} +
+ + {/* View code link */} + + + View Code + + +
+ + {/* Hover effect border */} +
+ +
+
+
+ ); +} diff --git a/apps/docs/app/new-landing/_components/why-adkts.tsx b/apps/docs/app/new-landing/_components/why-adkts.tsx index 8cf7a385a..511206269 100644 --- a/apps/docs/app/new-landing/_components/why-adkts.tsx +++ b/apps/docs/app/new-landing/_components/why-adkts.tsx @@ -12,7 +12,7 @@ const features = [ label: "AgentBuilder API", title: "AgentBuilder API", description: - "Build single-prompt agents and full multi-team orchestrators with the same fluent AgentBuilder interface, without any rewrites or boilerplate changes.", + "Build a single-prompt agent or a full multi-team orchestrator using the same fluent AgentBuilder interface — no rewrites, no boilerplate changes.", image: "/landing-page/agentbuilder.svg", }, { @@ -21,7 +21,7 @@ const features = [ label: "Multi-LLM Support", title: "Multi-LLM Support", description: - "Seamlessly switch between any LLM provider by changing one string, while your agent logic, tools, and memory remain unchanged.", + "Switch between any LLM provider by changing one string. Your agent logic, tools, and memory stay exactly the same.", image: "/landing-page/multi-llm-support.svg", }, { @@ -30,7 +30,7 @@ const features = [ label: "Production-Ready Architecture", title: "Production-Ready Architecture", description: - "Deploy to Node.js, serverless, or containers without changing your agent code, with sessions, memory, streaming, and Zod-typed outputs all built in.", + "Sessions, memory, streaming, and Zod-typed outputs are all built in. Deploy to Node.js, serverless, or containers without changing a line of your agent code.", image: "/landing-page/production-ready.svg", }, { @@ -39,7 +39,7 @@ const features = [ label: "Advanced Tooling", title: "Advanced Tooling", description: - "Turn any function into a typed agent tool with automatic schema generation via ADK-TS, and connect to 20+ built-in MCP servers or any external API from a single unified tool registry.", + "Turn any function into a typed agent tool — ADK-TS generates the schema automatically. Connect to 20+ built-in MCP servers or any external API from the same tool registry.", image: "/landing-page/advanced-tooling.svg", }, { @@ -48,7 +48,7 @@ const features = [ label: "Multi-Agent Workflows", title: "Multi-Agent Workflows", description: - "Run tasks sequentially, in parallel, or in loops using the same AgentBuilder API, with four execution patterns: sequential pipelines, parallel fan-outs, iterative loops, and custom DAGs.", + "Run tasks sequentially, in parallel, or in loops — all using the same AgentBuilder API. Four execution patterns: sequential pipelines, parallel fan-outs, iterative loops, and custom DAGs.", image: "/landing-page/multi-agent-workflows.svg", }, { @@ -57,7 +57,7 @@ const features = [ label: "Workflow Control", title: "Workflow Control", description: - "Pause and resume agent workflows at any step with built-in suspend/resume primitives, enabling human-in-the-loop systems, approval gates, and long-running pipelines using persistent state snapshots and an agent scheduler for cron-style execution.", + "Pause and resume agent workflows at any step with built-in suspend/resume primitives. Build human-in-the-loop systems, approval gates, and long-running pipelines — with persistent state snapshots and an agent scheduler for cron-style execution.", image: "/landing-page/workflow-control.svg", }, ]; diff --git a/apps/docs/app/new-landing/landing.css b/apps/docs/app/new-landing/landing.css index 2abed955e..cc985e455 100644 --- a/apps/docs/app/new-landing/landing.css +++ b/apps/docs/app/new-landing/landing.css @@ -128,7 +128,7 @@ body { } .landing-section-header p { - @apply text-sm sm:text-base lg:text-lg text-muted-foreground max-w-xl; + @apply text-sm sm:text-base lg:text-lg text-muted-foreground max-w-3xl; } /* Reusable pink glow — bleeds only downward */ diff --git a/apps/docs/package.json b/apps/docs/package.json index da0133c3f..0965453b0 100644 --- a/apps/docs/package.json +++ b/apps/docs/package.json @@ -22,6 +22,7 @@ "gray-matter": "^4.0.3", "lucide-react": "^0.525.0", "mermaid": "^11.10.1", + "motion": "^12.38.0", "next": "16.1.1", "next-themes": "^0.4.6", "posthog-js": "^1.257.0", diff --git a/apps/docs/public/landing-page/advanced-tooling.svg b/apps/docs/public/landing-page/advanced-tooling.svg index abd29c85f..f043ebabb 100644 --- a/apps/docs/public/landing-page/advanced-tooling.svg +++ b/apps/docs/public/landing-page/advanced-tooling.svg @@ -9,6 +9,7 @@ } /* Moving dot on arc */ .dot-1 { offset-path: path('M192,182.145 C245.818,160.618 317.574,160.618 371.392,182.145'); animation: moveDot 3s linear infinite; filter: drop-shadow(0 0 4px #FF1A88); } + .dot-2 { offset-path: path('M522,182.145 C565,160.618 590,160.618 630,182.145'); animation: moveDot 3s linear infinite 0.5s; filter: drop-shadow(0 0 4px #FF1A88); } @keyframes moveDot { from { offset-distance: 0%; } to { offset-distance: 100%; } } /* Left panel: 5 tool status dots light up in sequence */ .tool-1 { animation: toolBlink 5s ease-in-out infinite 0s; } @@ -59,6 +60,12 @@ + + + + + + @@ -97,6 +104,7 @@ + diff --git a/apps/examples/README.md b/apps/examples/README.md index 74fe2fd0e..93a00398d 100644 --- a/apps/examples/README.md +++ b/apps/examples/README.md @@ -34,7 +34,7 @@ _Note: this project uses [**pnpm**](https://pnpm.io/) as the package manager. Yo pnpm install ``` -2. **Build the ADK-TS Package** +1. **Build the ADK-TS Package** For the examples to work correctly, you need to build the core ADK-TS package first. This step compiles the TypeScript code and prepares the necessary files. @@ -42,7 +42,7 @@ For the examples to work correctly, you need to build the core ADK-TS package fi pnpm build ``` -3. **Configure Environment Variables** +1. **Configure Environment Variables** Create a `.env` file in the **examples directory** (not in the root folder) and add your API keys and optional model configuration. This file is used to set environment variables that the examples will use. @@ -62,7 +62,7 @@ The default LLM is Google Gemini. You can get a Google API key from [Google AI S > Note: Some examples require additional configuration or dependencies. Please check the [`.env.example`](.env.example) file for specific instructions. -4. **Run Examples** +1. **Run Examples** To explore the examples, you can either browse all available examples or run a specific one directly: @@ -107,7 +107,7 @@ We have **9 comprehensive examples** that cover the complete ADK-TS feature set, ## 🤝 Contributing -If you would like to add examples or improve existing ones, please check out our [Contributing Guide](../../CONTRIBUTION.md) for details on how to get started. +If you would like to add examples or improve existing ones, please check out our [Contributing Guide](../../CONTRIBUTING.md) for details on how to get started. --- diff --git a/packages/adk-cli/README.md b/packages/adk-cli/README.md index fdc5df6bd..9f383d10e 100644 --- a/packages/adk-cli/README.md +++ b/packages/adk-cli/README.md @@ -315,7 +315,7 @@ Tests are organized alongside source files: - **[ADK-TS Repository](https://github.com/IQAIcom/adk-ts)** - Main framework repository - **[Live Documentation](https://adk.iqai.com)** - Published documentation site - **[CLI Documentation](https://adk.iqai.com/docs/cli)** - User-facing CLI docs -- **[Contributing Guide](../../CONTRIBUTION.md)** - General project contribution guidelines +- **[Contributing Guide](../../CONTRIBUTING.md)** - General project contribution guidelines - **[Examples](../../apps/examples/)** - Code examples and tutorials ### Technical Resources diff --git a/packages/adk/README.md b/packages/adk/README.md index 310a409f0..327426764 100644 --- a/packages/adk/README.md +++ b/packages/adk/README.md @@ -322,7 +322,7 @@ pnpm install && pnpm dev ## 🤝 Contributing -Contributions are welcome! See our [Contributing Guide](https://github.com/IQAIcom/adk-ts/blob/main/CONTRIBUTION.md) for details. +Contributions are welcome! See our [Contributing Guide](https://github.com/IQAIcom/adk-ts/blob/main/CONTRIBUTING.md) for details. ## 📜 License diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ca5a27070..648302183 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -252,6 +252,9 @@ importers: mermaid: specifier: ^11.10.1 version: 11.12.2 + motion: + specifier: ^12.38.0 + version: 12.38.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) next: specifier: 16.1.1 version: 16.1.1(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) @@ -6651,6 +6654,20 @@ packages: motion-utils@12.36.0: resolution: {integrity: sha512-eHWisygbiwVvf6PZ1vhaHCLamvkSbPIeAYxWUuL3a2PD/TROgE7FvfHWTIH4vMl798QLfMw15nRqIaRDXTlYRg==} + motion@12.38.0: + resolution: {integrity: sha512-uYfXzeHlgThchzwz5Te47dlv5JOUC7OB4rjJ/7XTUgtBZD8CchMN8qEJ4ZVsUmTyYA44zjV0fBwsiktRuFnn+w==} + peerDependencies: + '@emotion/is-prop-valid': '*' + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@emotion/is-prop-valid': + optional: true + react: + optional: true + react-dom: + optional: true + mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} @@ -15896,6 +15913,14 @@ snapshots: motion-utils@12.36.0: {} + motion@12.38.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + dependencies: + framer-motion: 12.38.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + tslib: 2.8.1 + optionalDependencies: + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + mri@1.2.0: {} ms@2.1.3: {}