mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-12-20 18:30:15 +01:00
- Replace multiple marketplace routes with unified /marketplace endpoint - Add query string controls: category, search, limit, cursor, promoted, requiredPermission - Implement cursor-based pagination replacing page-based system - Integrate ACL permissions for proper access control - Fix ObjectId constructor error in Agent model - Update React components to use unified useGetMarketplaceAgentsQuery hook - Enhance type safety and remove deprecated useDynamicAgentQuery - Update tests for new marketplace architecture -Known issues: see more button after category switching + Unit tests
35 lines
1.3 KiB
JavaScript
35 lines
1.3 KiB
JavaScript
const express = require('express');
|
|
const { requireJwtAuth, checkBan, generateCheckAccess } = require('~/server/middleware');
|
|
const { PermissionTypes, Permissions } = require('librechat-data-provider');
|
|
const marketplace = require('~/server/controllers/agents/marketplace');
|
|
|
|
const router = express.Router();
|
|
|
|
// Apply middleware for authentication and authorization
|
|
router.use(requireJwtAuth);
|
|
router.use(checkBan);
|
|
|
|
// Check if user has permission to use agents
|
|
const checkAgentAccess = generateCheckAccess(PermissionTypes.AGENTS, [Permissions.USE]);
|
|
router.use(checkAgentAccess);
|
|
|
|
/**
|
|
* Unified marketplace agents endpoint with query string controls
|
|
* Query parameters:
|
|
* - category: string (filter by category, or 'all' for all agents, 'promoted' for promoted)
|
|
* - search: string (search term for name/description)
|
|
* - limit: number (page size, default 6)
|
|
* - cursor: base64 string (for cursor-based pagination)
|
|
* - promoted: 0|1 (filter promoted agents, 1=promoted only, 0=exclude promoted)
|
|
* - requiredPermission: number (permission level required to access agents, default 1)
|
|
* @route GET /agents/marketplace
|
|
*/
|
|
router.get('/', marketplace.getMarketplaceAgents);
|
|
|
|
/**
|
|
* Get all agent categories with counts
|
|
* @route GET /agents/marketplace/categories
|
|
*/
|
|
router.get('/categories', marketplace.getAgentCategories);
|
|
|
|
module.exports = router;
|