llmverify
Version:
AI Output Verification Toolkit — Local-first LLM safety, hallucination detection, PII redaction, prompt injection defense, and runtime monitoring. Zero telemetry. OWASP LLM Top 10 aligned.
90 lines • 8.87 kB
JavaScript
"use strict";
/**
* llmverify Error Classes
*
* Custom error types for clear error handling.
*
* @module errors
* @author Haiec
* @license MIT
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.EngineError = exports.ConfigurationError = exports.VerificationError = exports.ValidationError = exports.PrivacyViolationError = exports.LLMVerifyError = void 0;
const codes_1 = require("./errors/codes");
/**
* Base error class for llmverify
*/
class LLMVerifyError extends Error {
constructor(message, code, details, requestId) {
super(message);
this.name = 'LLMVerifyError';
this.code = code;
this.requestId = requestId;
if (code) {
this.metadata = (0, codes_1.getErrorMetadata)(code, details, requestId);
}
Error.captureStackTrace(this, this.constructor);
}
toJSON() {
return {
name: this.name,
message: this.message,
code: this.code,
metadata: this.metadata,
stack: this.stack
};
}
}
exports.LLMVerifyError = LLMVerifyError;
/**
* Privacy violation error
*/
class PrivacyViolationError extends LLMVerifyError {
constructor(message, details, requestId) {
super(message, codes_1.ErrorCode.PRIVACY_VIOLATION, details, requestId);
this.name = 'PrivacyViolationError';
}
}
exports.PrivacyViolationError = PrivacyViolationError;
/**
* Validation error
*/
class ValidationError extends LLMVerifyError {
constructor(message, code, details, requestId) {
super(message, code || codes_1.ErrorCode.INVALID_INPUT, details, requestId);
this.name = 'ValidationError';
}
}
exports.ValidationError = ValidationError;
/**
* Verification error
*/
class VerificationError extends LLMVerifyError {
constructor(message, code, details, requestId) {
super(message, code || codes_1.ErrorCode.ENGINE_FAILURE, details, requestId);
this.name = 'VerificationError';
}
}
exports.VerificationError = VerificationError;
/**
* Configuration error
*/
class ConfigurationError extends LLMVerifyError {
constructor(message, code, details, requestId) {
super(message, code || codes_1.ErrorCode.INVALID_CONFIG, details, requestId);
this.name = 'ConfigurationError';
}
}
exports.ConfigurationError = ConfigurationError;
/**
* Engine error
*/
class EngineError extends LLMVerifyError {
constructor(engineName, message, details, requestId) {
super(`[${engineName}] ${message}`, codes_1.ErrorCode.ENGINE_FAILURE, { ...details, engineName }, requestId);
this.name = 'EngineError';
this.engineName = engineName;
}
}
exports.EngineError = EngineError;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7O0dBUUc7OztBQUVILDBDQUE0RTtBQUU1RTs7R0FFRztBQUNILE1BQWEsY0FBZSxTQUFRLEtBQUs7SUFLdkMsWUFBWSxPQUFlLEVBQUUsSUFBZ0IsRUFBRSxPQUFhLEVBQUUsU0FBa0I7UUFDOUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxnQkFBZ0IsQ0FBQztRQUM3QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUUzQixJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFBLHdCQUFnQixFQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDN0QsQ0FBQztRQUVELEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxNQUFNO1FBQ0osT0FBTztZQUNMLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1NBQ2xCLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUEzQkQsd0NBMkJDO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLHFCQUFzQixTQUFRLGNBQWM7SUFDdkQsWUFBWSxPQUFlLEVBQUUsT0FBYSxFQUFFLFNBQWtCO1FBQzVELEtBQUssQ0FBQyxPQUFPLEVBQUUsaUJBQVMsQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLElBQUksR0FBRyx1QkFBdUIsQ0FBQztJQUN0QyxDQUFDO0NBQ0Y7QUFMRCxzREFLQztBQUVEOztHQUVHO0FBQ0gsTUFBYSxlQUFnQixTQUFRLGNBQWM7SUFDakQsWUFBWSxPQUFlLEVBQUUsSUFBZ0IsRUFBRSxPQUFhLEVBQUUsU0FBa0I7UUFDOUUsS0FBSyxDQUFDLE9BQU8sRUFBRSxJQUFJLElBQUksaUJBQVMsQ0FBQyxhQUFhLEVBQUUsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3BFLElBQUksQ0FBQyxJQUFJLEdBQUcsaUJBQWlCLENBQUM7SUFDaEMsQ0FBQztDQUNGO0FBTEQsMENBS0M7QUFFRDs7R0FFRztBQUNILE1BQWEsaUJBQWtCLFNBQVEsY0FBYztJQUNuRCxZQUFZLE9BQWUsRUFBRSxJQUFnQixFQUFFLE9BQWEsRUFBRSxTQUFrQjtRQUM5RSxLQUFLLENBQUMsT0FBTyxFQUFFLElBQUksSUFBSSxpQkFBUyxDQUFDLGNBQWMsRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDckUsSUFBSSxDQUFDLElBQUksR0FBRyxtQkFBbUIsQ0FBQztJQUNsQyxDQUFDO0NBQ0Y7QUFMRCw4Q0FLQztBQUVEOztHQUVHO0FBQ0gsTUFBYSxrQkFBbUIsU0FBUSxjQUFjO0lBQ3BELFlBQVksT0FBZSxFQUFFLElBQWdCLEVBQUUsT0FBYSxFQUFFLFNBQWtCO1FBQzlFLEtBQUssQ0FBQyxPQUFPLEVBQUUsSUFBSSxJQUFJLGlCQUFTLENBQUMsY0FBYyxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNyRSxJQUFJLENBQUMsSUFBSSxHQUFHLG9CQUFvQixDQUFDO0lBQ25DLENBQUM7Q0FDRjtBQUxELGdEQUtDO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLFdBQVksU0FBUSxjQUFjO0lBRzdDLFlBQVksVUFBa0IsRUFBRSxPQUFlLEVBQUUsT0FBYSxFQUFFLFNBQWtCO1FBQ2hGLEtBQUssQ0FBQyxJQUFJLFVBQVUsS0FBSyxPQUFPLEVBQUUsRUFBRSxpQkFBUyxDQUFDLGNBQWMsRUFBRSxFQUFFLEdBQUcsT0FBTyxFQUFFLFVBQVUsRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3JHLElBQUksQ0FBQyxJQUFJLEdBQUcsYUFBYSxDQUFDO1FBQzFCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0lBQy9CLENBQUM7Q0FDRjtBQVJELGtDQVFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBsbG12ZXJpZnkgRXJyb3IgQ2xhc3Nlc1xuICogXG4gKiBDdXN0b20gZXJyb3IgdHlwZXMgZm9yIGNsZWFyIGVycm9yIGhhbmRsaW5nLlxuICogXG4gKiBAbW9kdWxlIGVycm9yc1xuICogQGF1dGhvciBIYWllY1xuICogQGxpY2Vuc2UgTUlUXG4gKi9cblxuaW1wb3J0IHsgRXJyb3JDb2RlLCBFcnJvck1ldGFkYXRhLCBnZXRFcnJvck1ldGFkYXRhIH0gZnJvbSAnLi9lcnJvcnMvY29kZXMnO1xuXG4vKipcbiAqIEJhc2UgZXJyb3IgY2xhc3MgZm9yIGxsbXZlcmlmeVxuICovXG5leHBvcnQgY2xhc3MgTExNVmVyaWZ5RXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIHB1YmxpYyByZWFkb25seSBjb2RlPzogRXJyb3JDb2RlO1xuICBwdWJsaWMgcmVhZG9ubHkgbWV0YWRhdGE/OiBFcnJvck1ldGFkYXRhO1xuICBwdWJsaWMgcmVhZG9ubHkgcmVxdWVzdElkPzogc3RyaW5nO1xuICBcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nLCBjb2RlPzogRXJyb3JDb2RlLCBkZXRhaWxzPzogYW55LCByZXF1ZXN0SWQ/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgICB0aGlzLm5hbWUgPSAnTExNVmVyaWZ5RXJyb3InO1xuICAgIHRoaXMuY29kZSA9IGNvZGU7XG4gICAgdGhpcy5yZXF1ZXN0SWQgPSByZXF1ZXN0SWQ7XG4gICAgXG4gICAgaWYgKGNvZGUpIHtcbiAgICAgIHRoaXMubWV0YWRhdGEgPSBnZXRFcnJvck1ldGFkYXRhKGNvZGUsIGRldGFpbHMsIHJlcXVlc3RJZCk7XG4gICAgfVxuICAgIFxuICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIHRoaXMuY29uc3RydWN0b3IpO1xuICB9XG4gIFxuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgIG1lc3NhZ2U6IHRoaXMubWVzc2FnZSxcbiAgICAgIGNvZGU6IHRoaXMuY29kZSxcbiAgICAgIG1ldGFkYXRhOiB0aGlzLm1ldGFkYXRhLFxuICAgICAgc3RhY2s6IHRoaXMuc3RhY2tcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogUHJpdmFjeSB2aW9sYXRpb24gZXJyb3JcbiAqL1xuZXhwb3J0IGNsYXNzIFByaXZhY3lWaW9sYXRpb25FcnJvciBleHRlbmRzIExMTVZlcmlmeUVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nLCBkZXRhaWxzPzogYW55LCByZXF1ZXN0SWQ/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlLCBFcnJvckNvZGUuUFJJVkFDWV9WSU9MQVRJT04sIGRldGFpbHMsIHJlcXVlc3RJZCk7XG4gICAgdGhpcy5uYW1lID0gJ1ByaXZhY3lWaW9sYXRpb25FcnJvcic7XG4gIH1cbn1cblxuLyoqXG4gKiBWYWxpZGF0aW9uIGVycm9yXG4gKi9cbmV4cG9ydCBjbGFzcyBWYWxpZGF0aW9uRXJyb3IgZXh0ZW5kcyBMTE1WZXJpZnlFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZywgY29kZT86IEVycm9yQ29kZSwgZGV0YWlscz86IGFueSwgcmVxdWVzdElkPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSwgY29kZSB8fCBFcnJvckNvZGUuSU5WQUxJRF9JTlBVVCwgZGV0YWlscywgcmVxdWVzdElkKTtcbiAgICB0aGlzLm5hbWUgPSAnVmFsaWRhdGlvbkVycm9yJztcbiAgfVxufVxuXG4vKipcbiAqIFZlcmlmaWNhdGlvbiBlcnJvclxuICovXG5leHBvcnQgY2xhc3MgVmVyaWZpY2F0aW9uRXJyb3IgZXh0ZW5kcyBMTE1WZXJpZnlFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZywgY29kZT86IEVycm9yQ29kZSwgZGV0YWlscz86IGFueSwgcmVxdWVzdElkPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSwgY29kZSB8fCBFcnJvckNvZGUuRU5HSU5FX0ZBSUxVUkUsIGRldGFpbHMsIHJlcXVlc3RJZCk7XG4gICAgdGhpcy5uYW1lID0gJ1ZlcmlmaWNhdGlvbkVycm9yJztcbiAgfVxufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZXJyb3JcbiAqL1xuZXhwb3J0IGNsYXNzIENvbmZpZ3VyYXRpb25FcnJvciBleHRlbmRzIExMTVZlcmlmeUVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nLCBjb2RlPzogRXJyb3JDb2RlLCBkZXRhaWxzPzogYW55LCByZXF1ZXN0SWQ/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlLCBjb2RlIHx8IEVycm9yQ29kZS5JTlZBTElEX0NPTkZJRywgZGV0YWlscywgcmVxdWVzdElkKTtcbiAgICB0aGlzLm5hbWUgPSAnQ29uZmlndXJhdGlvbkVycm9yJztcbiAgfVxufVxuXG4vKipcbiAqIEVuZ2luZSBlcnJvclxuICovXG5leHBvcnQgY2xhc3MgRW5naW5lRXJyb3IgZXh0ZW5kcyBMTE1WZXJpZnlFcnJvciB7XG4gIHB1YmxpYyByZWFkb25seSBlbmdpbmVOYW1lOiBzdHJpbmc7XG4gIFxuICBjb25zdHJ1Y3RvcihlbmdpbmVOYW1lOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZywgZGV0YWlscz86IGFueSwgcmVxdWVzdElkPzogc3RyaW5nKSB7XG4gICAgc3VwZXIoYFske2VuZ2luZU5hbWV9XSAke21lc3NhZ2V9YCwgRXJyb3JDb2RlLkVOR0lORV9GQUlMVVJFLCB7IC4uLmRldGFpbHMsIGVuZ2luZU5hbWUgfSwgcmVxdWVzdElkKTtcbiAgICB0aGlzLm5hbWUgPSAnRW5naW5lRXJyb3InO1xuICAgIHRoaXMuZW5naW5lTmFtZSA9IGVuZ2luZU5hbWU7XG4gIH1cbn1cbiJdfQ==