n8n-nodes-pdf-accessibility
Version:
AI-powered PDF accessibility automation for N8N - comprehensive WCAG compliance analysis, intelligent remediation, and professional audit reporting with 5 integrated accessibility tools
89 lines (88 loc) • 3.47 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.AnthropicProvider = void 0;
const axios_1 = __importDefault(require("axios"));
const base_1 = require("./base");
class AnthropicProvider extends base_1.BaseLLMProvider {
getName() {
return 'Anthropic';
}
getModels() {
return [
'claude-3-5-sonnet-20241022',
'claude-3-5-haiku-20241022',
'claude-3-opus-20240229',
'claude-3-sonnet-20240229',
'claude-3-haiku-20240307',
];
}
async validateCredentials() {
try {
if (!this.isValidApiKey(this.credentials.apiKey)) {
return false;
}
const response = await axios_1.default.post(`${AnthropicProvider.BASE_URL}/messages`, {
model: 'claude-3-haiku-20240307',
max_tokens: 10,
messages: [{ role: 'user', content: 'Hello' }],
}, {
headers: {
'x-api-key': this.credentials.apiKey,
'anthropic-version': AnthropicProvider.VERSION,
'Content-Type': 'application/json',
},
timeout: 10000,
});
return response.status === 200;
}
catch (error) {
return false;
}
}
async analyzeAccessibility(text, documentInfo, options) {
const model = options.model || this.credentials.model || 'claude-3-5-sonnet-20241022';
const prompt = this.buildAnalysisPrompt(text, documentInfo, options.wcagLevel, options.language || 'en-US');
try {
const response = await axios_1.default.post(`${AnthropicProvider.BASE_URL}/messages`, {
model,
max_tokens: AnthropicProvider.MAX_TOKENS,
messages: [
{
role: 'user',
content: prompt,
},
],
}, {
headers: {
'x-api-key': this.credentials.apiKey,
'anthropic-version': AnthropicProvider.VERSION,
'Content-Type': 'application/json',
},
timeout: 60000,
});
const analysisText = response.data.content[0]?.text;
if (!analysisText) {
throw new Error('No analysis content received from Anthropic');
}
return this.parseAnalysisResponse(analysisText, documentInfo.fileName);
}
catch (error) {
if (axios_1.default.isAxiosError(error)) {
const status = error.response?.status;
const message = error.response?.data?.error?.message || error.message;
throw new Error(`Anthropic API Error (${status}): ${message}`);
}
throw new Error(`Anthropic analysis failed: ${error instanceof Error ? error.message : String(error)}`);
}
}
isValidApiKey(apiKey) {
return /^sk-ant-api/.test(apiKey) && apiKey.length > 20;
}
}
exports.AnthropicProvider = AnthropicProvider;
AnthropicProvider.BASE_URL = 'https://api.anthropic.com/v1';
AnthropicProvider.VERSION = '2023-06-01';
AnthropicProvider.MAX_TOKENS = 4000;