diff --git a/public/scripts/extensions/vectors/index.js b/public/scripts/extensions/vectors/index.js
index 840e92687..d2eab636a 100644
--- a/public/scripts/extensions/vectors/index.js
+++ b/public/scripts/extensions/vectors/index.js
@@ -1,7 +1,7 @@
import { eventSource, event_types, extension_prompt_types, getCurrentChatId, getRequestHeaders, is_send_press, saveSettingsDebounced, setExtensionPrompt, substituteParams } from '../../../script.js';
import { ModuleWorkerWrapper, extension_settings, getContext, modules, renderExtensionTemplate } from '../../extensions.js';
import { collapseNewlines } from '../../power-user.js';
-import { SECRET_KEYS, secret_state } from '../../secrets.js';
+import { SECRET_KEYS, secret_state, writeSecret } from '../../secrets.js';
import { debounce, getStringHash as calculateHash, waitUntilCondition, onlyUnique, splitRecursive } from '../../utils.js';
const MODULE_NAME = 'vectors';
@@ -461,7 +461,8 @@ async function insertVectorItems(collectionId, items) {
if (settings.source === 'openai' && !secret_state[SECRET_KEYS.OPENAI] ||
settings.source === 'palm' && !secret_state[SECRET_KEYS.MAKERSUITE] ||
settings.source === 'mistral' && !secret_state[SECRET_KEYS.MISTRALAI] ||
- settings.source === 'togetherai' && !secret_state[SECRET_KEYS.TOGETHERAI]) {
+ settings.source === 'togetherai' && !secret_state[SECRET_KEYS.TOGETHERAI] ||
+ settings.source === 'nomicai' && !secret_state[SECRET_KEYS.NOMICAI]) {
throw new Error('Vectors: API key missing', { cause: 'api_key_missing' });
}
@@ -580,6 +581,7 @@ function toggleSettings() {
$('#vectors_files_settings').toggle(!!settings.enabled_files);
$('#vectors_chats_settings').toggle(!!settings.enabled_chats);
$('#together_vectorsModel').toggle(settings.source === 'togetherai');
+ $('#nomicai_apiKey').toggle(settings.source === 'nomicai');
}
async function onPurgeClick() {
@@ -655,7 +657,13 @@ jQuery(async () => {
saveSettingsDebounced();
toggleSettings();
});
-
+ $('#api_key_nomicai').on('change', () => {
+ const nomicKey = String($('#api_key_nomicai').val()).trim();
+ if (nomicKey.length) {
+ writeSecret(SECRET_KEYS.NOMICAI, nomicKey);
+ }
+ saveSettingsDebounced();
+ });
$('#vectors_togetherai_model').val(settings.togetherai_model).on('change', () => {
settings.togetherai_model = String($('#vectors_togetherai_model').val());
Object.assign(extension_settings.vectors, settings);
@@ -726,6 +734,10 @@ jQuery(async () => {
saveSettingsDebounced();
});
+ const validSecret = !!secret_state[SECRET_KEYS.NOMICAI];
+ const placeholder = validSecret ? '✔️ Key saved' : '❌ Missing key';
+ $('#api_key_nomicai').attr('placeholder', placeholder);
+
toggleSettings();
eventSource.on(event_types.MESSAGE_DELETED, onChatEvent);
eventSource.on(event_types.MESSAGE_EDITED, onChatEvent);
diff --git a/public/scripts/extensions/vectors/settings.html b/public/scripts/extensions/vectors/settings.html
index 5900d7145..6bdb774be 100644
--- a/public/scripts/extensions/vectors/settings.html
+++ b/public/scripts/extensions/vectors/settings.html
@@ -16,6 +16,7 @@
+
@@ -33,6 +34,19 @@
+
+
+
+
+
+
+
+ For privacy reasons, your API key will be hidden after you reload the page.
+
+