Skip to main content
Glama

marm-mcp

state.js1.96 kB
// state.js - Centralized state management for MARM chatbot // ===== Centralized State Management for MARM Chatbot ===== const STATE_KEY = 'marm-current-state'; // --- Application State (Private) --- const state = { isMarmActive: false, currentSessionId: null }; // --- State Getter --- export function getState() { return { ...state }; } // --- State Persistence --- function persistState() { try { localStorage.setItem(STATE_KEY, JSON.stringify(state)); } catch (e) { console.warn('Failed to persist state:', e); } } // --- State Restoration --- export function restoreState() { try { const saved = localStorage.getItem(STATE_KEY); if (saved) { const parsedState = JSON.parse(saved); try { validateState(parsedState); Object.assign(state, parsedState); } catch (validationError) { console.warn('Saved state failed validation, resetting to defaults:', validationError); resetToDefaults(); } } } catch (e) { console.warn('Failed to restore state, using defaults:', e); resetToDefaults(); } } // --- State Reset --- function resetToDefaults() { state.isMarmActive = false; state.currentSessionId = null; persistState(); } restoreState(); // --- State Validation --- export function validateState(newState) { if (typeof newState.isMarmActive !== 'boolean') { throw new Error('isMarmActive must be boolean'); } if (newState.currentSessionId && typeof newState.currentSessionId !== 'string') { throw new Error('currentSessionId must be string or null'); } return true; } // ===== State Management Functions ===== export function updateState(updates) { const newState = { ...state, ...updates }; validateState(newState); Object.assign(state, newState); persistState(); return { ...state }; } export function resetState() { return updateState({ isMarmActive: false, currentSessionId: null }); }

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/Lyellr88/marm-mcp'

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