mirror of
https://github.com/SillyTavern/SillyTavern.git
synced 2025-06-05 21:59:27 +02:00
Merge pull request #1263 from bdashore3/preset-expansion
Preset setting expansion
This commit is contained in:
@ -1,6 +1,11 @@
|
|||||||
{
|
{
|
||||||
"story_string": "{{#if system}}{{system}}\n{{/if}}{{#if wiBefore}}{{wiBefore}}\n{{/if}}{{#if description}}{{description}}\n{{/if}}{{#if personality}}{{personality}}\n{{/if}}{{#if scenario}}{{scenario}}\n{{/if}}{{#if wiAfter}}{{wiAfter}}\n{{/if}}{{#if persona}}{{persona}}\n{{/if}}",
|
"story_string": "{{#if system}}{{system}}\n{{/if}}{{#if wiBefore}}{{wiBefore}}\n{{/if}}{{#if description}}{{description}}\n{{/if}}{{#if personality}}{{personality}}\n{{/if}}{{#if scenario}}{{scenario}}\n{{/if}}{{#if wiAfter}}{{wiAfter}}\n{{/if}}{{#if persona}}{{persona}}\n{{/if}}",
|
||||||
"chat_start": "",
|
|
||||||
"example_separator": "",
|
"example_separator": "",
|
||||||
|
"chat_start": "",
|
||||||
|
"always_force_name2": false,
|
||||||
|
"trim_sentences": false,
|
||||||
|
"include_newline": false,
|
||||||
|
"custom_stopping_strings": "[\"\\n\"]",
|
||||||
|
"custom_stopping_strings_macro": true,
|
||||||
"name": "Adventure"
|
"name": "Adventure"
|
||||||
}
|
}
|
@ -41,6 +41,7 @@ export {
|
|||||||
fixMarkdown,
|
fixMarkdown,
|
||||||
power_user,
|
power_user,
|
||||||
send_on_enter_options,
|
send_on_enter_options,
|
||||||
|
getContextSettings,
|
||||||
};
|
};
|
||||||
|
|
||||||
export const MAX_CONTEXT_DEFAULT = 4096;
|
export const MAX_CONTEXT_DEFAULT = 4096;
|
||||||
@ -249,6 +250,20 @@ const storage_keys = {
|
|||||||
expand_message_actions: 'ExpandMessageActions',
|
expand_message_actions: 'ExpandMessageActions',
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const contextControls = [
|
||||||
|
// Power user context scoped settings
|
||||||
|
{ id: "context_story_string", property: "story_string", isCheckbox: false, isGlobalSetting: false },
|
||||||
|
{ id: "context_example_separator", property: "example_separator", isCheckbox: false, isGlobalSetting: false },
|
||||||
|
{ id: "context_chat_start", property: "chat_start", isCheckbox: false, isGlobalSetting: false },
|
||||||
|
|
||||||
|
// Existing power user settings
|
||||||
|
{ id: "always-force-name2-checkbox", property: "always_force_name2", isCheckbox: true, isGlobalSetting: true },
|
||||||
|
{ id: "trim_sentences_checkbox", property: "trim_sentences", isCheckbox: true, isGlobalSetting: true },
|
||||||
|
{ id: "include_newline_checkbox", property: "include_newline", isCheckbox: true, isGlobalSetting: true },
|
||||||
|
{ id: "custom_stopping_strings", property: "custom_stopping_strings", isCheckbox: false, isGlobalSetting: true },
|
||||||
|
{ id: "custom_stopping_strings_macro", property: "custom_stopping_strings_macro", isCheckbox: true, isGlobalSetting: true }
|
||||||
|
];
|
||||||
|
|
||||||
let browser_has_focus = true;
|
let browser_has_focus = true;
|
||||||
const debug_functions = [];
|
const debug_functions = [];
|
||||||
|
|
||||||
@ -1083,14 +1098,28 @@ function switchMaxContextSize() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function loadContextSettings() {
|
// Fetch a compiled object of all preset settings
|
||||||
const controls = [
|
function getContextSettings() {
|
||||||
{ id: "context_story_string", property: "story_string", isCheckbox: false },
|
let compiledSettings = {};
|
||||||
{ id: "context_example_separator", property: "example_separator", isCheckbox: false },
|
|
||||||
{ id: "context_chat_start", property: "chat_start", isCheckbox: false },
|
|
||||||
];
|
|
||||||
|
|
||||||
controls.forEach(control => {
|
contextControls.forEach((control) => {
|
||||||
|
let value = control.isGlobalSetting ? power_user[control.property] : power_user.context[control.property];
|
||||||
|
|
||||||
|
// Force to a boolean if the setting is a checkbox
|
||||||
|
if (control.isCheckbox) {
|
||||||
|
value = !!value;
|
||||||
|
}
|
||||||
|
|
||||||
|
compiledSettings[control.property] = value;
|
||||||
|
});
|
||||||
|
|
||||||
|
return compiledSettings;
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: Maybe add a refresh button to reset settings to preset
|
||||||
|
// TODO: Add "global state" if a preset doesn't set the power_user checkboxes
|
||||||
|
function loadContextSettings() {
|
||||||
|
contextControls.forEach(control => {
|
||||||
const $element = $(`#${control.id}`);
|
const $element = $(`#${control.id}`);
|
||||||
|
|
||||||
if (control.isCheckbox) {
|
if (control.isCheckbox) {
|
||||||
@ -1099,8 +1128,16 @@ function loadContextSettings() {
|
|||||||
$element.val(power_user.context[control.property]);
|
$element.val(power_user.context[control.property]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If the setting already exists, no need to duplicate it
|
||||||
|
// TODO: Maybe check the power_user object for the setting instead of a flag?
|
||||||
$element.on('input', function () {
|
$element.on('input', function () {
|
||||||
power_user.context[control.property] = control.isCheckbox ? !!$(this).prop('checked') : $(this).val();
|
const value = control.isCheckbox ? !!$(this).prop('checked') : $(this).val();
|
||||||
|
if (control.isGlobalSetting) {
|
||||||
|
power_user[control.property] = value;
|
||||||
|
} else {
|
||||||
|
power_user.context[control.property] = value;
|
||||||
|
}
|
||||||
|
|
||||||
saveSettingsDebounced();
|
saveSettingsDebounced();
|
||||||
if (!control.isCheckbox) {
|
if (!control.isCheckbox) {
|
||||||
resetScrollHeight($element);
|
resetScrollHeight($element);
|
||||||
@ -1126,15 +1163,24 @@ function loadContextSettings() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
power_user.context.preset = name;
|
power_user.context.preset = name;
|
||||||
controls.forEach(control => {
|
contextControls.forEach(control => {
|
||||||
if (preset[control.property] !== undefined) {
|
if (preset[control.property] !== undefined) {
|
||||||
|
if (control.isGlobalSetting) {
|
||||||
|
power_user[control.property] = preset[control.property];
|
||||||
|
} else {
|
||||||
power_user.context[control.property] = preset[control.property];
|
power_user.context[control.property] = preset[control.property];
|
||||||
|
}
|
||||||
|
|
||||||
const $element = $(`#${control.id}`);
|
const $element = $(`#${control.id}`);
|
||||||
|
|
||||||
if (control.isCheckbox) {
|
if (control.isCheckbox) {
|
||||||
$element.prop('checked', power_user.context[control.property]).trigger('input');
|
$element
|
||||||
|
.prop('checked', control.isGlobalSetting ? power_user[control.property] : power_user.context[control.property])
|
||||||
|
.trigger('input');
|
||||||
} else {
|
} else {
|
||||||
$element.val(power_user.context[control.property]).trigger('input');
|
$element
|
||||||
|
.val(control.isGlobalSetting ? power_user[control.property] : power_user.context[control.property])
|
||||||
|
.trigger('input');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -18,7 +18,7 @@ import {
|
|||||||
import { groups, selected_group } from "./group-chats.js";
|
import { groups, selected_group } from "./group-chats.js";
|
||||||
import { instruct_presets } from "./instruct-mode.js";
|
import { instruct_presets } from "./instruct-mode.js";
|
||||||
import { kai_settings } from "./kai-settings.js";
|
import { kai_settings } from "./kai-settings.js";
|
||||||
import { context_presets, power_user } from "./power-user.js";
|
import { context_presets, getContextSettings, power_user } from "./power-user.js";
|
||||||
import {
|
import {
|
||||||
textgenerationwebui_preset_names,
|
textgenerationwebui_preset_names,
|
||||||
textgenerationwebui_presets,
|
textgenerationwebui_presets,
|
||||||
@ -104,6 +104,7 @@ class PresetManager {
|
|||||||
|
|
||||||
async updatePreset() {
|
async updatePreset() {
|
||||||
const selected = $(this.select).find("option:selected");
|
const selected = $(this.select).find("option:selected");
|
||||||
|
console.log(selected)
|
||||||
|
|
||||||
if (selected.val() == 'gui') {
|
if (selected.val() == 'gui') {
|
||||||
toastr.info('Cannot update GUI preset');
|
toastr.info('Cannot update GUI preset');
|
||||||
@ -236,7 +237,7 @@ class PresetManager {
|
|||||||
case "textgenerationwebui":
|
case "textgenerationwebui":
|
||||||
return textgenerationwebui_settings;
|
return textgenerationwebui_settings;
|
||||||
case "context":
|
case "context":
|
||||||
const context_preset = structuredClone(power_user.context);
|
const context_preset = getContextSettings();
|
||||||
context_preset['name'] = name || power_user.context.preset;
|
context_preset['name'] = name || power_user.context.preset;
|
||||||
return context_preset;
|
return context_preset;
|
||||||
case "instruct":
|
case "instruct":
|
||||||
|
Reference in New Issue
Block a user