UNPKG

n8n

Version:

n8n Workflow Automation Tool

87 lines 3.72 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.sanitizeUnknownAgentCredentials = sanitizeUnknownAgentCredentials; const api_types_1 = require("@n8n/api-types"); function clearUnknownCredentialId(credentialId, accessibleCredentialIds, allowManagedCredentialToken = false) { if (typeof credentialId !== 'string' || credentialId === '') { return credentialId; } if (allowManagedCredentialToken && credentialId === api_types_1.MANAGED_CREDENTIAL_TOKEN) { return credentialId; } return accessibleCredentialIds.has(credentialId) ? credentialId : ''; } function isManagedEpisodicMemoryCredentialPath(path) { return path.join('.') === 'memory.episodicMemory.credential'; } function sanitizeUnknownCredentialsInValue(value, accessibleCredentialIds, path = []) { if (Array.isArray(value)) { return value.map((entry) => sanitizeUnknownCredentialsInValue(entry, accessibleCredentialIds, path)); } if (typeof value !== 'object' || value === null) { return value; } const record = value; const sanitized = {}; for (const [key, entry] of Object.entries(record)) { const nextPath = [...path, key]; if (key === 'credential' && typeof entry === 'string') { sanitized[key] = clearUnknownCredentialId(entry, accessibleCredentialIds, isManagedEpisodicMemoryCredentialPath(nextPath)); continue; } if (key === 'credentialId' && typeof entry === 'string') { sanitized[key] = clearUnknownCredentialId(entry, accessibleCredentialIds); continue; } if (key === 'credentials' && typeof entry === 'object' && entry !== null && !Array.isArray(entry)) { sanitized[key] = Object.fromEntries(Object.entries(entry).map(([credType, credRef]) => { if (typeof credRef !== 'object' || credRef === null || Array.isArray(credRef)) { return [credType, credRef]; } const credentialRef = credRef; if (!('id' in credentialRef) || typeof credentialRef.id !== 'string') { return [ credType, sanitizeUnknownCredentialsInValue(credentialRef, accessibleCredentialIds, [ ...nextPath, credType, ]), ]; } return [ credType, { ...credentialRef, id: clearUnknownCredentialId(credentialRef.id, accessibleCredentialIds), }, ]; })); continue; } sanitized[key] = sanitizeUnknownCredentialsInValue(entry, accessibleCredentialIds, nextPath); } return sanitized; } function sanitizeUnknownAgentCredentials(raw, accessibleCredentialIds) { if (typeof raw !== 'object' || raw === null || Array.isArray(raw)) { return raw; } const sanitized = sanitizeUnknownCredentialsInValue(raw, accessibleCredentialIds); if (!isRecord(sanitized)) { return sanitized; } const model = typeof sanitized.model === 'string' ? sanitized.model : undefined; if ((0, api_types_1.isDraftAgentConfig)({ model }) && typeof sanitized.credential === 'string' && sanitized.credential !== '') { sanitized.credential = ''; } return sanitized; } function isRecord(value) { return typeof value === 'object' && value !== null && !Array.isArray(value); } //# sourceMappingURL=sanitize-unknown-agent-credentials.js.map