mirror of https://github.com/kortix-ai/suna.git
3.7 KiB
3.7 KiB
Pagination Implementation for Agents and Marketplace
This document outlines the implementation of server-side pagination, searching, sorting, and filtering for both the agents page and marketplace page.
Backend Changes
1. Updated API Endpoints
Agents Endpoint (/agents
)
-
New Parameters:
page
: Page number (1-based, default: 1)limit
: Items per page (1-100, default: 20)search
: Search in name and descriptionsort_by
: Sort field (name, created_at, updated_at, tools_count)sort_order
: Sort order (asc, desc)has_default
: Filter by default agentshas_mcp_tools
: Filter by agents with MCP toolshas_agentpress_tools
: Filter by agents with AgentPress toolstools
: Comma-separated list of tools to filter by
-
Response Format:
{
"agents": [...],
"pagination": {
"page": 1,
"limit": 20,
"total": 150,
"pages": 8
}
}
Marketplace Endpoint (/marketplace/agents
)
-
New Parameters:
page
: Page number (1-based, default: 1)limit
: Items per page (1-100, default: 20)search
: Search in name and descriptiontags
: Comma-separated string of tagssort_by
: Sort by (newest, popular, most_downloaded, name)creator
: Filter by creator name
-
Response Format:
{
"agents": [...],
"pagination": {
"page": 1,
"limit": 20,
"total": 75,
"pages": 4
}
}
2. Database Functions
Updated get_marketplace_agents
- Added
p_creator
parameter for filtering by creator name - Enhanced search functionality
New get_marketplace_agents_count
- Returns total count of marketplace agents matching filters
- Used for pagination calculation
Frontend Changes
1. New Components
Pagination Component
- Located at:
frontend/src/app/(dashboard)/agents/_components/pagination.tsx
- Features:
- Smart page number display with ellipsis
- Previous/Next navigation
- Disabled state during loading
- Responsive design
2. Updated Hooks
useAgents Hook
- Now accepts
AgentsParams
for server-side filtering - Returns
AgentsResponse
with pagination info
useMarketplaceAgents Hook
- Updated to support new pagination parameters
- Returns
MarketplaceAgentsResponse
with pagination info
3. Updated Pages
Agents Page
- Replaced client-side filtering with server-side parameters
- Added pagination component
- Automatic page reset when filters change
- Enhanced results display with pagination info
Marketplace Page
- Added pagination support
- Enhanced sorting options (added "Name A-Z")
- Improved results display
- Added pagination component
Benefits
- Performance: Only loads necessary data, reducing bandwidth and improving load times
- Scalability: Can handle large datasets efficiently
- User Experience: Faster page loads and responsive filtering
- Server Resources: Reduced memory usage and database load
- Search: Real-time search with backend optimization
Usage
Agents Page
- Search agents by name or description
- Filter by default status, tool types, or specific tools
- Sort by name, creation date, update date, or tool count
- Navigate through pages with pagination controls
Marketplace Page
- Search marketplace agents by name or description
- Filter by tags or creator name
- Sort by newest, popularity, downloads, or name
- Browse through paginated results
Technical Notes
- Page size is limited to 100 items maximum for performance
- Search is case-insensitive and matches partial strings
- Tool filtering supports both MCP and AgentPress tools
- Sorting is handled both in database (for simple fields) and post-processing (for computed fields like tools_count)
- Pagination automatically resets to page 1 when filters change