diff --git a/api/server/routes/ask.js b/api/server/routes/ask.js
index 69c180c8a7..ad2a7178c2 100644
--- a/api/server/routes/ask.js
+++ b/api/server/routes/ask.js
@@ -162,7 +162,7 @@ const ask = async ({
gptResponse.sender = model === 'chatgptCustom' ? convo.chatGptLabel : model;
gptResponse.model = model;
// gptResponse.final = true;
- gptResponse.text = await handleText(gptResponse.text);
+ gptResponse.text = await handleText(gptResponse);
if (convo.chatGptLabel?.length > 0 && model === 'chatgptCustom') {
gptResponse.chatGptLabel = convo.chatGptLabel;
diff --git a/api/server/routes/askBing.js b/api/server/routes/askBing.js
index aa052c31d7..cfbac77185 100644
--- a/api/server/routes/askBing.js
+++ b/api/server/routes/askBing.js
@@ -1,10 +1,9 @@
const express = require('express');
const crypto = require('crypto');
const router = express.Router();
-const { titleConvo, getCitations, citeText, askBing } = require('../../app/');
+const { titleConvo, askBing } = require('../../app/');
const { saveMessage, getConvoTitle, saveConvo } = require('../../models');
const { handleError, sendMessage, createOnProgress, handleText } = require('./handlers');
-const citationRegex = /\[\^\d+?\^]/g;
router.post('/', async (req, res) => {
const {
@@ -129,12 +128,7 @@ const ask = async ({
response.parentMessageId =
overrideParentMessageId || response.parentMessageId || userMessageId;
- const links = getCitations(response);
- response.text =
- citeText(response) +
- (links?.length > 0 && hasCitations ? `\n${links}` : '');
- response.text = await handleText(response.text);
-
+ response.text = await handleText(response, true);
await saveMessage(response);
await saveConvo({ ...response, model, chatGptLabel: null, promptPrefix: null, ...convo });
sendMessage(res, {
diff --git a/api/server/routes/askSydney.js b/api/server/routes/askSydney.js
index 7fecc2a450..00f287fa7b 100644
--- a/api/server/routes/askSydney.js
+++ b/api/server/routes/askSydney.js
@@ -1,10 +1,9 @@
const express = require('express');
const crypto = require('crypto');
const router = express.Router();
-const { titleConvo, getCitations, citeText, askSydney } = require('../../app/');
+const { titleConvo, askSydney } = require('../../app/');
const { saveMessage, saveConvo, getConvoTitle } = require('../../models');
const { handleError, sendMessage, createOnProgress, handleText } = require('./handlers');
-const citationRegex = /\[\^\d+?\^]/g;
router.post('/', async (req, res) => {
const {
@@ -97,7 +96,6 @@ const ask = async ({
console.log('SYDNEY RESPONSE', response);
// console.dir(response, { depth: null });
- const hasCitations = response.response.match(citationRegex)?.length > 0;
userMessage.conversationSignature =
convo.conversationSignature || response.conversationSignature;
@@ -125,12 +123,6 @@ const ask = async ({
response.parentMessageId =
overrideParentMessageId || response.parentMessageId || userMessageId;
- const links = getCitations(response);
- response.text =
- citeText(response) +
- (links?.length > 0 && hasCitations ? `\n${links}` : '');
- response.text = await handleText(response.text);
-
// Save user message
userMessage.conversationId = response.conversationId || conversationId;
await saveMessage(userMessage);
@@ -146,6 +138,7 @@ const ask = async ({
});
conversationId = userMessage.conversationId;
+ response.text = await handleText(response, true);
// Save sydney response & convo, then send
await saveMessage(response);
await saveConvo({ ...response, model, chatGptLabel: null, promptPrefix: null, ...convo });
diff --git a/api/server/routes/handlers.js b/api/server/routes/handlers.js
index 31213f3080..3ba4e81243 100644
--- a/api/server/routes/handlers.js
+++ b/api/server/routes/handlers.js
@@ -1,7 +1,8 @@
const _ = require('lodash');
const sanitizeHtml = require('sanitize-html');
-const { titleConvo, citeText, detectCode } = require('../../app/');
-const htmlTagRegex = /(<\/?\s*[a-zA-Z]*\s*(?:\s+[a-zA-Z]+\s*=\s*(?:"[^"]*"|'[^']*'))*\s*(?:\/?)>|<\s*[a-zA-Z]+\s*(?:\s+[a-zA-Z]+\s*=\s*(?:"[^"]*"|'[^']*'))*\s*(?:\/?>|<\/?>))/g;
+const citationRegex = /\[\^\d+?\^]/g;
+const { getCitations, citeText, detectCode } = require('../../app/');
+// const htmlTagRegex = /(<\/?\s*[a-zA-Z]*\s*(?:\s+[a-zA-Z]+\s*=\s*(?:"[^"]*"|'[^']*'))*\s*(?:\/?)>|<\s*[a-zA-Z]+\s*(?:\s+[a-zA-Z]+\s*=\s*(?:"[^"]*"|'[^']*'))*\s*(?:\/?>|<\/?>))/g;
const handleError = (res, message) => {
res.write(`event: error\ndata: ${JSON.stringify(message)}\n\n`);
@@ -51,9 +52,20 @@ const createOnProgress = () => {
return onProgress;
};
-const handleText = async (input) => {
- let text = input;
+const handleText = async (response, bing = false) => {
+ let { text } = response;
text = await detectCode(text);
+ response.text = text;
+
+ if (bing) {
+ // const hasCitations = response.response.match(citationRegex)?.length > 0;
+ const links = getCitations(response);
+ if (response.text.match(citationRegex)?.length > 0) {
+ text = citeText(response);
+ }
+ text += links?.length > 0 ? `\n${links}` : '';
+ }
+
// const htmlTags = text.match(htmlTagRegex);
// if (text.includes('```') && htmlTags && htmlTags.length > 0) {
// htmlTags.forEach((tag) => {
diff --git a/client/src/components/Messages/TextWrapper.jsx b/client/src/components/Messages/TextWrapper.jsx
index af38b56a5c..5719ee876b 100644
--- a/client/src/components/Messages/TextWrapper.jsx
+++ b/client/src/components/Messages/TextWrapper.jsx
@@ -142,7 +142,7 @@ export default function TextWrapper({ text }) {
// map over the parts and wrap any text between tildes with tags
const parts = text.split(markupRegex);
const codeParts = inLineWrap(parts);
- return <>{codeParts}>; // return the wrapped text
+ return {codeParts}; // return the wrapped text
} else {
return {text};
}