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.

46 lines 5.05 kB
import { logger } from '../../utils/logger.js'; /** * Minimal transaction helper that pairs commit/rollback actions for BaseElementManager flows. */ export class ElementTransactionScope { label; correlationId; commitActions = []; rollbackActions = []; constructor(label, correlationId) { this.label = label; this.correlationId = correlationId; } addCommit(action) { this.commitActions.push(action); } addRollback(action) { // Rollback actions execute in reverse order of registration this.rollbackActions.unshift(action); } async run(work) { try { await work(); await this.executeActions(this.commitActions); } catch (error) { await this.executeActions(this.rollbackActions, error); throw error; } } async executeActions(actions, error) { for (const action of actions) { try { await action(error); } catch (actionError) { logger.warn('Transaction action failed', { label: this.label, correlationId: this.correlationId, error: actionError instanceof Error ? actionError.message : actionError }); } } } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWxlbWVudFRyYW5zYWN0aW9uU2NvcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWxlbWVudHMvYmFzZS9FbGVtZW50VHJhbnNhY3Rpb25TY29wZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFJL0M7O0dBRUc7QUFDSCxNQUFNLE9BQU8sdUJBQXVCO0lBSUw7SUFBZ0M7SUFINUMsYUFBYSxHQUF3QixFQUFFLENBQUM7SUFDeEMsZUFBZSxHQUF3QixFQUFFLENBQUM7SUFFM0QsWUFBNkIsS0FBYSxFQUFtQixhQUFxQjtRQUFyRCxVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQW1CLGtCQUFhLEdBQWIsYUFBYSxDQUFRO0lBQUcsQ0FBQztJQUV0RixTQUFTLENBQUMsTUFBeUI7UUFDakMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELFdBQVcsQ0FBQyxNQUF5QjtRQUNuQyw0REFBNEQ7UUFDNUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBeUI7UUFDakMsSUFBSSxDQUFDO1lBQ0gsTUFBTSxJQUFJLEVBQUUsQ0FBQztZQUNiLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDaEQsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN2RCxNQUFNLEtBQUssQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO0lBRU8sS0FBSyxDQUFDLGNBQWMsQ0FBQyxPQUE0QixFQUFFLEtBQWU7UUFDeEUsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUM7Z0JBQ0gsTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdEIsQ0FBQztZQUFDLE9BQU8sV0FBVyxFQUFFLENBQUM7Z0JBQ3JCLE1BQU0sQ0FBQyxJQUFJLENBQUMsMkJBQTJCLEVBQUU7b0JBQ3ZDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztvQkFDakIsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO29CQUNqQyxLQUFLLEVBQUUsV0FBVyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsV0FBVztpQkFDeEUsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi8uLi91dGlscy9sb2dnZXIuanMnO1xuXG5leHBvcnQgdHlwZSBUcmFuc2FjdGlvbkFjdGlvbiA9IChlcnJvcj86IHVua25vd24pID0+IFByb21pc2U8dm9pZD4gfCB2b2lkO1xuXG4vKipcbiAqIE1pbmltYWwgdHJhbnNhY3Rpb24gaGVscGVyIHRoYXQgcGFpcnMgY29tbWl0L3JvbGxiYWNrIGFjdGlvbnMgZm9yIEJhc2VFbGVtZW50TWFuYWdlciBmbG93cy5cbiAqL1xuZXhwb3J0IGNsYXNzIEVsZW1lbnRUcmFuc2FjdGlvblNjb3BlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBjb21taXRBY3Rpb25zOiBUcmFuc2FjdGlvbkFjdGlvbltdID0gW107XG4gIHByaXZhdGUgcmVhZG9ubHkgcm9sbGJhY2tBY3Rpb25zOiBUcmFuc2FjdGlvbkFjdGlvbltdID0gW107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBsYWJlbDogc3RyaW5nLCBwcml2YXRlIHJlYWRvbmx5IGNvcnJlbGF0aW9uSWQ6IHN0cmluZykge31cblxuICBhZGRDb21taXQoYWN0aW9uOiBUcmFuc2FjdGlvbkFjdGlvbik6IHZvaWQge1xuICAgIHRoaXMuY29tbWl0QWN0aW9ucy5wdXNoKGFjdGlvbik7XG4gIH1cblxuICBhZGRSb2xsYmFjayhhY3Rpb246IFRyYW5zYWN0aW9uQWN0aW9uKTogdm9pZCB7XG4gICAgLy8gUm9sbGJhY2sgYWN0aW9ucyBleGVjdXRlIGluIHJldmVyc2Ugb3JkZXIgb2YgcmVnaXN0cmF0aW9uXG4gICAgdGhpcy5yb2xsYmFja0FjdGlvbnMudW5zaGlmdChhY3Rpb24pO1xuICB9XG5cbiAgYXN5bmMgcnVuKHdvcms6ICgpID0+IFByb21pc2U8dm9pZD4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgd29yaygpO1xuICAgICAgYXdhaXQgdGhpcy5leGVjdXRlQWN0aW9ucyh0aGlzLmNvbW1pdEFjdGlvbnMpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBhd2FpdCB0aGlzLmV4ZWN1dGVBY3Rpb25zKHRoaXMucm9sbGJhY2tBY3Rpb25zLCBlcnJvcik7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGV4ZWN1dGVBY3Rpb25zKGFjdGlvbnM6IFRyYW5zYWN0aW9uQWN0aW9uW10sIGVycm9yPzogdW5rbm93bik6IFByb21pc2U8dm9pZD4ge1xuICAgIGZvciAoY29uc3QgYWN0aW9uIG9mIGFjdGlvbnMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGFjdGlvbihlcnJvcik7XG4gICAgICB9IGNhdGNoIChhY3Rpb25FcnJvcikge1xuICAgICAgICBsb2dnZXIud2FybignVHJhbnNhY3Rpb24gYWN0aW9uIGZhaWxlZCcsIHtcbiAgICAgICAgICBsYWJlbDogdGhpcy5sYWJlbCxcbiAgICAgICAgICBjb3JyZWxhdGlvbklkOiB0aGlzLmNvcnJlbGF0aW9uSWQsXG4gICAgICAgICAgZXJyb3I6IGFjdGlvbkVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBhY3Rpb25FcnJvci5tZXNzYWdlIDogYWN0aW9uRXJyb3JcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=