UNPKG

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.

58 lines 9.53 kB
"use strict"; /** * Model-Agnostic Adapter Types * * Unified interface for any LLM provider. LLMverify doesn't care if * the underlying provider is OpenAI, Anthropic, Groq, or local. * * WHAT THIS PROVIDES: * - Single unified LlmClient interface * - Pluggable adapters per provider * - Zero provider logic in engines/monitor * - Easy to extend without breaking API * * WHAT THIS DOES NOT DO: * - Handle authentication (use provider SDKs) * - Manage API keys (pass via config) * - Rate limit or retry (use provider SDK features) * * @module adapters/types * @author Haiec * @license MIT */ Object.defineProperty(exports, "__esModule", { value: true }); exports.AdapterConfigError = exports.UnsupportedProviderError = exports.AdapterError = void 0; /** * Error thrown when adapter creation fails. */ class AdapterError extends Error { constructor(message, provider, cause) { super(`[${provider}] ${message}`); this.provider = provider; this.cause = cause; this.name = 'AdapterError'; } } exports.AdapterError = AdapterError; /** * Error thrown when a provider is not supported. */ class UnsupportedProviderError extends AdapterError { constructor(provider) { super(`No adapter registered for provider: ${provider}. ` + `Supported providers: openai, anthropic, groq, google, deepseek, mistral, cohere, local, custom`, provider); this.name = 'UnsupportedProviderError'; } } exports.UnsupportedProviderError = UnsupportedProviderError; /** * Error thrown when adapter configuration is invalid. */ class AdapterConfigError extends AdapterError { constructor(provider, message) { super(message, provider); this.name = 'AdapterConfigError'; } } exports.AdapterConfigError = AdapterConfigError; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWRhcHRlcnMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRzs7O0FBbUlIOztHQUVHO0FBQ0gsTUFBYSxZQUFhLFNBQVEsS0FBSztJQUNyQyxZQUNFLE9BQWUsRUFDQyxRQUFvQixFQUNwQixLQUFhO1FBRTdCLEtBQUssQ0FBQyxJQUFJLFFBQVEsS0FBSyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBSGxCLGFBQVEsR0FBUixRQUFRLENBQVk7UUFDcEIsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUc3QixJQUFJLENBQUMsSUFBSSxHQUFHLGNBQWMsQ0FBQztJQUM3QixDQUFDO0NBQ0Y7QUFURCxvQ0FTQztBQUVEOztHQUVHO0FBQ0gsTUFBYSx3QkFBeUIsU0FBUSxZQUFZO0lBQ3hELFlBQVksUUFBZ0I7UUFDMUIsS0FBSyxDQUNILHVDQUF1QyxRQUFRLElBQUk7WUFDbkQsZ0dBQWdHLEVBQ2hHLFFBQXNCLENBQ3ZCLENBQUM7UUFDRixJQUFJLENBQUMsSUFBSSxHQUFHLDBCQUEwQixDQUFDO0lBQ3pDLENBQUM7Q0FDRjtBQVRELDREQVNDO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLGtCQUFtQixTQUFRLFlBQVk7SUFDbEQsWUFBWSxRQUFvQixFQUFFLE9BQWU7UUFDL0MsS0FBSyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsSUFBSSxHQUFHLG9CQUFvQixDQUFDO0lBQ25DLENBQUM7Q0FDRjtBQUxELGdEQUtDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBNb2RlbC1BZ25vc3RpYyBBZGFwdGVyIFR5cGVzXG4gKiBcbiAqIFVuaWZpZWQgaW50ZXJmYWNlIGZvciBhbnkgTExNIHByb3ZpZGVyLiBMTE12ZXJpZnkgZG9lc24ndCBjYXJlIGlmXG4gKiB0aGUgdW5kZXJseWluZyBwcm92aWRlciBpcyBPcGVuQUksIEFudGhyb3BpYywgR3JvcSwgb3IgbG9jYWwuXG4gKiBcbiAqIFdIQVQgVEhJUyBQUk9WSURFUzpcbiAqIC0gU2luZ2xlIHVuaWZpZWQgTGxtQ2xpZW50IGludGVyZmFjZVxuICogLSBQbHVnZ2FibGUgYWRhcHRlcnMgcGVyIHByb3ZpZGVyXG4gKiAtIFplcm8gcHJvdmlkZXIgbG9naWMgaW4gZW5naW5lcy9tb25pdG9yXG4gKiAtIEVhc3kgdG8gZXh0ZW5kIHdpdGhvdXQgYnJlYWtpbmcgQVBJXG4gKiBcbiAqIFdIQVQgVEhJUyBET0VTIE5PVCBETzpcbiAqIC0gSGFuZGxlIGF1dGhlbnRpY2F0aW9uICh1c2UgcHJvdmlkZXIgU0RLcylcbiAqIC0gTWFuYWdlIEFQSSBrZXlzIChwYXNzIHZpYSBjb25maWcpXG4gKiAtIFJhdGUgbGltaXQgb3IgcmV0cnkgKHVzZSBwcm92aWRlciBTREsgZmVhdHVyZXMpXG4gKiBcbiAqIEBtb2R1bGUgYWRhcHRlcnMvdHlwZXNcbiAqIEBhdXRob3IgSGFpZWNcbiAqIEBsaWNlbnNlIE1JVFxuICovXG5cbi8qKlxuICogU3VwcG9ydGVkIExMTSBwcm92aWRlciBpZGVudGlmaWVycy5cbiAqIFVzZSAnY3VzdG9tJyBmb3IgYW55IHByb3ZpZGVyIG5vdCBleHBsaWNpdGx5IGxpc3RlZC5cbiAqL1xuZXhwb3J0IHR5cGUgUHJvdmlkZXJJZCA9IFxuICB8ICdvcGVuYWknXG4gIHwgJ2FudGhyb3BpYydcbiAgfCAnZ3JvcSdcbiAgfCAnZ29vZ2xlJ1xuICB8ICdkZWVwc2VlaydcbiAgfCAnbWlzdHJhbCdcbiAgfCAnY29oZXJlJ1xuICB8ICdsb2NhbCdcbiAgfCAnY3VzdG9tJztcblxuLyoqXG4gKiBOb3JtYWxpemVkIHJlcXVlc3QgZm9ybWF0IGZvciBhbGwgcHJvdmlkZXJzLlxuICogQWRhcHRlcnMgdHJhbnNsYXRlIHRoaXMgdG8gcHJvdmlkZXItc3BlY2lmaWMgZm9ybWF0cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMbG1SZXF1ZXN0IHtcbiAgLyoqIE1vZGVsIGlkZW50aWZpZXIgKGUuZy4sIFwiZ3B0LTRcIiwgXCJjbGF1ZGUtMy1zb25uZXRcIikgKi9cbiAgbW9kZWw/OiBzdHJpbmc7XG4gIC8qKiBVc2VyIHByb21wdCAvIG1lc3NhZ2UgKi9cbiAgcHJvbXB0OiBzdHJpbmc7XG4gIC8qKiBTeXN0ZW0gcHJvbXB0IChpZiBzdXBwb3J0ZWQgYnkgcHJvdmlkZXIpICovXG4gIHN5c3RlbT86IHN0cmluZztcbiAgLyoqIFRlbXBlcmF0dXJlICgwLTIsIHByb3ZpZGVyLWRlcGVuZGVudCkgKi9cbiAgdGVtcGVyYXR1cmU/OiBudW1iZXI7XG4gIC8qKiBNYXhpbXVtIHRva2VucyBpbiByZXNwb25zZSAqL1xuICBtYXhUb2tlbnM/OiBudW1iZXI7XG4gIC8qKiBTdG9wIHNlcXVlbmNlcyAqL1xuICBzdG9wPzogc3RyaW5nW107XG4gIC8qKiBQcm92aWRlci1zcGVjaWZpYyBtZXRhZGF0YSAqL1xuICBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuXG4vKipcbiAqIE5vcm1hbGl6ZWQgcmVzcG9uc2UgZm9ybWF0IGZyb20gYWxsIHByb3ZpZGVycy5cbiAqIEFkYXB0ZXJzIHRyYW5zbGF0ZSBwcm92aWRlciByZXNwb25zZXMgdG8gdGhpcyBmb3JtYXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGxtUmVzcG9uc2Uge1xuICAvKiogR2VuZXJhdGVkIHRleHQgY29udGVudCAqL1xuICB0ZXh0OiBzdHJpbmc7XG4gIC8qKiBUb2tlbiBjb3VudCAoY29tcGxldGlvbiB0b2tlbnMpICovXG4gIHRva2VuczogbnVtYmVyO1xuICAvKiogVG90YWwgdG9rZW5zIChwcm9tcHQgKyBjb21wbGV0aW9uKSBpZiBhdmFpbGFibGUgKi9cbiAgdG90YWxUb2tlbnM/OiBudW1iZXI7XG4gIC8qKiBNb2RlbCB1c2VkIGZvciBnZW5lcmF0aW9uICovXG4gIG1vZGVsPzogc3RyaW5nO1xuICAvKiogRmluaXNoIHJlYXNvbiBpZiBhdmFpbGFibGUgKi9cbiAgZmluaXNoUmVhc29uPzogJ3N0b3AnIHwgJ2xlbmd0aCcgfCAnY29udGVudF9maWx0ZXInIHwgJ3Rvb2xfY2FsbHMnIHwgJ2Vycm9yJyB8IHN0cmluZztcbiAgLyoqIFJhdyBwcm92aWRlciByZXNwb25zZSAoZm9yIGRlYnVnZ2luZy9hZHZhbmNlZCB1c2UpICovXG4gIHJhdz86IHVua25vd247XG59XG5cbi8qKlxuICogVW5pZmllZCBMTE0gY2xpZW50IGludGVyZmFjZS5cbiAqIEFsbCBhZGFwdGVycyBpbXBsZW1lbnQgdGhpcyBpbnRlcmZhY2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGxtQ2xpZW50IHtcbiAgLyoqIFByb3ZpZGVyIGlkZW50aWZpZXIgKi9cbiAgcmVhZG9ubHkgcHJvdmlkZXI6IFByb3ZpZGVySWQ7XG4gIFxuICAvKiogUHJvdmlkZXIgbmFtZSBmb3IgZGlzcGxheSAqL1xuICByZWFkb25seSBwcm92aWRlck5hbWU/OiBzdHJpbmc7XG4gIFxuICAvKipcbiAgICogR2VuZXJhdGUgYSBjb21wbGV0aW9uLlxuICAgKiBAcGFyYW0gcmVxdWVzdCAtIE5vcm1hbGl6ZWQgcmVxdWVzdFxuICAgKiBAcmV0dXJucyBOb3JtYWxpemVkIHJlc3BvbnNlXG4gICAqL1xuICBnZW5lcmF0ZShyZXF1ZXN0OiBMbG1SZXF1ZXN0KTogUHJvbWlzZTxMbG1SZXNwb25zZT47XG4gIFxuICAvKipcbiAgICogR2VuZXJhdGUgZW1iZWRkaW5ncyAob3B0aW9uYWwpLlxuICAgKiBAcGFyYW0gaW5wdXQgLSBUZXh0IG9yIGFycmF5IG9mIHRleHRzXG4gICAqIEByZXR1cm5zIEFycmF5IG9mIGVtYmVkZGluZyB2ZWN0b3JzXG4gICAqL1xuICBlbWJlZD8oaW5wdXQ6IHN0cmluZyB8IHN0cmluZ1tdKTogUHJvbWlzZTxudW1iZXJbXVtdPjtcbiAgXG4gIC8qKlxuICAgKiBTdHJlYW0gYSBjb21wbGV0aW9uIChvcHRpb25hbCkuXG4gICAqIEBwYXJhbSByZXF1ZXN0IC0gTm9ybWFsaXplZCByZXF1ZXN0XG4gICAqIEByZXR1cm5zIEFzeW5jIGl0ZXJhdG9yIG9mIHRleHQgY2h1bmtzXG4gICAqL1xuICBzdHJlYW0/KHJlcXVlc3Q6IExsbVJlcXVlc3QpOiBBc3luY0l0ZXJhYmxlPHN0cmluZz47XG4gIFxuICAvKipcbiAgICogQ2hlY2sgaWYgdGhlIGNsaWVudCBpcyBoZWFsdGh5L2Nvbm5lY3RlZC5cbiAgICogQHJldHVybnMgVHJ1ZSBpZiBoZWFsdGh5XG4gICAqL1xuICBoZWFsdGhDaGVjaz8oKTogUHJvbWlzZTxib29sZWFuPjtcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBjcmVhdGluZyBhbiBhZGFwdGVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFkYXB0ZXJDb25maWcge1xuICAvKiogUHJvdmlkZXIgaWRlbnRpZmllciAqL1xuICBwcm92aWRlcjogUHJvdmlkZXJJZDtcbiAgXG4gIC8qKiBcbiAgICogRXhpc3RpbmcgU0RLIGNsaWVudCBpbnN0YW5jZSAocHJlZmVycmVkKS5cbiAgICogRm9yICdsb2NhbCcgcHJvdmlkZXIsIHRoaXMgc2hvdWxkIGJlIGEgZnVuY3Rpb246IChwcm9tcHQ6IHN0cmluZykgPT4gUHJvbWlzZTxzdHJpbmc+XG4gICAqL1xuICBjbGllbnQ/OiB1bmtub3duO1xuICBcbiAgLyoqIEFQSSBrZXkgKGlmIG5vdCB1c2luZyBleGlzdGluZyBjbGllbnQpICovXG4gIGFwaUtleT86IHN0cmluZztcbiAgXG4gIC8qKiBCYXNlIFVSTCBvdmVycmlkZSAoZm9yIHByb3hpZXMgb3Igc2VsZi1ob3N0ZWQpICovXG4gIGJhc2VVcmw/OiBzdHJpbmc7XG4gIFxuICAvKiogRGVmYXVsdCBtb2RlbCB0byB1c2UgaWYgbm90IHNwZWNpZmllZCBpbiByZXF1ZXN0ICovXG4gIGRlZmF1bHRNb2RlbD86IHN0cmluZztcbiAgXG4gIC8qKiBQcm92aWRlci1zcGVjaWZpYyBleHRyYSBjb25maWd1cmF0aW9uICovXG4gIGV4dHJhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIFxuICAvKiogQ3VzdG9tIHByb3ZpZGVyIG5hbWUgKGZvciAnY3VzdG9tJyBwcm92aWRlcikgKi9cbiAgcHJvdmlkZXJOYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFkYXB0ZXIgYnVpbGRlciBmdW5jdGlvbiB0eXBlLlxuICogVXNlZCBpbnRlcm5hbGx5IGJ5IHRoZSBhZGFwdGVyIHJlZ2lzdHJ5LlxuICovXG5leHBvcnQgdHlwZSBBZGFwdGVyQnVpbGRlciA9IChjb25maWc6IEFkYXB0ZXJDb25maWcpID0+IExsbUNsaWVudDtcblxuLyoqXG4gKiBFcnJvciB0aHJvd24gd2hlbiBhZGFwdGVyIGNyZWF0aW9uIGZhaWxzLlxuICovXG5leHBvcnQgY2xhc3MgQWRhcHRlckVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgcHVibGljIHJlYWRvbmx5IHByb3ZpZGVyOiBQcm92aWRlcklkLFxuICAgIHB1YmxpYyByZWFkb25seSBjYXVzZT86IEVycm9yXG4gICkge1xuICAgIHN1cGVyKGBbJHtwcm92aWRlcn1dICR7bWVzc2FnZX1gKTtcbiAgICB0aGlzLm5hbWUgPSAnQWRhcHRlckVycm9yJztcbiAgfVxufVxuXG4vKipcbiAqIEVycm9yIHRocm93biB3aGVuIGEgcHJvdmlkZXIgaXMgbm90IHN1cHBvcnRlZC5cbiAqL1xuZXhwb3J0IGNsYXNzIFVuc3VwcG9ydGVkUHJvdmlkZXJFcnJvciBleHRlbmRzIEFkYXB0ZXJFcnJvciB7XG4gIGNvbnN0cnVjdG9yKHByb3ZpZGVyOiBzdHJpbmcpIHtcbiAgICBzdXBlcihcbiAgICAgIGBObyBhZGFwdGVyIHJlZ2lzdGVyZWQgZm9yIHByb3ZpZGVyOiAke3Byb3ZpZGVyfS4gYCArXG4gICAgICBgU3VwcG9ydGVkIHByb3ZpZGVyczogb3BlbmFpLCBhbnRocm9waWMsIGdyb3EsIGdvb2dsZSwgZGVlcHNlZWssIG1pc3RyYWwsIGNvaGVyZSwgbG9jYWwsIGN1c3RvbWAsXG4gICAgICBwcm92aWRlciBhcyBQcm92aWRlcklkXG4gICAgKTtcbiAgICB0aGlzLm5hbWUgPSAnVW5zdXBwb3J0ZWRQcm92aWRlckVycm9yJztcbiAgfVxufVxuXG4vKipcbiAqIEVycm9yIHRocm93biB3aGVuIGFkYXB0ZXIgY29uZmlndXJhdGlvbiBpcyBpbnZhbGlkLlxuICovXG5leHBvcnQgY2xhc3MgQWRhcHRlckNvbmZpZ0Vycm9yIGV4dGVuZHMgQWRhcHRlckVycm9yIHtcbiAgY29uc3RydWN0b3IocHJvdmlkZXI6IFByb3ZpZGVySWQsIG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UsIHByb3ZpZGVyKTtcbiAgICB0aGlzLm5hbWUgPSAnQWRhcHRlckNvbmZpZ0Vycm9yJztcbiAgfVxufVxuIl19