// Repository Data const repositories = [ { name: "The AI Scientist", url: "https://github.com/SakanaAI/AI-Scientist", description: "Comprehensive system for automated scientific discovery, enabling Foundation Models to perform research independently and generate complete research papers", category: "Scientific Research Automation", stars: "11.1k", starsNumeric: 11100, features: ["Automated idea generation", "Experiment execution", "Paper writing", "Peer review simulation"], organization: "Sakana AI", cost: "Research Tool", costDetails: "Academic Research", tags: ["research", "automation", "scientific-discovery", "llm"], isNew: false }, { name: "The AI Scientist v2", url: "https://github.com/SakanaAI/AI-Scientist-v2", description: "Generalized end-to-end agentic system that generated the first workshop paper written entirely by AI", category: "Scientific Research Automation", stars: "New", starsNumeric: 0, features: ["Workshop-level research", "End-to-end automation", "Peer review acceptance"], organization: "Sakana AI", cost: "Open Source", costDetails: "Open Source Research", tags: ["research", "automation", "workshop", "ai-generated"], isNew: true }, { name: "AutoGen", url: "https://github.com/microsoft/autogen", description: "Programming framework for creating multi-agent AI applications that can act autonomously or work alongside humans", category: "Multi-Agent Frameworks", stars: "45.7k", starsNumeric: 45700, features: ["Multi-agent conversation", "Human participation", "Customizable agents"], organization: "Microsoft", cost: "Open Source", costDetails: "Open Source Framework", tags: ["multi-agent", "framework", "conversation", "microsoft"], isNew: false }, { name: "LangGraph", url: "https://github.com/langchain-ai/langgraph", description: "Build resilient language agents as graphs with stateful, multi-actor applications", category: "Multi-Agent Frameworks", stars: "8.9k", starsNumeric: 8900, features: ["Graph-based agents", "Stateful applications", "LangChain integration"], organization: "LangChain", cost: "Open Source", costDetails: "Open Source Framework", tags: ["graph", "stateful", "langchain", "agents"], isNew: false }, { name: "CrewAI", url: "https://github.com/crewAIInc/crewAI", description: "Fast and Flexible Multi-Agent Automation Framework for role-playing AI agents collaboration", category: "Multi-Agent Frameworks", stars: "32.7k", starsNumeric: 32700, features: ["Role-playing agents", "Fast automation", "Flexible framework"], organization: "CrewAI Inc", cost: "Open Source", costDetails: "Open Source Framework", tags: ["role-playing", "automation", "collaboration", "fast"], isNew: false }, { name: "MetaGPT", url: "https://github.com/geekan/MetaGPT", description: "Multi-Agent Framework: First AI Software Company, Towards Natural Language Programming", category: "Multi-Agent Systems", stars: "56.3k", starsNumeric: 56300, features: ["Software company simulation", "Natural language programming", "Multi-agent collaboration"], organization: "Foundation Agents", cost: "Open Source", costDetails: "Open Source Framework", tags: ["software-company", "nlp", "programming", "simulation"], isNew: false }, { name: "Semantic Kernel", url: "https://github.com/microsoft/semantic-kernel", description: "Model-agnostic SDK empowering developers to build, orchestrate, and deploy AI agents and multi-agent systems", category: "Multi-Agent Frameworks", stars: "22.4k", starsNumeric: 22400, features: ["Model-agnostic", "SDK framework", "Agent orchestration"], organization: "Microsoft", cost: "Open Source", costDetails: "Open Source Framework", tags: ["sdk", "model-agnostic", "orchestration", "microsoft"], isNew: false }, { name: "OpenAI Swarm", url: "https://github.com/openai/swarm", description: "Educational framework exploring ergonomic, lightweight multi-agent orchestration", category: "Multi-Agent Frameworks", stars: "19.9k", starsNumeric: 19900, features: ["Lightweight orchestration", "Educational framework", "Client-side coordination"], organization: "OpenAI", cost: "Open Source", costDetails: "Open Source Framework", tags: ["educational", "lightweight", "orchestration", "openai"], isNew: false }, { name: "AI-Researcher", url: "https://github.com/HKUDS/AI-Researcher", description: "Autonomous Scientific Innovation with comprehensive automation for the complete scientific research lifecycle", category: "Scientific Research Automation", stars: "New", starsNumeric: 0, features: ["Integrated pipeline", "Research lifecycle automation", "Scientific innovation"], organization: "HKUDS", cost: "Open Source", costDetails: "Open Source Framework", tags: ["research", "lifecycle", "innovation", "autonomous"], isNew: true }, { name: "Curie", url: "https://github.com/Just-Curieous/Curie", description: "First AI-agent framework designed for automated and rigorous scientific experimentation", category: "Scientific Research Automation", stars: "New", starsNumeric: 0, features: ["Rigorous experimentation", "Automated testing", "Scientific methodology"], organization: "Just-Curieous", cost: "Open Source", costDetails: "Open Source Framework", tags: ["experimentation", "rigorous", "scientific", "methodology"], isNew: true }, { name: "AgentOps", url: "https://github.com/AgentOps-AI/agentops", description: "Python SDK for AI agent monitoring, LLM cost tracking, benchmarking, and comprehensive observability", category: "Monitoring & Observability", stars: "2.1k", starsNumeric: 2100, features: ["Performance monitoring", "Cost tracking", "Real-time insights", "Benchmarking"], organization: "AgentOps AI", cost: "Research Tool", costDetails: "Research Tool with Premium Features", tags: ["monitoring", "observability", "tracking", "benchmarking"], isNew: false }, { name: "data-to-paper", url: "https://github.com/Technion-Kishony-lab/data-to-paper", description: "Backward-traceable AI-driven scientific research automation framework with interacting AI agents", category: "Scientific Research Automation", stars: "New", starsNumeric: 0, features: ["Backward-traceable", "End-to-end research", "Interacting agents"], organization: "Technion Kishony Lab", cost: "Open Source", costDetails: "Open Source Framework", tags: ["traceable", "research", "interacting", "scientific"], isNew: true }, { name: "Awesome AI Agents", url: "https://github.com/e2b-dev/awesome-ai-agents", description: "Comprehensive list of AI autonomous agents with structured categories and use-cases", category: "Resources & Collections", stars: "8.7k", starsNumeric: 8700, features: ["Comprehensive list", "Categorized agents", "Use-case examples"], organization: "E2B", cost: "Open Source", costDetails: "Open Source Framework", tags: ["awesome-list", "comprehensive", "categorized", "examples"], isNew: false }, { name: "AutoResearcher", url: "https://github.com/eimenhmdt/autoresearcher", description: "Open-source Python package leveraging AI models and external knowledge sources to automate scientific workflows", category: "Scientific Research Automation", stars: "New", starsNumeric: 0, features: ["Python package", "External knowledge", "Workflow automation"], organization: "Independent", cost: "Open Source", costDetails: "Open Source Framework", tags: ["python", "workflows", "knowledge", "automation"], isNew: true }, { name: "Deep Research", url: "https://github.com/dzhng/deep-research", description: "AI-powered research assistant performing iterative, deep research combining search engines, web scraping, and LLMs", category: "Research Tools", stars: "New", starsNumeric: 0, features: ["Iterative research", "Web scraping", "Search integration", "LLM powered"], organization: "Independent", cost: "Open Source", costDetails: "Open Source Framework", tags: ["research", "iterative", "scraping", "search"], isNew: true }, { name: "Research Crew", url: "https://github.com/factoredai/research-crew", description: "CrewAI-based agentic workflow that executes research and produces different types of content", category: "Research Tools", stars: "New", starsNumeric: 0, features: ["CrewAI integration", "Content production", "Research execution"], organization: "FactoredAI", cost: "Open Source", costDetails: "Open Source Framework", tags: ["crewai", "content", "execution", "workflow"], isNew: true }, { name: "AG2 (formerly AutoGen)", url: "https://github.com/ag2ai/ag2", description: "Open-source programming framework for building AI agents and facilitating cooperation among multiple agents", category: "Multi-Agent Frameworks", stars: "New", starsNumeric: 0, features: ["Agent cooperation", "Open-source", "Programming framework"], organization: "AG2 AI", cost: "Open Source", costDetails: "Open Source Framework", tags: ["cooperation", "framework", "open-source", "agents"], isNew: true }, { name: "Open Agent Platform", url: "https://github.com/langchain-ai/open-agent-platform", description: "Modern, web-based interface for creating, managing, and interacting with LangGraph agents", category: "Agent Platforms", stars: "New", starsNumeric: 0, features: ["Web interface", "Agent management", "LangGraph integration"], organization: "LangChain", cost: "Open Source", costDetails: "Open Source Framework", tags: ["web-interface", "management", "langgraph", "platform"], isNew: true }, { name: "OpenAI Agents Python SDK", url: "https://github.com/openai/openai-agents-python", description: "Lightweight yet powerful framework for building multi-agent workflows with provider-agnostic support", category: "Multi-Agent Frameworks", stars: "New", starsNumeric: 0, features: ["Provider-agnostic", "Lightweight", "Multi-agent workflows"], organization: "OpenAI", cost: "Open Source", costDetails: "Open Source Framework", tags: ["provider-agnostic", "lightweight", "workflows", "openai"], isNew: true }, { name: "DurableSwarm", url: "https://github.com/dbos-inc/durable-swarm", description: "Reliable Multi-Agent Orchestration augmenting OpenAI's Swarm with durable execution", category: "Multi-Agent Systems", stars: "New", starsNumeric: 0, features: ["Durable execution", "Reliable orchestration", "Swarm augmentation"], organization: "DBOS Inc", cost: "Open Source", costDetails: "Open Source Framework", tags: ["durable", "reliable", "orchestration", "swarm"], isNew: true } ]; // Global variables let filteredRepositories = [...repositories]; let currentSort = 'name'; // DOM Elements const searchInput = document.getElementById('search-input'); const clearSearchBtn = document.getElementById('clear-search'); const categoryFilter = document.getElementById('category-filter'); const starsFilter = document.getElementById('stars-filter'); const costFilter = document.getElementById('cost-filter'); const sortSelect = document.getElementById('sort-select'); const resultsCount = document.getElementById('results-count'); const repositoriesGrid = document.getElementById('repositories-grid'); const noResults = document.getElementById('no-results'); const resetFiltersBtn = document.getElementById('reset-filters'); const backToTopBtn = document.getElementById('back-to-top'); // Initialize the application document.addEventListener('DOMContentLoaded', function() { initializeApp(); setupEventListeners(); renderRepositories(); updateStatistics(); setupScrollEffects(); setupAnimations(); }); // Initialize application function initializeApp() { // Set initial values searchInput.value = ''; categoryFilter.value = 'all'; starsFilter.value = '0'; costFilter.value = 'all'; sortSelect.value = 'name'; // Update total repositories count in hero document.getElementById('total-repos').textContent = repositories.length; document.getElementById('research-tools').textContent = repositories.filter(repo => repo.cost === 'Open Source' || repo.cost === 'Research Tool').length; } // Setup event listeners function setupEventListeners() { // Search functionality searchInput.addEventListener('input', debounce(handleSearch, 300)); clearSearchBtn.addEventListener('click', clearSearch); // Filter functionality categoryFilter.addEventListener('change', handleFilters); starsFilter.addEventListener('change', handleFilters); costFilter.addEventListener('change', handleFilters); // Sort functionality sortSelect.addEventListener('change', handleSort); // Reset filters resetFiltersBtn.addEventListener('click', resetFilters); // Back to top button backToTopBtn.addEventListener('click', scrollToTop); // Smooth scrolling for navigation links document.querySelectorAll('a[href^="#"]').forEach(anchor => { anchor.addEventListener('click', function (e) { e.preventDefault(); const target = document.querySelector(this.getAttribute('href')); if (target) { target.scrollIntoView({ behavior: 'smooth', block: 'start' }); } }); }); // Footer category links document.querySelectorAll('[data-category]').forEach(link => { link.addEventListener('click', function(e) { e.preventDefault(); const category = this.getAttribute('data-category'); categoryFilter.value = category; handleFilters(); document.getElementById('explore').scrollIntoView({ behavior: 'smooth' }); }); }); } // Debounce function for search function debounce(func, wait) { let timeout; return function executedFunction(...args) { const later = () => { clearTimeout(timeout); func(...args); }; clearTimeout(timeout); timeout = setTimeout(later, wait); }; } // Handle search function handleSearch() { applyFilters(); } // Clear search function clearSearch() { searchInput.value = ''; applyFilters(); } // Handle filters function handleFilters() { applyFilters(); } // Handle sorting function handleSort() { currentSort = sortSelect.value; sortRepositories(); renderRepositories(); } // Apply all filters function applyFilters() { const searchTerm = searchInput.value.toLowerCase().trim(); const selectedCategory = categoryFilter.value; const minStars = parseInt(starsFilter.value); const selectedCost = costFilter.value; filteredRepositories = repositories.filter(repo => { // Search filter const matchesSearch = !searchTerm || repo.name.toLowerCase().includes(searchTerm) || repo.description.toLowerCase().includes(searchTerm) || repo.organization.toLowerCase().includes(searchTerm) || repo.tags.some(tag => tag.toLowerCase().includes(searchTerm)); // Category filter const matchesCategory = selectedCategory === 'all' || repo.category === selectedCategory; // Stars filter const matchesStars = repo.starsNumeric >= minStars; // Cost filter const matchesCost = selectedCost === 'all' || repo.cost === selectedCost; return matchesSearch && matchesCategory && matchesStars && matchesCost; }); sortRepositories(); renderRepositories(); updateResultsCount(); } // Sort repositories function sortRepositories() { filteredRepositories.sort((a, b) => { switch (currentSort) { case 'name': return a.name.localeCompare(b.name); case 'stars': return b.starsNumeric - a.starsNumeric; case 'category': return a.category.localeCompare(b.category); case 'organization': return a.organization.localeCompare(b.organization); default: return 0; } }); } // Render repositories function renderRepositories() { if (filteredRepositories.length === 0) { repositoriesGrid.style.display = 'none'; noResults.style.display = 'block'; return; } repositoriesGrid.style.display = 'grid'; noResults.style.display = 'none'; repositoriesGrid.innerHTML = filteredRepositories.map(repo => createRepositoryCard(repo)).join(''); // Add animation to cards const cards = repositoriesGrid.querySelectorAll('.repo-card'); cards.forEach((card, index) => { card.style.animationDelay = `${index * 0.1}s`; card.classList.add('slide-up'); }); } // Create repository card HTML function createRepositoryCard(repo) { const starsDisplay = repo.isNew ? '🆕 New' : `⭐ ${repo.stars}`; const costClass = repo.cost.toLowerCase().replace(' ', '-'); const costIcon = repo.cost === 'Open Source' ? '🔓' : repo.cost === 'Research Tool' ? '🔬' : '🏢'; const featuresHtml = repo.features.map(feature => `${feature}` ).join(''); const tagsHtml = repo.tags.map(tag => `#${tag}` ).join(''); return `

${repo.name}

${starsDisplay} ${costIcon} ${repo.costDetails}
🏢 ${repo.organization}
📂 ${repo.category}

${repo.description}

✨ Key Features:

${featuresHtml}

🏷️ Tags:

${tagsHtml}
View Repository Stargazers
`; } // Update results count function updateResultsCount() { const count = filteredRepositories.length; const text = count === 1 ? 'repository found' : 'repositories found'; resultsCount.textContent = `${count} ${text}`; } // Reset all filters function resetFilters() { searchInput.value = ''; categoryFilter.value = 'all'; starsFilter.value = '0'; costFilter.value = 'all'; sortSelect.value = 'name'; currentSort = 'name'; applyFilters(); } // Update statistics function updateStatistics() { // Update category chart const categoryChart = document.getElementById('category-chart'); const categoryStats = {}; repositories.forEach(repo => { categoryStats[repo.category] = (categoryStats[repo.category] || 0) + 1; }); const sortedCategories = Object.entries(categoryStats) .sort(([,a], [,b]) => b - a); categoryChart.innerHTML = sortedCategories.map(([category, count]) => { const percentage = ((count / repositories.length) * 100).toFixed(1); return `
${category} ${count} repos (${percentage}%)
`; }).join(''); } // Setup scroll effects function setupScrollEffects() { let lastScrollTop = 0; const header = document.querySelector('.header'); window.addEventListener('scroll', () => { const scrollTop = window.pageYOffset || document.documentElement.scrollTop; // Header scroll effect if (scrollTop > lastScrollTop && scrollTop > 100) { header.style.transform = 'translateY(-100%)'; } else { header.style.transform = 'translateY(0)'; } // Back to top button if (scrollTop > 500) { backToTopBtn.classList.add('visible'); } else { backToTopBtn.classList.remove('visible'); } lastScrollTop = scrollTop; }); } // Setup animations function setupAnimations() { // Intersection Observer for animations const observerOptions = { threshold: 0.1, rootMargin: '0px 0px -50px 0px' }; const observer = new IntersectionObserver((entries) => { entries.forEach(entry => { if (entry.isIntersecting) { entry.target.classList.add('fade-in'); } }); }, observerOptions); // Observe sections for animations document.querySelectorAll('section').forEach(section => { observer.observe(section); }); } // Scroll to top function function scrollToTop() { window.scrollTo({ top: 0, behavior: 'smooth' }); } // Utility functions function formatNumber(num) { if (num >= 1000000) { return (num / 1000000).toFixed(1) + 'M'; } else if (num >= 1000) { return (num / 1000).toFixed(1) + 'k'; } return num.toString(); } function copyToClipboard(text) { navigator.clipboard.writeText(text).then(() => { showNotification('Copied to clipboard!'); }).catch(err => { console.error('Failed to copy: ', err); }); } function showNotification(message, type = 'success') { const notification = document.createElement('div'); notification.className = `notification ${type}`; notification.textContent = message; notification.style.cssText = ` position: fixed; top: 20px; right: 20px; background: var(--success-color); color: white; padding: 12px 20px; border-radius: 8px; box-shadow: var(--shadow-lg); z-index: 10000; animation: slideIn 0.3s ease-out; `; document.body.appendChild(notification); setTimeout(() => { notification.style.animation = 'slideOut 0.3s ease-out'; setTimeout(() => { document.body.removeChild(notification); }, 300); }, 3000); } // Add CSS for notifications const notificationStyles = ` @keyframes slideIn { from { transform: translateX(100%); opacity: 0; } to { transform: translateX(0); opacity: 1; } } @keyframes slideOut { from { transform: translateX(0); opacity: 1; } to { transform: translateX(100%); opacity: 0; } } `; // Add notification styles to head const styleSheet = document.createElement('style'); styleSheet.textContent = notificationStyles; document.head.appendChild(styleSheet); // Performance optimization function throttle(func, limit) { let inThrottle; return function() { const args = arguments; const context = this; if (!inThrottle) { func.apply(context, args); inThrottle = true; setTimeout(() => inThrottle = false, limit); } } } // Lazy loading for images (if any are added later) function setupLazyLoading() { const imageObserver = new IntersectionObserver((entries, observer) => { entries.forEach(entry => { if (entry.isIntersecting) { const img = entry.target; img.src = img.dataset.src; img.classList.remove('lazy'); imageObserver.unobserve(img); } }); }); document.querySelectorAll('img[data-src]').forEach(img => { imageObserver.observe(img); }); } // Export functions for potential external use window.AgenticAIHub = { repositories, filteredRepositories, applyFilters, resetFilters, formatNumber, copyToClipboard, showNotification };