UNPKG

n8n-nodes-imap-ai

Version:

Simplified IMAP node for n8n with AI-agent support. Clean and modular email and mailbox management for automation workflows.

116 lines 5.47 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getMailboxListOperation = void 0; var MailboxListStatusFields; (function (MailboxListStatusFields) { MailboxListStatusFields["includeMessageCount"] = "includeMessageCount"; MailboxListStatusFields["includeRecentCount"] = "includeRecentCount"; MailboxListStatusFields["includeUnseenCount"] = "includeUnseenCount"; MailboxListStatusFields["includeUidNext"] = "includeUidNext"; MailboxListStatusFields["includeUidValidity"] = "includeUidValidity"; MailboxListStatusFields["includeHighestModseq"] = "includeHighestModseq"; })(MailboxListStatusFields || (MailboxListStatusFields = {})); exports.getMailboxListOperation = { operation: { name: 'Get Many', value: 'loadMailboxList', description: 'Get comprehensive list of all mailbox folders with statistics. Perfect for AI agents to analyze folder structures, find specific mailboxes, or monitor email organization.', }, parameters: [ { displayName: 'Include Status Fields', name: 'includeStatusFields', type: 'multiOptions', default: [], description: 'Select which status fields to include. AI agents can choose specific fields based on their analysis needs.', options: [ { name: 'Highest Modseq', value: MailboxListStatusFields.includeHighestModseq, }, { name: 'Message Count', value: MailboxListStatusFields.includeMessageCount, }, { name: 'Recent Count', value: MailboxListStatusFields.includeRecentCount, }, { name: 'UID Next', value: MailboxListStatusFields.includeUidNext, }, { name: 'UID Validity', value: MailboxListStatusFields.includeUidValidity, }, { name: 'Unseen Count', value: MailboxListStatusFields.includeUnseenCount, }, ], }, { displayName: 'Performance Notice', name: 'noticeSlowResponse', type: 'notice', default: '', description: '💡 Including status fields might slow down the response. AI agents should only request needed fields for optimal performance.', }, ], async executeImapAction(context, itemIndex, client) { var _a, _b, _c, _d, _e, _f, _g; const returnData = []; (_a = context.logger) === null || _a === void 0 ? void 0 : _a.info(`includeStatusFields: ${context.getNodeParameter('includeStatusFields', itemIndex)}`); const includeStatusFields = context.getNodeParameter('includeStatusFields', itemIndex); const statusQuery = { messages: includeStatusFields.includes(MailboxListStatusFields.includeMessageCount), recent: includeStatusFields.includes(MailboxListStatusFields.includeRecentCount), unseen: includeStatusFields.includes(MailboxListStatusFields.includeUnseenCount), uidnext: includeStatusFields.includes(MailboxListStatusFields.includeUidNext), uidvalidity: includeStatusFields.includes(MailboxListStatusFields.includeUidValidity), highestmodseq: includeStatusFields.includes(MailboxListStatusFields.includeHighestModseq), }; const mailboxes = await client.list({ statusQuery: statusQuery, }); let totalMailboxes = 0; let totalMessages = 0; let totalUnseen = 0; for (const mailbox of mailboxes) { (_b = context.logger) === null || _b === void 0 ? void 0 : _b.info(` ${mailbox.path}`); totalMailboxes++; if ((_c = mailbox.status) === null || _c === void 0 ? void 0 : _c.messages) totalMessages += mailbox.status.messages; if ((_d = mailbox.status) === null || _d === void 0 ? void 0 : _d.unseen) totalUnseen += mailbox.status.unseen; const item_json = { operation: 'getMailboxList', path: mailbox.path, name: mailbox.name, status: mailbox.status, hasMessages: ((_e = mailbox.status) === null || _e === void 0 ? void 0 : _e.messages) ? mailbox.status.messages > 0 : false, hasUnseenMessages: ((_f = mailbox.status) === null || _f === void 0 ? void 0 : _f.unseen) ? mailbox.status.unseen > 0 : false, isLeaf: !mailbox.subscribed, level: mailbox.path.split('/').length - 1, }; (_g = context.logger) === null || _g === void 0 ? void 0 : _g.info(` ${JSON.stringify(item_json)}`); returnData.push({ json: item_json, }); } returnData.push({ json: { operation: 'getMailboxList', summary: true, totalMailboxes, totalMessages, totalUnseen, retrievedAt: new Date().toISOString(), statusFieldsIncluded: includeStatusFields, }, }); return returnData; }, }; //# sourceMappingURL=MailboxGetList.js.map