Skip to main content
Glama
mkXultra
by mkXultra
ManagementAdapter.ts2.73 kB
import { LockService } from '../services/LockService.js'; import { RoomNotFoundError } from '../errors/index.js'; import type { IManagementAPI, SystemStatus, RoomStats } from '../features/management/index.js'; import { getDataDirectory } from '../utils/dataDir.js'; export class ManagementAdapter { private api?: IManagementAPI; private roomsAdapter?: any; // Will be injected private messageAdapter?: any; // Will be injected constructor( private readonly lockService: LockService ) {} setRoomsAdapter(roomsAdapter: any) { this.roomsAdapter = roomsAdapter; } setMessageAdapter(messageAdapter: any) { this.messageAdapter = messageAdapter; } async initialize(): Promise<void> { // Dynamic import to avoid circular dependencies const { ManagementAPI } = await import('../features/management/index.js'); // Use the dataDir from lockService instead of getDataDirectory() const dataDir = (this.lockService as any).dataDir; this.api = new ManagementAPI(dataDir); } async getStatus(params?: { roomName?: string }): Promise<{ rooms: any[]; totalRooms: number; totalOnlineUsers: number; totalMessages: number }> { if (!this.api) { await this.initialize(); } // LockService is now handled in the storage layer const systemStatus = await this.api!.getSystemStatus(); // Convert to expected format return { rooms: systemStatus.rooms.map((room: any) => ({ name: room.name, onlineUsers: room.onlineUsers, totalMessages: room.totalMessages, storageSize: room.storageSize })), totalRooms: systemStatus.totalRooms, totalOnlineUsers: systemStatus.totalOnlineUsers, totalMessages: systemStatus.totalMessages }; } async clearRoomMessages(params: { roomName: string; confirm: boolean }): Promise<{ success: boolean; roomName: string; clearedCount: number }> { if (!this.api) { await this.initialize(); } // Check if room exists if (!this.roomsAdapter) { throw new Error('RoomsAdapter not initialized'); } const roomExists = await this.roomsAdapter.roomExists(params.roomName); if (!roomExists) { throw new RoomNotFoundError(params.roomName); } // LockService is now handled in the storage layer const result = await this.api!.clearRoomMessages(params.roomName, params.confirm); // Clear the message cache for this room if (this.messageAdapter && this.messageAdapter.clearRoomCache) { this.messageAdapter.clearRoomCache(params.roomName); } return { success: result.success, roomName: result.roomName, clearedCount: result.clearedCount }; } }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/mkXultra/agent-communication-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server