/**
* Error utilities for Project Inspector MCP
* All errors are returned as JSON, never as exceptions
*/
export const ErrorCodes = {
PATH_NOT_FOUND: 'PATH_NOT_FOUND',
PATH_NOT_DIRECTORY: 'PATH_NOT_DIRECTORY',
ACCESS_DENIED: 'ACCESS_DENIED',
MAX_DEPTH_EXCEEDED: 'MAX_DEPTH_EXCEEDED',
MAX_FILES_EXCEEDED: 'MAX_FILES_EXCEEDED',
INVALID_PATH: 'INVALID_PATH',
SCAN_ERROR: 'SCAN_ERROR'
};
export const ErrorMessages = {
[ErrorCodes.PATH_NOT_FOUND]: 'Specified path does not exist',
[ErrorCodes.PATH_NOT_DIRECTORY]: 'Path is not a directory',
[ErrorCodes.ACCESS_DENIED]: 'Permission denied',
[ErrorCodes.MAX_DEPTH_EXCEEDED]: 'Maximum scan depth exceeded',
[ErrorCodes.MAX_FILES_EXCEEDED]: 'Maximum file count exceeded',
[ErrorCodes.INVALID_PATH]: 'Invalid path format',
[ErrorCodes.SCAN_ERROR]: 'Error occurred during scan'
};
/**
* Create a standardized error response
* @param {string} code - Error code from ErrorCodes
* @param {string} [customMessage] - Optional custom message to override default
* @returns {object} Standardized error object
*/
export function createError(code, customMessage = null) {
return {
error: {
code,
message: customMessage || ErrorMessages[code] || 'Unknown error'
}
};
}
/**
* Check if a result is an error
* @param {object} result - Result object to check
* @returns {boolean}
*/
export function isError(result) {
return result && typeof result === 'object' && 'error' in result;
}