From f1777aba2c946bcf68a850db709956d167a11f01 Mon Sep 17 00:00:00 2001 From: kwaroran Date: Wed, 29 May 2024 18:30:54 +0900 Subject: [PATCH] feat: Add new triggers --- src/lang/en.ts | 11 ++ src/lib/SideBars/Scripts/TriggerData.svelte | 123 +++++++++++++++++--- src/ts/process/triggers.ts | 28 ++++- 3 files changed, 143 insertions(+), 19 deletions(-) diff --git a/src/lang/en.ts b/src/lang/en.ts index f2091747..bc12e38e 100644 --- a/src/lang/en.ts +++ b/src/lang/en.ts @@ -633,4 +633,15 @@ export const languageEnglish = { lowLevelAccessConfirm: "This character uses Low Level Access. which means this character can access the AI model and your storage directly. do you really want to import this character?", triggerLowLevelOnly: "This trigger only works with Low Level Access. to enable this trigger, enable Low Level Access in advanced settings in the character.", truthy: "Truthy", + extractRegex: "Extract Text with Regex", + runImgGen: "Run Image Generation", + cutChat: "Cut Chat", + modifyChat: "Modify Chat", + regex: "Regex", + flags: "Flags", + resultFormat: "Result Format", + negPrompt: "Negative Prompt", + start: "Start", + end: "End", + index: "Index", } \ No newline at end of file diff --git a/src/lib/SideBars/Scripts/TriggerData.svelte b/src/lib/SideBars/Scripts/TriggerData.svelte index bac6cba7..e23e3d76 100644 --- a/src/lib/SideBars/Scripts/TriggerData.svelte +++ b/src/lib/SideBars/Scripts/TriggerData.svelte @@ -203,7 +203,7 @@ location: 'historyend' } } - if(effect.type === 'setvar'){ + else if(effect.type === 'setvar'){ effect = { type: 'setvar', var: '', @@ -211,38 +211,38 @@ operator: '=' } } - if(effect.type === 'impersonate'){ + else if(effect.type === 'impersonate'){ effect = { type: 'impersonate', role: 'char', value: '' } } - if(effect.type === 'command'){ + else if(effect.type === 'command'){ effect = { type: 'command', value: '' } } - if(effect.type === 'stop'){ + else if(effect.type === 'stop'){ effect = { type: 'stop', } } - if(effect.type === 'runtrigger'){ + else if(effect.type === 'runtrigger'){ effect = { type: 'runtrigger', value: '' } } - if(effect.type === 'runLLM'){ + else if(effect.type === 'runLLM'){ effect = { type: 'runLLM', value: '', inputVar: '' } } - if(effect.type === 'checkSimilarity'){ + else if(effect.type === 'checkSimilarity'){ effect = { type: 'checkSimilarity', source: '', @@ -250,7 +250,7 @@ inputVar: '' } } - if(effect.type === 'showAlert'){ + else if(effect.type === 'showAlert'){ effect = { type: 'showAlert', alertType: 'normal', @@ -258,23 +258,58 @@ inputVar: '' } } + else if(effect.type === 'extractRegex'){ + effect ={ + type: 'extractRegex', + value: '', + regex: '', + flags: '', + inputVar: '', + result:'' + } + } + else if(effect.type === 'runImgGen'){ + effect = { + type: 'runImgGen', + value: '', + negValue: '', + inputVar: '' + } + } + else if(effect.type === 'sendAIprompt'){ + effect = { + type: 'sendAIprompt' + } + } + else if(effect.type === 'cutchat'){ + effect = { + type: 'cutchat', + start: '', + end: '' + } + } + else if(effect.type === 'modifychat'){ + effect = { + type: 'modifychat', + value: '', + index: '' + } + } }}> {language.triggerEffSetVar} {language.triggerEffImperson} {language.triggerEffCommand} - {#if effect.type === 'systemprompt' || value.type === 'start'} - {language.triggerEffSysPrompt} - {/if} - {#if effect.type === 'stop' || value.type === 'start'} - {language.triggerEffStop} - {/if} + {language.triggerEffSysPrompt} + {language.triggerEffStop} {language.triggerEffRunTrigger} {language.triggerEffRunLLM} {language.triggerEffCheckSim} {language.triggerEffShowAlert} - {#if effect.type === 'sendAIprompt' || value.type === 'output'} - {language.triggerEffectSendAI} - {/if} + {language.triggerEffectSendAI} + {language.extractRegex} + {language.runImgGen} + {language.cutChat} + {language.modifyChat} {#if (value.type !== 'start' && (effect.type === 'systemprompt' || effect.type === 'stop')) || @@ -283,7 +318,14 @@ {language.invaildTriggerEffect} {/if} {#if - !lowLevelAble && (effect.type === 'runLLM' || effect.type === 'checkSimilarity' || effect.type === 'showAlert' || effect.type === 'sendAIprompt') + !lowLevelAble && ( + effect.type === 'runLLM' || + effect.type === 'checkSimilarity' || + effect.type === 'showAlert' || + effect.type === 'sendAIprompt' || + effect.type === 'extractRegex' || + effect.type === 'runImgGen' + ) } {language.triggerLowLevelOnly} @@ -363,6 +405,51 @@ {language.value} {/if} + + {#if effect.type === 'extractRegex'} + {language.value} + + + {language.regex} + + + {language.flags} + + + {language.resultFormat} + + + {language.resultStoredVar} + + {/if} + + {#if effect.type === 'runImgGen'} + {language.prompt} + + + {language.negPrompt} + + + {language.resultStoredVar} + + {/if} + + {#if effect.type === 'cutchat'} + {language.start} + + + {language.end} + + {/if} + + {#if effect.type === 'modifychat'} + {language.index} + + + {language.value} + + + {/if} {/each} diff --git a/src/ts/process/triggers.ts b/src/ts/process/triggers.ts index e777ea59..d9d99d69 100644 --- a/src/ts/process/triggers.ts +++ b/src/ts/process/triggers.ts @@ -23,7 +23,7 @@ export interface triggerscript{ export type triggerCondition = triggerConditionsVar|triggerConditionsExists|triggerConditionsChatIndex -export type triggerEffect = triggerEffectImgGen|triggerEffectRegex|triggerEffectRunLLM|triggerEffectCheckSimilarity|triggerEffectSendAIprompt|triggerEffectShowAlert|triggerEffectSetvar|triggerEffectSystemPrompt|triggerEffectImpersonate|triggerEffectCommand|triggerEffectStop|triggerEffectRunTrigger +export type triggerEffect = triggerEffectCutChat|triggerEffectModifyChat|triggerEffectImgGen|triggerEffectRegex|triggerEffectRunLLM|triggerEffectCheckSimilarity|triggerEffectSendAIprompt|triggerEffectShowAlert|triggerEffectSetvar|triggerEffectSystemPrompt|triggerEffectImpersonate|triggerEffectCommand|triggerEffectStop|triggerEffectRunTrigger export type triggerConditionsVar = { type:'var'|'value' @@ -52,6 +52,18 @@ export interface triggerEffectSetvar{ value:string } +export interface triggerEffectCutChat{ + type: 'cutchat', + start: string, + end: string +} + +export interface triggerEffectModifyChat{ + type: 'modifychat', + index: string, + value: string +} + export interface triggerEffectSystemPrompt{ type: 'systemprompt', location: 'start'|'historyend'|'promptend', @@ -345,6 +357,20 @@ export async function runTrigger(char:character,mode:triggerMode, arg:{ } break } + case 'cutchat':{ + const start = Number(risuChatParser(effect.start,{chara:char})) + const end = Number(risuChatParser(effect.end,{chara:char})) + chat.message = chat.message.slice(start,end) + break + } + case 'modifychat':{ + const index = Number(risuChatParser(effect.index,{chara:char})) + const value = risuChatParser(effect.value,{chara:char}) + if(chat.message[index]){ + chat.message[index].data = value + } + break + } // low level access only case 'showAlert':{