| 1868 | 1868 | throw new Error(`Invalid role provided. Expected one of: system, assistant, user. Got: ${role}`); |
| 1869 | 1869 | }; |
| 1870 | 1870 | |
| 1871 | | - const messages = []; |
| 1871 | + const processMessage = async (mesId) => { |
| 1872 | | - |
| 1872 | + const msg = chat[mesId]; |
| 1873 | | - for (let messageId = range.start; messageId <= range.end; messageId++) { |
| 1873 | + if (!msg) { |
| 1874 | | - const message = chat[messageId]; |
| 1874 | + console.warn(`WARN: No message found with ID ${mesId}`); |
| 1875 | | - if (!message) { |
| 1875 | + return null; |
| 1876 | | - console.warn(`WARN: No message found with ID ${messageId}`); |
| 1877 | | - continue; |
| 1878 | 1876 | } |
| 1879 | 1877 | |
| 1880 | 1878 | if (role && !filterByRole(messagemsg)) { |
| 1881 | 1879 | console.debug(`/messages: Skipping message with ID ${messageIdmesId} due to role filter`); |
| 1882 | 1880 | continuereturn null; |
| 1883 | 1881 | } |
| 1884 | 1882 | |
| 1885 | 1883 | if (!includeHidden && messagemsg.is_system) { |
| 1886 | 1884 | console.debug(`/messages: Skipping hidden message with ID ${messageIdmesId}`); |
| 1887 | 1885 | continuereturn null; |
| 1888 | 1886 | } |
| 1889 | 1887 | |
| 1890 | | - if (includeNames) { |
| 1888 | + return includeNames ? `${msg.name}: ${msg.mes}` : msg.mes; |
| 1891 | | - messages.push(`${message.name}: ${message.mes}`); |
| 1889 | + }; |
| 1892 | | - } else { |
| 1890 | + |
| 1893 | | - messages.push(message.mes); |
| 1891 | + const messagePromises = new Array(range.end - range.start + 1); |
| 1894 | | - } |
| 1892 | + |
| 1893 | + for (let rInd = range.start; rInd <= range.end; ++rInd) |
| 1894 | + messagePromises[rInd - range.start] = processMessage(rInd); |
| 1895 | + |
| 1896 | + const messages = await Promise.all(messagePromises); |
| 1897 | + |
| 1898 | + for (let i = 0; i < messages.length; /**/ ) { |
| 1899 | + if (messages[i] !== null) ++i; |
| 1900 | + else messages.splice(i, 1); |
| 1895 | 1901 | } |
| 1896 | 1902 | |
| 1897 | 1903 | return messages.join('\n\n'); |