mirror of
https://github.com/danny-avila/LibreChat.git
synced 2026-10-21 17:44:11 +00:00
* feat: add self-service code worker pairing * fix: enforce code worker principal boundaries * fix: separate pairing control planes from execution * fix: preserve principal worker routing * fix: pin artifact traffic to code workers * fix: authenticate code worker selection * test: mock worker-aware artifact headers * fix: harden self-service code worker routing * fix: fail closed for principal code pairing * feat: manage personal code environments * fix: harden personal code environment lifecycle * fix: satisfy backend lifecycle types * fix: harden principal environment lifecycle and quotas * fix: fence environment lifecycle races * fix: reconcile code environment stack * style: format code execution headers * fix: reconcile code environment lifecycle * fix: close self-service pairing gaps * fix: close code environment reconciliation gaps * fix: close code environment UI review findings * fix: satisfy code environment type checks * fix: route code priming to selected worker * fix: harden code environment lifecycle fences * fix: type lease renewal interval * fix: harden environment lifecycle recovery * fix: close lifecycle recovery races * fix: type compensated agent timestamps * fix: fence lifecycle cleanup by tenant and revision * fix: scope environment revision fencing
50 lines
2 KiB
JavaScript
50 lines
2 KiB
JavaScript
const express = require('express');
|
|
const mongoose = require('mongoose');
|
|
const { createAdminUsersHandlers, revokeUserCodeEnvironmentWorkers } = require('@librechat/api');
|
|
const { SystemCapabilities } = require('@librechat/data-schemas');
|
|
const { requireCapability } = require('~/server/middleware/roles/capabilities');
|
|
const { requireJwtAuth } = require('~/server/middleware');
|
|
const {
|
|
drainAgentTriggerDeliveriesForUser,
|
|
prepareAgentTriggerUserPurge,
|
|
cancelAgentTriggerUserPurge,
|
|
purgeAgentTriggerDeliveriesForUser,
|
|
} = require('~/server/services/Agents/triggers');
|
|
const db = require('~/models');
|
|
const { getAppConfig, invalidateCodeEnvironmentConfigCache } = require('~/server/services/Config');
|
|
|
|
const router = express.Router();
|
|
|
|
const requireAdminAccess = requireCapability(SystemCapabilities.ACCESS_ADMIN);
|
|
const requireReadUsers = requireCapability(SystemCapabilities.READ_USERS);
|
|
// const requireManageUsers = requireCapability(SystemCapabilities.MANAGE_USERS);
|
|
|
|
const handlers = createAdminUsersHandlers({
|
|
findUsers: db.findUsers,
|
|
countUsers: db.countUsers,
|
|
beginAgentTriggerUserDeletion: db.beginAgentTriggerUserDeletion,
|
|
cancelAgentTriggerUserDeletion: db.cancelAgentTriggerUserDeletion,
|
|
drainAgentTriggerDeliveriesForUser,
|
|
prepareAgentTriggerUserPurge,
|
|
cancelAgentTriggerUserPurge,
|
|
purgeAgentTriggerDeliveriesForUser,
|
|
revokeUserCodeEnvironmentWorkers: async (userId) =>
|
|
revokeUserCodeEnvironmentWorkers({
|
|
mongoose,
|
|
userId,
|
|
appConfig: await getAppConfig({ baseOnly: true }),
|
|
}),
|
|
deleteUserById: db.deleteUserById,
|
|
deleteUserCodeEnvironments: db.deleteUserCodeEnvironments,
|
|
invalidateCodeEnvironmentConfigCache,
|
|
deleteConfig: db.deleteConfig,
|
|
deleteAclEntries: db.deleteAclEntries,
|
|
});
|
|
|
|
router.use(requireJwtAuth, requireAdminAccess);
|
|
|
|
router.get('/', requireReadUsers, handlers.listUsers);
|
|
router.get('/search', requireReadUsers, handlers.searchUsers);
|
|
// router.delete('/:id', requireManageUsers, handlers.deleteUser);
|
|
|
|
module.exports = router;
|