Add STscript returns, role changing, and aliases

Adds the following STscript changes:
-Returns to all commands and makes arguments optional
-before_scenario option for chat insertion position (to match UI)
-/note-role to change the chat insertion role
-/note- Aliases to all commands so they're centralized
This commit is contained in:
Finadil 2024-11-23 06:49:30 -05:00 committed by GitHub
parent 90ee0398f2
commit 446146674c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 85 additions and 34 deletions

View File

@ -37,12 +37,15 @@ const chara_note_position = {
}; };
function setNoteTextCommand(_, text) { function setNoteTextCommand(_, text) {
if (text) {
$('#extension_floating_prompt').val(text).trigger('input'); $('#extension_floating_prompt').val(text).trigger('input');
toastr.success(t`Author's Note text updated`); toastr.success(t`Author's Note text updated`);
return ''; }
return chat_metadata[metadata_keys.prompt];
} }
function setNoteDepthCommand(_, text) { function setNoteDepthCommand(_, text) {
if (text) {
const value = Number(text); const value = Number(text);
if (Number.isNaN(value)) { if (Number.isNaN(value)) {
@ -52,10 +55,12 @@ function setNoteDepthCommand(_, text) {
$('#extension_floating_depth').val(Math.abs(value)).trigger('input'); $('#extension_floating_depth').val(Math.abs(value)).trigger('input');
toastr.success(t`Author's Note depth updated`); toastr.success(t`Author's Note depth updated`);
return ''; }
return chat_metadata[metadata_keys.depth];
} }
function setNoteIntervalCommand(_, text) { function setNoteIntervalCommand(_, text) {
if (text) {
const value = Number(text); const value = Number(text);
if (Number.isNaN(value)) { if (Number.isNaN(value)) {
@ -65,25 +70,49 @@ function setNoteIntervalCommand(_, text) {
$('#extension_floating_interval').val(Math.abs(value)).trigger('input'); $('#extension_floating_interval').val(Math.abs(value)).trigger('input');
toastr.success(t`Author's Note frequency updated`); toastr.success(t`Author's Note frequency updated`);
return ''; }
return chat_metadata[metadata_keys.interval];
} }
function setNotePositionCommand(_, text) { function setNotePositionCommand(_, text) {
const validPositions = { const validPositions = {
'scenario': 0, 'scenario': 0,
'chat': 1, 'chat': 1,
'before_scenario': 2
}; };
if (text) {
const position = validPositions[text?.trim()]; const position = validPositions[text?.trim()];
if (Number.isNaN(position)) { if (typeof position == 'undefined') {
toastr.error(t`Not a valid position`); toastr.error(t`Not a valid position`);
return; return;
} }
$(`input[name="extension_floating_position"][value="${position}"]`).prop('checked', true).trigger('input'); $(`input[name="extension_floating_position"][value="${position}"]`).prop('checked', true).trigger('input');
toastr.info(t`Author's Note position updated`); toastr.info(t`Author's Note position updated`);
return ''; }
return Object.keys(validPositions).find(key => validPositions[key] == chat_metadata[metadata_keys.position]);
}
function setNoteRoleCommand(_, text) {
const validRoles = {
'system': 0,
'user': 1,
'assistant': 2
};
if (text) {
const role = validRoles[text?.trim()];
if (typeof role == 'undefined') {
toastr.error(t`Not a valid role`);
return;
}
$(`#extension_floating_role`).val(Math.abs(role)).trigger('input');
toastr.info(t`Author's Note role updated`);
}
return Object.keys(validRoles).find(key => validRoles[key] == chat_metadata[metadata_keys.role]);
} }
function updateSettings() { function updateSettings() {
@ -464,55 +493,77 @@ export function initAuthorsNote() {
SlashCommandParser.addCommandObject(SlashCommand.fromProps({ name: 'note', SlashCommandParser.addCommandObject(SlashCommand.fromProps({ name: 'note',
callback: setNoteTextCommand, callback: setNoteTextCommand,
returns: 'current author\'s note',
unnamedArgumentList: [ unnamedArgumentList: [
new SlashCommandArgument( new SlashCommandArgument(
'text', [ARGUMENT_TYPE.STRING], true, 'text', [ARGUMENT_TYPE.STRING], false,
), ),
], ],
helpString: ` helpString: `
<div> <div>
Sets an author's note for the currently selected chat. Sets an author's note for the currently selected chat if specified and returns the current note.
</div> </div>
`, `,
})); }));
SlashCommandParser.addCommandObject(SlashCommand.fromProps({ name: 'depth', SlashCommandParser.addCommandObject(SlashCommand.fromProps({ name: 'depth',
aliases: ['note-depth'],
callback: setNoteDepthCommand, callback: setNoteDepthCommand,
returns: 'current author\'s note depth',
unnamedArgumentList: [ unnamedArgumentList: [
new SlashCommandArgument( new SlashCommandArgument(
'number', [ARGUMENT_TYPE.NUMBER], true, 'number', [ARGUMENT_TYPE.NUMBER], false,
), ),
], ],
helpString: ` helpString: `
<div> <div>
Sets an author's note depth for in-chat positioning. Sets an author's note depth for in-chat positioning if specified and returns the current depth.
</div> </div>
`, `,
})); }));
SlashCommandParser.addCommandObject(SlashCommand.fromProps({ name: 'freq', SlashCommandParser.addCommandObject(SlashCommand.fromProps({ name: 'freq',
aliases: ['note-freq'],
callback: setNoteIntervalCommand, callback: setNoteIntervalCommand,
returns: 'current author\'s note insertion frequency',
namedArgumentList: [], namedArgumentList: [],
unnamedArgumentList: [ unnamedArgumentList: [
new SlashCommandArgument( new SlashCommandArgument(
'number', [ARGUMENT_TYPE.NUMBER], true, 'number', [ARGUMENT_TYPE.NUMBER], false,
), ),
], ],
helpString: ` helpString: `
<div> <div>
Sets an author's note insertion frequency. Sets an author's note insertion frequency if specified and returns the current frequency.
</div> </div>
`, `,
})); }));
SlashCommandParser.addCommandObject(SlashCommand.fromProps({ name: 'pos', SlashCommandParser.addCommandObject(SlashCommand.fromProps({ name: 'pos',
callback: setNotePositionCommand, callback: setNotePositionCommand,
aliases: ['note-pos'],
returns: 'current author\'s note insertion position',
namedArgumentList: [], namedArgumentList: [],
unnamedArgumentList: [ unnamedArgumentList: [
new SlashCommandArgument( new SlashCommandArgument(
'position', [ARGUMENT_TYPE.STRING], true, false, null, ['chat', 'scenario'], 'position', [ARGUMENT_TYPE.STRING], false, false, null, ['chat', 'scenario','before_scenario'],
), ),
], ],
helpString: ` helpString: `
<div> <div>
Sets an author's note position. Sets an author's note position if specified and returns the current position.
</div>
`,
}));
SlashCommandParser.addCommandObject(SlashCommand.fromProps({ name: 'note-role',
callback: setNoteRoleCommand,
returns: 'current author\'s note chat insertion role',
namedArgumentList: [],
unnamedArgumentList: [
new SlashCommandArgument(
'position', [ARGUMENT_TYPE.STRING], false, false, null, ['system', 'user','assistant'],
),
],
helpString: `
<div>
Sets an author's note chat insertion role if specified and returns the current role.
</div> </div>
`, `,
})); }));