mirror of
https://github.com/SillyTavern/SillyTavern.git
synced 2024-12-12 09:26:33 +01:00
Move command registration
This commit is contained in:
parent
b68969ee3b
commit
976be98dd7
@ -212,7 +212,7 @@ import {
|
|||||||
selectContextPreset,
|
selectContextPreset,
|
||||||
} from './scripts/instruct-mode.js';
|
} from './scripts/instruct-mode.js';
|
||||||
import { initLocales, t, translate } from './scripts/i18n.js';
|
import { initLocales, t, translate } from './scripts/i18n.js';
|
||||||
import { getAvailableTokenizers, getFriendlyTokenizerName, getTokenCount, getTokenCountAsync, getTokenizerModel, initTokenizers, saveTokenCache, selectTokenizer } from './scripts/tokenizers.js';
|
import { getFriendlyTokenizerName, getTokenCount, getTokenCountAsync, getTokenizerModel, initTokenizers, saveTokenCache } from './scripts/tokenizers.js';
|
||||||
import {
|
import {
|
||||||
user_avatar,
|
user_avatar,
|
||||||
getUserAvatars,
|
getUserAvatars,
|
||||||
@ -8451,27 +8451,6 @@ async function selectInstructCallback(_, name) {
|
|||||||
return foundName;
|
return foundName;
|
||||||
}
|
}
|
||||||
|
|
||||||
async function selectTokenizerCallback(_, name) {
|
|
||||||
if (!name) {
|
|
||||||
return getAvailableTokenizers().find(tokenizer => tokenizer.tokenizerId === power_user.tokenizer)?.tokenizerKey ?? '';
|
|
||||||
}
|
|
||||||
|
|
||||||
const tokenizers = getAvailableTokenizers();
|
|
||||||
const fuse = new Fuse(tokenizers, { keys: ['tokenizerKey', 'tokenizerName'] });
|
|
||||||
const result = fuse.search(name);
|
|
||||||
|
|
||||||
if (result.length === 0) {
|
|
||||||
toastr.warning(`Tokenizer "${name}" not found`);
|
|
||||||
return '';
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @type {import('./scripts/tokenizers.js').Tokenizer} */
|
|
||||||
const foundTokenizer = result[0].item;
|
|
||||||
selectTokenizer(foundTokenizer.tokenizerId);
|
|
||||||
|
|
||||||
return foundTokenizer.tokenizerKey;
|
|
||||||
}
|
|
||||||
|
|
||||||
async function enableInstructCallback() {
|
async function enableInstructCallback() {
|
||||||
$('#instruct_enabled').prop('checked', true).trigger('change');
|
$('#instruct_enabled').prop('checked', true).trigger('change');
|
||||||
return '';
|
return '';
|
||||||
@ -9116,28 +9095,6 @@ jQuery(async function () {
|
|||||||
</div>
|
</div>
|
||||||
`,
|
`,
|
||||||
}));
|
}));
|
||||||
SlashCommandParser.addCommandObject(SlashCommand.fromProps({
|
|
||||||
name: 'tokenizer',
|
|
||||||
callback: selectTokenizerCallback,
|
|
||||||
returns: 'current tokenizer',
|
|
||||||
unnamedArgumentList: [
|
|
||||||
SlashCommandArgument.fromProps({
|
|
||||||
description: 'tokenizer name',
|
|
||||||
typeList: [ARGUMENT_TYPE.STRING],
|
|
||||||
enumList: getAvailableTokenizers().map(tokenizer =>
|
|
||||||
new SlashCommandEnumValue(tokenizer.tokenizerKey, tokenizer.tokenizerName, enumTypes.enum, enumIcons.default)),
|
|
||||||
}),
|
|
||||||
],
|
|
||||||
helpString: `
|
|
||||||
<div>
|
|
||||||
Selects tokenizer by name. Gets the current tokenizer if no name is provided.
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<strong>Available tokenizers:</strong>
|
|
||||||
<pre><code>${getAvailableTokenizers().map(t => t.tokenizerKey).join(', ')}</code></pre>
|
|
||||||
</div>
|
|
||||||
`
|
|
||||||
}));
|
|
||||||
SlashCommandParser.addCommandObject(SlashCommand.fromProps({
|
SlashCommandParser.addCommandObject(SlashCommand.fromProps({
|
||||||
name: 'instruct-on',
|
name: 'instruct-on',
|
||||||
callback: enableInstructCallback,
|
callback: enableInstructCallback,
|
||||||
|
@ -52,7 +52,7 @@ import { chat_completion_sources, oai_settings, setupChatCompletionPromptManager
|
|||||||
import { autoSelectPersona, retriggerFirstMessageOnEmptyChat, setPersonaLockState, togglePersonaLock, user_avatar } from './personas.js';
|
import { autoSelectPersona, retriggerFirstMessageOnEmptyChat, setPersonaLockState, togglePersonaLock, user_avatar } from './personas.js';
|
||||||
import { addEphemeralStoppingString, chat_styles, flushEphemeralStoppingStrings, power_user } from './power-user.js';
|
import { addEphemeralStoppingString, chat_styles, flushEphemeralStoppingStrings, power_user } from './power-user.js';
|
||||||
import { SERVER_INPUTS, textgen_types, textgenerationwebui_settings } from './textgen-settings.js';
|
import { SERVER_INPUTS, textgen_types, textgenerationwebui_settings } from './textgen-settings.js';
|
||||||
import { decodeTextTokens, getFriendlyTokenizerName, getTextTokens, getTokenCountAsync } from './tokenizers.js';
|
import { decodeTextTokens, getAvailableTokenizers, getFriendlyTokenizerName, getTextTokens, getTokenCountAsync, selectTokenizer } from './tokenizers.js';
|
||||||
import { debounce, delay, isFalseBoolean, isTrueBoolean, showFontAwesomePicker, stringToRange, trimToEndSentence, trimToStartSentence, waitUntilCondition } from './utils.js';
|
import { debounce, delay, isFalseBoolean, isTrueBoolean, showFontAwesomePicker, stringToRange, trimToEndSentence, trimToStartSentence, waitUntilCondition } from './utils.js';
|
||||||
import { registerVariableCommands, resolveVariable } from './variables.js';
|
import { registerVariableCommands, resolveVariable } from './variables.js';
|
||||||
import { background_settings } from './backgrounds.js';
|
import { background_settings } from './backgrounds.js';
|
||||||
@ -1558,6 +1558,28 @@ export function initDefaultSlashCommands() {
|
|||||||
</div>
|
</div>
|
||||||
`,
|
`,
|
||||||
}));
|
}));
|
||||||
|
SlashCommandParser.addCommandObject(SlashCommand.fromProps({
|
||||||
|
name: 'tokenizer',
|
||||||
|
callback: selectTokenizerCallback,
|
||||||
|
returns: 'current tokenizer',
|
||||||
|
unnamedArgumentList: [
|
||||||
|
SlashCommandArgument.fromProps({
|
||||||
|
description: 'tokenizer name',
|
||||||
|
typeList: [ARGUMENT_TYPE.STRING],
|
||||||
|
enumList: getAvailableTokenizers().map(tokenizer =>
|
||||||
|
new SlashCommandEnumValue(tokenizer.tokenizerKey, tokenizer.tokenizerName, enumTypes.enum, enumIcons.default)),
|
||||||
|
}),
|
||||||
|
],
|
||||||
|
helpString: `
|
||||||
|
<div>
|
||||||
|
Selects tokenizer by name. Gets the current tokenizer if no name is provided.
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<strong>Available tokenizers:</strong>
|
||||||
|
<pre><code>${getAvailableTokenizers().map(t => t.tokenizerKey).join(', ')}</code></pre>
|
||||||
|
</div>
|
||||||
|
`,
|
||||||
|
}));
|
||||||
|
|
||||||
registerVariableCommands();
|
registerVariableCommands();
|
||||||
}
|
}
|
||||||
@ -3562,6 +3584,27 @@ async function setApiUrlCallback({ api = null, connect = 'true' }, url) {
|
|||||||
return textgenerationwebui_settings.server_urls[type] ?? '';
|
return textgenerationwebui_settings.server_urls[type] ?? '';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function selectTokenizerCallback(_, name) {
|
||||||
|
if (!name) {
|
||||||
|
return getAvailableTokenizers().find(tokenizer => tokenizer.tokenizerId === power_user.tokenizer)?.tokenizerKey ?? '';
|
||||||
|
}
|
||||||
|
|
||||||
|
const tokenizers = getAvailableTokenizers();
|
||||||
|
const fuse = new Fuse(tokenizers, { keys: ['tokenizerKey', 'tokenizerName'] });
|
||||||
|
const result = fuse.search(name);
|
||||||
|
|
||||||
|
if (result.length === 0) {
|
||||||
|
toastr.warning(`Tokenizer "${name}" not found`);
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @type {import('./tokenizers.js').Tokenizer} */
|
||||||
|
const foundTokenizer = result[0].item;
|
||||||
|
selectTokenizer(foundTokenizer.tokenizerId);
|
||||||
|
|
||||||
|
return foundTokenizer.tokenizerKey;
|
||||||
|
}
|
||||||
|
|
||||||
export let isExecutingCommandsFromChatInput = false;
|
export let isExecutingCommandsFromChatInput = false;
|
||||||
export let commandsFromChatInputAbortController;
|
export let commandsFromChatInputAbortController;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user