| const express = require('express'); |
| const { generateCheckAccess } = require('@librechat/api'); |
| const { PermissionTypes, Permissions, PermissionBits } = require('librechat-data-provider'); |
| const { requireJwtAuth, configMiddleware, canAccessAgentResource } = require('~/server/middleware'); |
| const v1 = require('~/server/controllers/agents/v1'); |
| const { getRoleByName } = require('~/models/Role'); |
| const actions = require('./actions'); |
| const tools = require('./tools'); |
|
|
| const router = express.Router(); |
| const avatar = express.Router(); |
|
|
| const checkAgentAccess = generateCheckAccess({ |
| permissionType: PermissionTypes.AGENTS, |
| permissions: [Permissions.USE], |
| getRoleByName, |
| }); |
| const checkAgentCreate = generateCheckAccess({ |
| permissionType: PermissionTypes.AGENTS, |
| permissions: [Permissions.USE, Permissions.CREATE], |
| getRoleByName, |
| }); |
|
|
| const checkGlobalAgentShare = generateCheckAccess({ |
| permissionType: PermissionTypes.AGENTS, |
| permissions: [Permissions.USE, Permissions.CREATE], |
| bodyProps: { |
| [Permissions.SHARED_GLOBAL]: ['projectIds', 'removeProjectIds'], |
| }, |
| getRoleByName, |
| }); |
|
|
| router.use(requireJwtAuth); |
|
|
| |
| |
| |
| |
| router.use('/actions', configMiddleware, actions); |
|
|
| |
| |
| |
| |
| router.use('/tools', configMiddleware, tools); |
|
|
| |
| |
| |
| |
| router.get('/categories', v1.getAgentCategories); |
| |
| |
| |
| |
| |
| |
| router.post('/', checkAgentCreate, v1.createAgent); |
|
|
| |
| |
| |
| |
| |
| |
| |
| router.get( |
| '/:id', |
| checkAgentAccess, |
| canAccessAgentResource({ |
| requiredPermission: PermissionBits.VIEW, |
| resourceIdParam: 'id', |
| }), |
| v1.getAgent, |
| ); |
|
|
| |
| |
| |
| |
| |
| |
| |
| router.get( |
| '/:id/expanded', |
| checkAgentAccess, |
| canAccessAgentResource({ |
| requiredPermission: PermissionBits.EDIT, |
| resourceIdParam: 'id', |
| }), |
| (req, res) => v1.getAgent(req, res, true), |
| ); |
| |
| |
| |
| |
| |
| |
| |
| router.patch( |
| '/:id', |
| checkGlobalAgentShare, |
| canAccessAgentResource({ |
| requiredPermission: PermissionBits.EDIT, |
| resourceIdParam: 'id', |
| }), |
| v1.updateAgent, |
| ); |
|
|
| |
| |
| |
| |
| |
| |
| router.post( |
| '/:id/duplicate', |
| checkAgentCreate, |
| canAccessAgentResource({ |
| requiredPermission: PermissionBits.VIEW, |
| resourceIdParam: 'id', |
| }), |
| v1.duplicateAgent, |
| ); |
|
|
| |
| |
| |
| |
| |
| |
| router.delete( |
| '/:id', |
| checkAgentCreate, |
| canAccessAgentResource({ |
| requiredPermission: PermissionBits.DELETE, |
| resourceIdParam: 'id', |
| }), |
| v1.deleteAgent, |
| ); |
|
|
| |
| |
| |
| |
| |
| |
| |
| router.post( |
| '/:id/revert', |
| checkGlobalAgentShare, |
| canAccessAgentResource({ |
| requiredPermission: PermissionBits.EDIT, |
| resourceIdParam: 'id', |
| }), |
| v1.revertAgentVersion, |
| ); |
|
|
| |
| |
| |
| |
| |
| |
| router.get('/', checkAgentAccess, v1.getListAgents); |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| avatar.post( |
| '/:agent_id/avatar/', |
| checkAgentAccess, |
| canAccessAgentResource({ |
| requiredPermission: PermissionBits.EDIT, |
| resourceIdParam: 'agent_id', |
| }), |
| v1.uploadAgentAvatar, |
| ); |
|
|
| module.exports = { v1: router, avatar }; |
|
|