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.

65 lines 2.79 kB
/** * Element manager interface for handling element operations. * Each element type should have a corresponding manager implementation. */ import { IElement, ElementValidationResult } from './IElement.js'; import { ElementType } from '../../portfolio/types.js'; export interface IElementManager<T extends IElement> { load(path: string): Promise<T>; save(element: T, path: string): Promise<void>; delete(path: string): Promise<void>; exists(path: string): Promise<boolean>; list(): Promise<T[]>; find(predicate: (element: T) => boolean): Promise<T | undefined>; findMany(predicate: (element: T) => boolean): Promise<T[]>; validate(element: T): ElementValidationResult; validatePath(path: string): boolean; getElementType(): ElementType; getFileExtension(): string; importElement(data: string, format?: 'json' | 'yaml' | 'markdown'): Promise<T>; exportElement(element: T, format?: 'json' | 'yaml' | 'markdown'): Promise<string>; } export interface IElementFactory<T extends IElement> { create(metadata: Partial<T['metadata']>): T; createFromTemplate(templateId: string, overrides?: Partial<T>): Promise<T>; getDefaultMetadata(): T['metadata']; } export interface IElementLifecycleManager<T extends IElement> { activate(element: T): Promise<void>; deactivate(element: T): Promise<void>; isActive(element: T): boolean; getActiveElements(): T[]; suspend(element: T): Promise<void>; resume(element: T): Promise<void>; onActivate(handler: (element: T) => void): void; onDeactivate(handler: (element: T) => void): void; onStatusChange(handler: (element: T, oldStatus: string, newStatus: string) => void): void; } export interface IBatchOperations<T extends IElement> { loadMany(paths: string[]): Promise<T[]>; saveMany(elements: Map<string, T>): Promise<void>; deleteMany(paths: string[]): Promise<void>; validateMany(elements: T[]): Map<T, ElementValidationResult>; } export interface IElementSearch<T extends IElement> { search(query: string): Promise<T[]>; searchByTag(tag: string): Promise<T[]>; searchByAuthor(author: string): Promise<T[]>; filter(criteria: FilterCriteria<T>): Promise<T[]>; } export interface FilterCriteria<T extends IElement> { type?: ElementType; tags?: string[]; author?: string; minRating?: number; maxRating?: number; hasReferences?: boolean; custom?: (element: T) => boolean; } export interface IElementVersioning<T extends IElement> { getVersion(element: T): string; incrementVersion(element: T, type: 'major' | 'minor' | 'patch'): T; compareVersions(v1: string, v2: string): -1 | 0 | 1; isCompatible(element: T, constraint: string): boolean; } //# sourceMappingURL=IElementManager.d.ts.map