diff --git a/api/app/clients/BaseClient.js b/api/app/clients/BaseClient.js
index f5d83c514e..3ecd7f45a1 100644
--- a/api/app/clients/BaseClient.js
+++ b/api/app/clients/BaseClient.js
@@ -71,7 +71,7 @@ class BaseClient {
};
}
- createUserMessage({ messageId, parentMessageId, conversationId, text}) {
+ createUserMessage({ messageId, parentMessageId, conversationId, text }) {
const userMessage = {
messageId,
parentMessageId,
@@ -293,7 +293,7 @@ class BaseClient {
};
}
- async handleContextStrategy({instructions, orderedMessages, formattedMessages}) {
+ async handleContextStrategy({ instructions, orderedMessages, formattedMessages }) {
let payload = this.addInstructions(formattedMessages, instructions);
let orderedWithInstructions = this.addInstructions(orderedMessages, instructions);
let {
@@ -350,7 +350,7 @@ class BaseClient {
}
if (index === refineIndex) {
- map.refined = { ...refinedMessage, messageId: message.messageId};
+ map.refined = { ...refinedMessage, messageId: message.messageId };
}
map[message.messageId] = payload[index].tokenCount;
@@ -457,7 +457,7 @@ class BaseClient {
}
async saveMessageToDatabase(message, endpointOptions, user = null) {
- await saveMessage({ ...message, unfinished: false });
+ await saveMessage({ ...message, unfinished: false, cancelled: false });
await saveConvo(user, {
conversationId: message.conversationId,
endpoint: this.options.endpoint,
diff --git a/api/models/plugins/mongoMeili.js b/api/models/plugins/mongoMeili.js
index d157eccacc..b123b3153b 100644
--- a/api/models/plugins/mongoMeili.js
+++ b/api/models/plugins/mongoMeili.js
@@ -190,19 +190,55 @@ module.exports = function mongoMeili(schema, options) {
schema.post('remove', function (doc) {
doc.postRemoveHook();
});
- schema.post('deleteMany', function () {
- // console.log('deleteMany hook', doc);
- if (Object.prototype.hasOwnProperty.call(schema.obj, 'messages')) {
- console.log('Syncing convos...');
- mongoose.model('Conversation').syncWithMeili();
- }
- if (Object.prototype.hasOwnProperty.call(schema.obj, 'messageId')) {
- console.log('Syncing messages...');
- mongoose.model('Message').syncWithMeili();
+ schema.pre('deleteMany', async function (next) {
+ try {
+ if (Object.prototype.hasOwnProperty.call(schema.obj, 'messages')) {
+ const convoIndex = client.index('convos');
+ const deletedConvos = await mongoose.model('Conversation').find(this._conditions).lean();
+ let promises = [];
+ for (const convo of deletedConvos) {
+ promises.push(convoIndex.deleteDocument(convo.conversationId));
+ }
+ await Promise.all(promises);
+ }
+
+ if (Object.prototype.hasOwnProperty.call(schema.obj, 'messageId')) {
+ const messageIndex = client.index('messages');
+ const deletedMessages = await mongoose.model('Message').find(this._conditions).lean();
+ let promises = [];
+ for (const message of deletedMessages) {
+ promises.push(messageIndex.deleteDocument(message.messageId));
+ }
+ await Promise.all(promises);
+ }
+ return next();
+ } catch (error) {
+ console.log('[Meilisearch] There was an issue deleting conversation indexes upon deletion, next startup may be slow due to syncing');
+ console.error(error);
+ return next(error);
}
});
- schema.post('findOneAndUpdate', function (doc) {
+
+ schema.post('findOneAndUpdate', async function (doc) {
+ if (doc.unfinished) {
+ return;
+ }
+
+ let meiliDoc;
+ // Doc is a Conversation
+ if (doc.messages) {
+ try {
+ meiliDoc = await client.index('convos').getDocument(doc.conversationId);
+ } catch (error) {
+ console.log('[Meilisearch] Convo not found and will index', doc.conversationId);
+ }
+ }
+
+ if (meiliDoc && meiliDoc.title === doc.title) {
+ return;
+ }
+
doc.postSaveHook();
});
};
diff --git a/api/server/routes/ask/gptPlugins.js b/api/server/routes/ask/gptPlugins.js
index 90792caea2..c672aacc86 100644
--- a/api/server/routes/ask/gptPlugins.js
+++ b/api/server/routes/ask/gptPlugins.js
@@ -117,8 +117,8 @@ const ask = async ({ text, endpoint, endpointOption, parentMessageId = null, con
parentMessageId: overrideParentMessageId || userMessageId,
text: partialText,
model: endpointOption.modelOptions.model,
- unfinished: false,
- cancelled: true,
+ unfinished: true,
+ cancelled: false,
error: false
});
}
diff --git a/api/server/routes/ask/openAI.js b/api/server/routes/ask/openAI.js
index e123f462fa..d5baf81663 100644
--- a/api/server/routes/ask/openAI.js
+++ b/api/server/routes/ask/openAI.js
@@ -88,8 +88,8 @@ const ask = async ({ text, endpointOption, parentMessageId = null, endpoint, con
parentMessageId: overrideParentMessageId || userMessageId,
text: partialText,
model: endpointOption.modelOptions.model,
- unfinished: false,
- cancelled: true,
+ unfinished: true,
+ cancelled: false,
error: false
});
}
diff --git a/client/public/assets/google-palm.svg b/client/public/assets/google-palm.svg
new file mode 100644
index 0000000000..5c345fe1c1
--- /dev/null
+++ b/client/public/assets/google-palm.svg
@@ -0,0 +1,67 @@
+
+
+
diff --git a/client/public/assets/palm.png b/client/public/assets/palm.png
deleted file mode 100644
index 3488a71457..0000000000
Binary files a/client/public/assets/palm.png and /dev/null differ
diff --git a/client/src/utils/getIcon.jsx b/client/src/utils/getIcon.jsx
index 35e4f4a577..d0a435f44f 100644
--- a/client/src/utils/getIcon.jsx
+++ b/client/src/utils/getIcon.jsx
@@ -14,7 +14,7 @@ const getIcon = (props) => {
width: size,
height: size
}}
- className={`relative flex items-center justify-center` + props?.className}
+ className={'relative flex items-center justify-center' + props?.className}
>
{
name = 'Plugins';
} else if (endpoint === 'google') {
const { modelLabel } = props;
- icon =
;
+ icon =
;
name = modelLabel || 'PaLM2';
} else if (endpoint === 'bingAI') {
const { jailbreak } = props;
icon = ;
- bg = jailbreak ? `radial-gradient(circle at 90% 110%, #F0F0FA, #D0E0F9)` : `transparent`;
+ bg = jailbreak ? 'radial-gradient(circle at 90% 110%, #F0F0FA, #D0E0F9)' : 'transparent';
name = jailbreak ? 'Sydney' : 'BingAI';
} else if (endpoint === 'chatGPTBrowser') {
icon = ;
@@ -67,11 +67,11 @@ const getIcon = (props) => {
name = 'ChatGPT';
} else if (endpoint === null) {
icon = ;
- bg = `grey`;
+ bg = 'grey';
name = 'N/A';
} else {
icon = ;
- bg = `grey`;
+ bg = 'grey';
name = 'UNKNOWN';
}
@@ -84,7 +84,7 @@ const getIcon = (props) => {
height: size
}}
className={
- `relative flex items-center justify-center rounded-sm text-white ` + props?.className
+ 'relative flex items-center justify-center rounded-sm text-white ' + props?.className
}
>
{icon}