Files
SillyTavern/public/scripts/secrets.js

62 lines
1.6 KiB
JavaScript

import { getRequestHeaders } from "../script.js";
export const SECRET_KEYS = {
HORDE: 'api_key_horde',
OPENAI: 'api_key_openai',
POE: 'api_key_poe',
NOVEL: 'api_key_novel',
}
const INPUT_MAP = {
[SECRET_KEYS.HORDE]: '#horde_api_key',
[SECRET_KEYS.OPENAI]: '#api_key_openai',
[SECRET_KEYS.POE]: '#poe_token',
[SECRET_KEYS.NOVEL]: '#api_key_novel',
}
function updateSecretDisplay() {
for (const [secret_key, input_selector] of Object.entries(INPUT_MAP)) {
const validSecret = !!secret_state[secret_key];
const placeholder = validSecret ? '✔️ Key saved' : '❌ Missing key';
$(input_selector).attr('placeholder', placeholder).val('');
}
}
export let secret_state = {};
export async function writeSecret(key, value) {
try {
const response = await fetch('/writesecret', {
method: 'POST',
headers: getRequestHeaders(),
body: JSON.stringify({ key, value }),
});
if (response.ok) {
const text = await response.text();
if (text == 'ok') {
secret_state[key] = true;
updateSecretDisplay();
}
}
} catch {
console.error('Could not write secret value: ', key);
}
}
export async function readSecretState() {
try {
const response = await fetch('/readsecretstate', {
method: 'POST',
headers: getRequestHeaders(),
});
if (response.ok) {
secret_state = await response.json();
updateSecretDisplay();
}
} catch {
console.error('Could not read secrets file');
}
}