AncViz's picture
Can you add working example files (so when you lick 'load example' on the examples tab, it loads the real example)? This may require adjusting the functionality of the drag-and-drop components
72e5643 verified
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>AgentFlow Studio - Visual Langchain Builder</title>
<link rel="icon" type="image/x-icon" href="/static/favicon.ico">
<link rel="stylesheet" href="style.css">
<script src="https://cdn.tailwindcss.com"></script>
<script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
<script src="https://unpkg.com/feather-icons"></script>
<script src="https://cdn.jsdelivr.net/npm/vanta@latest/dist/vanta.net.min.js"></script>
</head>
<body class="bg-gray-900 text-white min-h-screen">
<custom-navbar></custom-navbar>
<main class="container mx-auto px-4 py-8">
<!-- Hero Section -->
<section class="text-center mb-12">
<h1 class="text-5xl font-bold mb-4 bg-gradient-to-r from-blue-400 to-purple-600 bg-clip-text text-transparent">
AgentFlow Studio
</h1>
<p class="text-xl text-gray-300 mb-8">Build Langchain Agents Visually - No Code Required</p>
<div class="flex gap-4 justify-center">
<button onclick="startNewProject()" class="bg-blue-600 hover:bg-blue-700 px-6 py-3 rounded-lg font-semibold transition-colors">
<i data-feather="plus" class="inline mr-2"></i>New Project
</button>
<button onclick="loadSample()" class="bg-purple-600 hover:bg-purple-700 px-6 py-3 rounded-lg font-semibold transition-colors">
<i data-feather="play" class="inline mr-2"></i>Load Sample
</button>
</div>
</section>
<!-- Canvas Area -->
<section class="bg-gray-800 rounded-xl p-6 mb-8">
<div class="flex justify-between items-center mb-6">
<h2 class="text-2xl font-semibold">Agent Builder Canvas</h2>
<div class="flex gap-2">
<button onclick="exportAgent()" class="bg-green-600 hover:bg-green-700 px-4 py-2 rounded-lg flex items-center">
<i data-feather="download" class="mr-2"></i>Export Python
</button>
<button onclick="clearCanvas()" class="bg-red-600 hover:bg-red-700 px-4 py-2 rounded-lg flex items-center">
<i data-feather="trash-2" class="mr-2"></i>Clear
</button>
</div>
</div>
<div id="canvas" class="min-h-96 border-2 border-dashed border-gray-600 rounded-lg p-4 relative">
<div class="absolute inset-0 flex items-center justify-center">
<p class="text-gray-500 text-lg">Drag components from the toolbox to start building</p>
</div>
</div>
</section>
<!-- Toolbox -->
<section class="bg-gray-800 rounded-xl p-6">
<h2 class="text-2xl font-semibold mb-6">Component Toolbox</h2>
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4">
<!-- Agent Components -->
<div class="toolbox-item" data-type="react-agent" draggable="true">
<div class="bg-blue-600 p-4 rounded-lg cursor-move">
<i data-feather="cpu" class="w-8 h-8 mb-2"></i>
<h3 class="font-semibold">React Agent</h3>
<p class="text-sm text-blue-200">Core reasoning agent</p>
</div>
</div>
<div class="toolbox-item" data-type="tool" draggable="true">
<div class="bg-purple-600 p-4 rounded-lg cursor-move">
<i data-feather="tool" class="w-8 h-8 mb-2"></i>
<h3 class="font-semibold">Tool</h3>
<p class="text-sm text-purple-200">Custom function tool</p>
</div>
</div>
<div class="toolbox-item" data-type="prompt" draggable="true">
<div class="bg-green-600 p-4 rounded-lg cursor-move">
<i data-feather="message-square" class="w-8 h-8 mb-2"></i>
<h3 class="font-semibold">Prompt Template</h3>
<p class="text-sm text-green-200">Chat prompt setup</p>
</div>
</div>
<div class="toolbox-item" data-type="memory" draggable="true">
<div class="bg-yellow-600 p-4 rounded-lg cursor-move">
<i data-feather="database" class="w-8 h-8 mb-2"></i>
<h3 class="font-semibold">Memory</h3>
<p class="text-sm text-yellow-200">State management</p>
</div>
</div>
</div>
</section>
<!-- Quick Examples Section -->
<section class="bg-gray-800 rounded-xl p-6 mt-8">
<h2 class="text-2xl font-semibold mb-6">Quick Examples</h2>
<div class="grid grid-cols-1 md:grid-cols-3 gap-4">
<button onclick="loadExample('research')" class="bg-gradient-to-r from-blue-600 to-purple-600 p-4 rounded-lg hover:from-blue-700 hover:to-purple-700 transition-all">
<i data-feather="search" class="w-6 h-6 mb-2"></i>
<h3 class="font-semibold">Research Assistant</h3>
<p class="text-sm opacity-80 mt-1">Web search & summarization</p>
</button>
<button onclick="loadExample('ecommerce')" class="bg-gradient-to-r from-green-600 to-blue-600 p-4 rounded-lg hover:from-green-700 hover:to-blue-700 transition-all">
<i data-feather="shopping-cart" class="w-6 h-6 mb-2"></i>
<h3 class="font-semibold">E-commerce Assistant</h3>
<p class="text-sm opacity-80 mt-1">Product search & price comparison</p>
</button>
<button onclick="loadExample('code')" class="bg-gradient-to-r from-purple-600 to-pink-600 p-4 rounded-lg hover:from-purple-700 hover:to-pink-700 transition-all">
<i data-feather="code" class="w-6 h-6 mb-2"></i>
<h3 class="font-semibold">Code Assistant</h3>
<p class="text-sm opacity-80 mt-1">Code generation & debugging</p>
</button>
</div>
</section>
<!-- Properties Panel -->
<section id="properties-panel" class="bg-gray-800 rounded-xl p-6 mt-8 hidden">
<h2 class="text-2xl font-semibold mb-6">Component Properties</h2>
<div id="properties-content">
<!-- Dynamic content will be loaded here -->
</div>
</section>
</main>
<custom-footer></custom-footer>
<!-- Scripts -->
<script src="components/navbar.js"></script>
<script src="components/footer.js"></script>
<script src="script.js"></script>
<script>
// Initialize Vanta.js background
VANTA.NET({
el: "body",
mouseControls: true,
touchControls: true,
gyroControls: false,
minHeight: 200.00,
minWidth: 200.00,
scale: 1.00,
scaleMobile: 1.00,
color: 0x3b82f6,
backgroundColor: 0x111827
});
feather.replace();
</script>
<script src="https://huggingface.co/deepsite/deepsite-badge.js"></script>
</body>
</html>