UNPKG

@dollhousemcp/mcp-server

Version:

DollhouseMCP - A Model Context Protocol (MCP) server that enables dynamic AI persona management from markdown files, allowing Claude and other compatible AI assistants to activate and switch between different behavioral personas.

47 lines 2.09 kB
import { ElementType } from '../portfolio/types.js'; import { IElement, IElementMetadata } from '../types/elements/IElement.js'; export type ElementLifecycleEvent = 'element:load:start' | 'element:load:success' | 'element:load:error' | 'element:save:start' | 'element:save:success' | 'element:save:error' | 'element:delete:start' | 'element:delete:success' | 'element:delete:error' | 'element:activate' | 'element:deactivate' | 'element:cache:refresh' | 'element:cache:evict' | 'element:external-change' | 'element:lock-timeout'; export interface ElementEventPayload { correlationId: string; elementType: ElementType; elementId?: string; filePath?: string; metadata?: Partial<IElementMetadata>; generation?: number; error?: unknown; extra?: Record<string, unknown>; } export type ElementEventHandler = (payload: ElementEventPayload) => void | Promise<void>; /** * Lightweight dispatcher for element lifecycle events. * Provides minimal EventEmitter wrapper with immutable payload semantics. */ export declare class ElementEventDispatcher { private readonly emitter; private static shared; /** * Subscribe to an event. Returns an unsubscribe function. */ on(event: ElementLifecycleEvent, handler: ElementEventHandler): () => void; /** * Subscribe once. */ once(event: ElementLifecycleEvent, handler: ElementEventHandler): () => void; /** * Emit synchronously (used for start/veto events). */ emit(event: ElementLifecycleEvent, payload: ElementEventPayload): void; /** * Emit asynchronously to decouple observers. */ emitAsync(event: ElementLifecycleEvent, payload: ElementEventPayload): void; /** * Utility helper to snapshot minimal metadata from element instances. */ static snapshotMetadata(element?: IElement): Partial<IElementMetadata> | undefined; /** * Shared singleton dispatcher used when managers don't inject their own. */ static getSharedDispatcher(): ElementEventDispatcher; } //# sourceMappingURL=ElementEventDispatcher.d.ts.map