Fix for chat completion prompts

792c077267f7370bcfc6554ebb8a4b2cadb45fe3

Cohee <18619528+Cohee1207@users.noreply.github.com>

2 files changed, +24 -24Ignore whitespace
.eslintrc.js+1 -0
@@ -45,6 +45,7 @@ module.exports = {
4545 Readability: 'readonly',
4646 isProbablyReaderable: 'readonly',
4747 ePub: 'readonly',
48+ diff_match_patch: 'readonly',
4849 },
4950 },
5051 ],
public/script.js+23 -24
@@ -4907,7 +4907,7 @@ export function findItemizedPromptSet(itemizedPrompts, incomingMesId) {
49074907 console.log(`wanting to raw display of ArrayItem: ${PromptArrayItemForRawPromptDisplay} which is mesID ${incomingMesId}`);
49084908 console.log(itemizedPrompts[thisPromptSet]);
49094909 break;
49104910 } else if (itemizedPrompts[i].rawPrompt) {
49114911 priorPromptArrayItemForRawPromptDisplay = i;
49124912 }
49134913 }
@@ -4927,35 +4927,39 @@ async function promptItemize(itemizedPrompts, requestedMesId) {
49274927 }
49284928
49294929 const params = await itemizedParams(itemizedPrompts, thisPromptSet);
4930+ const flatten = (rawPrompt) => Array.isArray(rawPrompt) ? rawPrompt.map(x => x.content).join('\n') : rawPrompt;
49304931
49314932 const template = params.this_main_api == 'openai'
49324933 ? await renderTemplateAsync('itemizationChat', params)
49334934 : await renderTemplateAsync('itemizationText', params);
49344935
49354936 const popup = new Popup(template, POPUP_TYPE.TEXT);
4936- if (priorPromptArrayItemForRawPromptDisplay){
4937+
4937- popup.dlg.querySelector('#diffPrevPrompt').style.display='';
4938+ /** @type {HTMLElement} */
4938- popup.dlg.querySelector('#diffPrevPrompt').addEventListener('click', function () {
4939+ const diffPrevPrompt = popup.dlg.querySelector('#diffPrevPrompt');
4939- var dmp = new diff_match_patch();
4940+ if (priorPromptArrayItemForRawPromptDisplay) {
4940- var text1 = itemizedPrompts[priorPromptArrayItemForRawPromptDisplay].rawPrompt;
4941+ diffPrevPrompt.style.display = '';
4941- var text2 = itemizedPrompts[PromptArrayItemForRawPromptDisplay].rawPrompt;
4942+ diffPrevPrompt.addEventListener('click', function () {
4943+ const dmp = new diff_match_patch();
4944+ const text1 = flatten(itemizedPrompts[priorPromptArrayItemForRawPromptDisplay].rawPrompt);
4945+ const text2 = flatten(itemizedPrompts[PromptArrayItemForRawPromptDisplay].rawPrompt);
49424946
49434947 dmp.Diff_Timeout = 2.0;
4944-
4945- var d = dmp.diff_main(text1, text2);
4946- var ds = dmp.diff_prettyHtml(d);
49474948
4949+ const d = dmp.diff_main(text1, text2);
4950+ let ds = dmp.diff_prettyHtml(d);
49484951 // make it readable
49494952 ds = ds.replaceAll("'background:#e6ffe6;"', "'background:#b9f3b9; color:black;"');
49504953 ds = ds.replaceAll("'background:#ffe6e6;"', "'background:#f5b4b4; color:black;"');
49514954 ds = ds.replaceAll("'&para;"', ""'');
4952- ds = "<div style='display:block;'>" + ds + "</div>";
4955+ const container = document.createElement('div');
4956+ container.innerHTML = DOMPurify.sanitize(ds);
49534957 const rawPromptWrapper = document.getElementById('rawPromptWrapper');
4954- rawPromptWrapper.innerHTML = ds;
4958+ rawPromptWrapper.replaceChildren(container);
49554959 $('#rawPromptPopup').slideToggle();
49564960 });
49574961 } else {
49584962 popup.dlg.querySelector('#diffPrevPrompt').style.display = 'none';
49594963 }
49604964 popup.dlg.querySelector('#copyPromptToClipboard').addEventListener('click', function () {
49614965 let rawPrompt = itemizedPrompts[PromptArrayItemForRawPromptDisplay].rawPrompt;
@@ -4975,16 +4979,11 @@ async function promptItemize(itemizedPrompts, requestedMesId) {
49754979 console.log(itemizedPrompts);
49764980 console.log(itemizedPrompts[PromptArrayItemForRawPromptDisplay].rawPrompt);
49774981
49784982 letconst rawPrompt = flatten(itemizedPrompts[PromptArrayItemForRawPromptDisplay].rawPrompt);
4979- let rawPromptValues = rawPrompt;
4980-
4981- if (Array.isArray(rawPrompt)) {
4982- rawPromptValues = rawPrompt.map(x => x.content).join('\n');
4983- }
49844983
49854984 //let DisplayStringifiedPrompt = JSON.stringify(itemizedPrompts[PromptArrayItemForRawPromptDisplay].rawPrompt).replace(/\n+/g, '<br>');
49864985 const rawPromptWrapper = document.getElementById('rawPromptWrapper');
49874986 rawPromptWrapper.innerText = rawPromptValuesrawPrompt;
49884987 $('#rawPromptPopup').slideToggle();
49894988 });
49904989