auto select presets
This commit is contained in:
parent
252be20c16
commit
8938ea1d72
|
@ -2,7 +2,10 @@
|
||||||
|
|
||||||
import { saveSettingsDebounced, substituteParams } from "../script.js";
|
import { saveSettingsDebounced, substituteParams } from "../script.js";
|
||||||
import { selected_group } from "./group-chats.js";
|
import { selected_group } from "./group-chats.js";
|
||||||
import { power_user } from "./power-user.js";
|
import {
|
||||||
|
power_user,
|
||||||
|
context_presets,
|
||||||
|
} from "./power-user.js";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @type {any[]} Instruct mode presets.
|
* @type {any[]} Instruct mode presets.
|
||||||
|
@ -69,6 +72,44 @@ function highlightDefaultPreset() {
|
||||||
$('#instruct_set_default').toggleClass('default', power_user.default_instruct === power_user.instruct.preset);
|
$('#instruct_set_default').toggleClass('default', power_user.default_instruct === power_user.instruct.preset);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Select context template if not already selected.
|
||||||
|
* @param {string} preset Preset name.
|
||||||
|
*/
|
||||||
|
function selectContextPreset(preset) {
|
||||||
|
// If preset is not already selected, select it
|
||||||
|
if (power_user.context.preset !== preset) {
|
||||||
|
$('#context_presets').val(preset).trigger('change');
|
||||||
|
toastr.info(`Context Template: preset "${preset}" auto-selected`);
|
||||||
|
|
||||||
|
// If instruct mode is disabled, enable it
|
||||||
|
if (!power_user.instruct.enabled) {
|
||||||
|
$('#instruct_enabled').prop('checked', true).trigger('change');
|
||||||
|
power_user.instruct.enabled = true;
|
||||||
|
toastr.info(`Instruct Mode enabled`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Select instruct preset if not already selected.
|
||||||
|
* @param {string} preset Preset name.
|
||||||
|
*/
|
||||||
|
export function selectInstructPreset(preset) {
|
||||||
|
// If preset is not already selected, select it
|
||||||
|
if (power_user.instruct.preset !== preset) {
|
||||||
|
$('#instruct_presets').val(preset).trigger('change');
|
||||||
|
toastr.info(`Instruct Mode: preset "${preset}" auto-selected`);
|
||||||
|
|
||||||
|
// If instruct mode is disabled, enable it
|
||||||
|
if (!power_user.instruct.enabled) {
|
||||||
|
$('#instruct_enabled').prop('checked', true).trigger('change');
|
||||||
|
power_user.instruct.enabled = true;
|
||||||
|
toastr.info(`Instruct Mode enabled`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Automatically select instruct preset based on model id.
|
* Automatically select instruct preset based on model id.
|
||||||
* Otherwise, if default instruct preset is set, selects it.
|
* Otherwise, if default instruct preset is set, selects it.
|
||||||
|
@ -82,20 +123,17 @@ export function autoSelectInstructPreset(modelId) {
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const preset of instruct_presets) {
|
for (const preset of instruct_presets) {
|
||||||
// If activation regex is set, check if it matches the model id
|
// If context template matches the preset name
|
||||||
if (preset.activation_regex) {
|
if (power_user.context.preset === preset.name) {
|
||||||
|
selectInstructPreset(preset.name);
|
||||||
|
// Else if activation regex is set, check if it matches the model id
|
||||||
|
} else if (preset.activation_regex) {
|
||||||
try {
|
try {
|
||||||
const regex = new RegExp(preset.activation_regex, 'i');
|
const regex = new RegExp(preset.activation_regex, 'i');
|
||||||
|
|
||||||
// Stop on first match so it won't cycle back and forth between presets if multiple regexes match
|
// Stop on first match so it won't cycle back and forth between presets if multiple regexes match
|
||||||
if (regex.test(modelId)) {
|
if (regex.test(modelId)) {
|
||||||
// If preset is not already selected, select it
|
selectInstructPreset(preset.name);
|
||||||
if (power_user.instruct.preset !== preset.name) {
|
|
||||||
$('#instruct_presets').val(preset.name).trigger('change');
|
|
||||||
toastr.info(`Instruct mode: preset "${preset.name}" auto-selected`);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} catch {
|
} catch {
|
||||||
// If regex is invalid, ignore it
|
// If regex is invalid, ignore it
|
||||||
|
@ -259,6 +297,13 @@ jQuery(() => {
|
||||||
saveSettingsDebounced();
|
saveSettingsDebounced();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$('#instruct_enabled').on('change', function () {
|
||||||
|
// When instruct mode gets enabled, select context template matching selected instruct preset
|
||||||
|
if (power_user.instruct.enabled) {
|
||||||
|
$('#instruct_presets').trigger('change');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
$('#instruct_presets').on('change', function () {
|
$('#instruct_presets').on('change', function () {
|
||||||
const name = $(this).find(':selected').val();
|
const name = $(this).find(':selected').val();
|
||||||
const preset = instruct_presets.find(x => x.name === name);
|
const preset = instruct_presets.find(x => x.name === name);
|
||||||
|
@ -281,6 +326,13 @@ jQuery(() => {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
for (const context_preset of context_presets) {
|
||||||
|
// If context template matches the instruct preset
|
||||||
|
if (context_preset.name === name) {
|
||||||
|
selectContextPreset(name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
highlightDefaultPreset();
|
highlightDefaultPreset();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -20,7 +20,11 @@ import {
|
||||||
groups,
|
groups,
|
||||||
resetSelectedGroup,
|
resetSelectedGroup,
|
||||||
} from "./group-chats.js";
|
} from "./group-chats.js";
|
||||||
import { loadInstructMode } from "./instruct-mode.js";
|
import {
|
||||||
|
instruct_presets,
|
||||||
|
loadInstructMode,
|
||||||
|
selectInstructPreset,
|
||||||
|
} from "./instruct-mode.js";
|
||||||
|
|
||||||
import { registerSlashCommand } from "./slash-commands.js";
|
import { registerSlashCommand } from "./slash-commands.js";
|
||||||
|
|
||||||
|
@ -204,7 +208,7 @@ let power_user = {
|
||||||
|
|
||||||
let themes = [];
|
let themes = [];
|
||||||
let movingUIPresets = [];
|
let movingUIPresets = [];
|
||||||
let context_presets = [];
|
export let context_presets = [];
|
||||||
|
|
||||||
const storage_keys = {
|
const storage_keys = {
|
||||||
fast_ui_mode: "TavernAI_fast_ui_mode",
|
fast_ui_mode: "TavernAI_fast_ui_mode",
|
||||||
|
@ -931,6 +935,13 @@ function loadContextSettings() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
for (const instruct_preset of instruct_presets) {
|
||||||
|
// If instruct preset matches the context template
|
||||||
|
if (instruct_preset.name === name) {
|
||||||
|
selectInstructPreset(name);
|
||||||
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue