@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 • 7.52 kB
JavaScript
/**
* Standardized CRUD operation response types
*
* This module provides consistent error handling for all CRUD operations
* across element managers and handlers. Instead of throwing exceptions,
* operations return structured responses that indicate success/failure.
*
* Design Principles:
* - Return responses, don't throw exceptions for expected errors
* - Provide detailed error context for debugging
* - Include error codes for programmatic handling
* - Maintain backward compatibility for success paths
*/
/**
* Standard error codes for CRUD operations
*/
export var CrudErrorCode;
(function (CrudErrorCode) {
/** Element not found when attempting read/update/delete */
CrudErrorCode["NOT_FOUND"] = "NOT_FOUND";
/** Element already exists when attempting create */
CrudErrorCode["ALREADY_EXISTS"] = "ALREADY_EXISTS";
/** Validation failed for element data */
CrudErrorCode["VALIDATION_FAILED"] = "VALIDATION_FAILED";
/** Attempted to modify read-only field */
CrudErrorCode["READ_ONLY_FIELD"] = "READ_ONLY_FIELD";
/** Referenced element does not exist */
CrudErrorCode["INVALID_REFERENCE"] = "INVALID_REFERENCE";
/** Circular dependency detected */
CrudErrorCode["CIRCULAR_DEPENDENCY"] = "CIRCULAR_DEPENDENCY";
/** Operation failed for other reasons */
CrudErrorCode["OPERATION_FAILED"] = "OPERATION_FAILED";
/** Invalid input parameters */
CrudErrorCode["INVALID_INPUT"] = "INVALID_INPUT";
/** Permission denied */
CrudErrorCode["PERMISSION_DENIED"] = "PERMISSION_DENIED";
})(CrudErrorCode || (CrudErrorCode = {}));
/**
* Helper to create a successful response
*/
export function successResponse(data) {
return {
success: true,
data,
};
}
/**
* Helper to create an error response
*/
export function errorResponse(error, errorCode, details) {
return {
success: false,
error,
errorCode,
details,
};
}
/**
* Helper to wrap exceptions as error responses
*/
export function exceptionToErrorResponse(error, context = {}) {
const message = error instanceof Error ? error.message : String(error);
return errorResponse(`Operation failed: ${message}`, CrudErrorCode.OPERATION_FAILED, { ...context, originalError: message });
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3J1ZFJlc3BvbnNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL0NydWRSZXNwb25zZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7O0dBWUc7QUFFSDs7R0FFRztBQUNILE1BQU0sQ0FBTixJQUFZLGFBMkJYO0FBM0JELFdBQVksYUFBYTtJQUN2QiwyREFBMkQ7SUFDM0Qsd0NBQXVCLENBQUE7SUFFdkIsb0RBQW9EO0lBQ3BELGtEQUFpQyxDQUFBO0lBRWpDLHlDQUF5QztJQUN6Qyx3REFBdUMsQ0FBQTtJQUV2QywwQ0FBMEM7SUFDMUMsb0RBQW1DLENBQUE7SUFFbkMsd0NBQXdDO0lBQ3hDLHdEQUF1QyxDQUFBO0lBRXZDLG1DQUFtQztJQUNuQyw0REFBMkMsQ0FBQTtJQUUzQyx5Q0FBeUM7SUFDekMsc0RBQXFDLENBQUE7SUFFckMsK0JBQStCO0lBQy9CLGdEQUErQixDQUFBO0lBRS9CLHdCQUF3QjtJQUN4Qix3REFBdUMsQ0FBQTtBQUN6QyxDQUFDLEVBM0JXLGFBQWEsS0FBYixhQUFhLFFBMkJ4QjtBQXdCRDs7R0FFRztBQUNILE1BQU0sVUFBVSxlQUFlLENBQUksSUFBTztJQUN4QyxPQUFPO1FBQ0wsT0FBTyxFQUFFLElBQUk7UUFDYixJQUFJO0tBQ0wsQ0FBQztBQUNKLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQzNCLEtBQWEsRUFDYixTQUF3QixFQUN4QixPQUE2QjtJQUU3QixPQUFPO1FBQ0wsT0FBTyxFQUFFLEtBQUs7UUFDZCxLQUFLO1FBQ0wsU0FBUztRQUNULE9BQU87S0FDUixDQUFDO0FBQ0osQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLHdCQUF3QixDQUN0QyxLQUFjLEVBQ2QsVUFBK0IsRUFBRTtJQUVqQyxNQUFNLE9BQU8sR0FBRyxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkUsT0FBTyxhQUFhLENBQ2xCLHFCQUFxQixPQUFPLEVBQUUsRUFDOUIsYUFBYSxDQUFDLGdCQUFnQixFQUM5QixFQUFFLEdBQUcsT0FBTyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsQ0FDdkMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFN0YW5kYXJkaXplZCBDUlVEIG9wZXJhdGlvbiByZXNwb25zZSB0eXBlc1xuICpcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGNvbnNpc3RlbnQgZXJyb3IgaGFuZGxpbmcgZm9yIGFsbCBDUlVEIG9wZXJhdGlvbnNcbiAqIGFjcm9zcyBlbGVtZW50IG1hbmFnZXJzIGFuZCBoYW5kbGVycy4gSW5zdGVhZCBvZiB0aHJvd2luZyBleGNlcHRpb25zLFxuICogb3BlcmF0aW9ucyByZXR1cm4gc3RydWN0dXJlZCByZXNwb25zZXMgdGhhdCBpbmRpY2F0ZSBzdWNjZXNzL2ZhaWx1cmUuXG4gKlxuICogRGVzaWduIFByaW5jaXBsZXM6XG4gKiAtIFJldHVybiByZXNwb25zZXMsIGRvbid0IHRocm93IGV4Y2VwdGlvbnMgZm9yIGV4cGVjdGVkIGVycm9yc1xuICogLSBQcm92aWRlIGRldGFpbGVkIGVycm9yIGNvbnRleHQgZm9yIGRlYnVnZ2luZ1xuICogLSBJbmNsdWRlIGVycm9yIGNvZGVzIGZvciBwcm9ncmFtbWF0aWMgaGFuZGxpbmdcbiAqIC0gTWFpbnRhaW4gYmFja3dhcmQgY29tcGF0aWJpbGl0eSBmb3Igc3VjY2VzcyBwYXRoc1xuICovXG5cbi8qKlxuICogU3RhbmRhcmQgZXJyb3IgY29kZXMgZm9yIENSVUQgb3BlcmF0aW9uc1xuICovXG5leHBvcnQgZW51bSBDcnVkRXJyb3JDb2RlIHtcbiAgLyoqIEVsZW1lbnQgbm90IGZvdW5kIHdoZW4gYXR0ZW1wdGluZyByZWFkL3VwZGF0ZS9kZWxldGUgKi9cbiAgTk9UX0ZPVU5EID0gJ05PVF9GT1VORCcsXG5cbiAgLyoqIEVsZW1lbnQgYWxyZWFkeSBleGlzdHMgd2hlbiBhdHRlbXB0aW5nIGNyZWF0ZSAqL1xuICBBTFJFQURZX0VYSVNUUyA9ICdBTFJFQURZX0VYSVNUUycsXG5cbiAgLyoqIFZhbGlkYXRpb24gZmFpbGVkIGZvciBlbGVtZW50IGRhdGEgKi9cbiAgVkFMSURBVElPTl9GQUlMRUQgPSAnVkFMSURBVElPTl9GQUlMRUQnLFxuXG4gIC8qKiBBdHRlbXB0ZWQgdG8gbW9kaWZ5IHJlYWQtb25seSBmaWVsZCAqL1xuICBSRUFEX09OTFlfRklFTEQgPSAnUkVBRF9PTkxZX0ZJRUxEJyxcblxuICAvKiogUmVmZXJlbmNlZCBlbGVtZW50IGRvZXMgbm90IGV4aXN0ICovXG4gIElOVkFMSURfUkVGRVJFTkNFID0gJ0lOVkFMSURfUkVGRVJFTkNFJyxcblxuICAvKiogQ2lyY3VsYXIgZGVwZW5kZW5jeSBkZXRlY3RlZCAqL1xuICBDSVJDVUxBUl9ERVBFTkRFTkNZID0gJ0NJUkNVTEFSX0RFUEVOREVOQ1knLFxuXG4gIC8qKiBPcGVyYXRpb24gZmFpbGVkIGZvciBvdGhlciByZWFzb25zICovXG4gIE9QRVJBVElPTl9GQUlMRUQgPSAnT1BFUkFUSU9OX0ZBSUxFRCcsXG5cbiAgLyoqIEludmFsaWQgaW5wdXQgcGFyYW1ldGVycyAqL1xuICBJTlZBTElEX0lOUFVUID0gJ0lOVkFMSURfSU5QVVQnLFxuXG4gIC8qKiBQZXJtaXNzaW9uIGRlbmllZCAqL1xuICBQRVJNSVNTSU9OX0RFTklFRCA9ICdQRVJNSVNTSU9OX0RFTklFRCcsXG59XG5cbi8qKlxuICogU3RhbmRhcmRpemVkIHJlc3BvbnNlIGZvciBDUlVEIG9wZXJhdGlvbnNcbiAqXG4gKiBAdGVtcGxhdGUgVCAtIFR5cGUgb2YgZGF0YSByZXR1cm5lZCBvbiBzdWNjZXNzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3J1ZFJlc3BvbnNlPFQgPSBhbnk+IHtcbiAgLyoqIFdoZXRoZXIgdGhlIG9wZXJhdGlvbiBzdWNjZWVkZWQgKi9cbiAgc3VjY2VzczogYm9vbGVhbjtcblxuICAvKiogRGF0YSByZXR1cm5lZCBvbiBzdWNjZXNzICh1bmRlZmluZWQgb24gZmFpbHVyZSkgKi9cbiAgZGF0YT86IFQ7XG5cbiAgLyoqIEh1bWFuLXJlYWRhYmxlIGVycm9yIG1lc3NhZ2UgKG9ubHkgb24gZmFpbHVyZSkgKi9cbiAgZXJyb3I/OiBzdHJpbmc7XG5cbiAgLyoqIE1hY2hpbmUtcmVhZGFibGUgZXJyb3IgY29kZSAob25seSBvbiBmYWlsdXJlKSAqL1xuICBlcnJvckNvZGU/OiBDcnVkRXJyb3JDb2RlO1xuXG4gIC8qKiBBZGRpdGlvbmFsIGNvbnRleHQgYWJvdXQgdGhlIGVycm9yICovXG4gIGRldGFpbHM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xufVxuXG4vKipcbiAqIEhlbHBlciB0byBjcmVhdGUgYSBzdWNjZXNzZnVsIHJlc3BvbnNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdWNjZXNzUmVzcG9uc2U8VD4oZGF0YTogVCk6IENydWRSZXNwb25zZTxUPiB7XG4gIHJldHVybiB7XG4gICAgc3VjY2VzczogdHJ1ZSxcbiAgICBkYXRhLFxuICB9O1xufVxuXG4vKipcbiAqIEhlbHBlciB0byBjcmVhdGUgYW4gZXJyb3IgcmVzcG9uc2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVycm9yUmVzcG9uc2UoXG4gIGVycm9yOiBzdHJpbmcsXG4gIGVycm9yQ29kZTogQ3J1ZEVycm9yQ29kZSxcbiAgZGV0YWlscz86IFJlY29yZDxzdHJpbmcsIGFueT5cbik6IENydWRSZXNwb25zZTxuZXZlcj4ge1xuICByZXR1cm4ge1xuICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgIGVycm9yLFxuICAgIGVycm9yQ29kZSxcbiAgICBkZXRhaWxzLFxuICB9O1xufVxuXG4vKipcbiAqIEhlbHBlciB0byB3cmFwIGV4Y2VwdGlvbnMgYXMgZXJyb3IgcmVzcG9uc2VzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleGNlcHRpb25Ub0Vycm9yUmVzcG9uc2UoXG4gIGVycm9yOiB1bmtub3duLFxuICBjb250ZXh0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge31cbik6IENydWRSZXNwb25zZTxuZXZlcj4ge1xuICBjb25zdCBtZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpO1xuICByZXR1cm4gZXJyb3JSZXNwb25zZShcbiAgICBgT3BlcmF0aW9uIGZhaWxlZDogJHttZXNzYWdlfWAsXG4gICAgQ3J1ZEVycm9yQ29kZS5PUEVSQVRJT05fRkFJTEVELFxuICAgIHsgLi4uY29udGV4dCwgb3JpZ2luYWxFcnJvcjogbWVzc2FnZSB9XG4gICk7XG59XG4iXX0=