| 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 = []; |
| 1894 | | - } |
| 1892 | + |
| 1895 | | - } |
| 1893 | + for (let rInd = range.start; rInd <= range.end; ++rInd) |
| 1894 | + messagePromises.push(processMessage(rInd)); |
| 1895 | + |
| 1896 | + const messages = await Promise.all(messagePromises); |
| 1896 | 1897 | |
| 1897 | 1898 | return messages.filter(m => m !== null).join('\n\n'); |
| 1898 | 1899 | } |
| 1899 | 1900 | |
| 1900 | 1901 | async function runCallback(args, name) { |