fix: Chat trigger on start

This commit is contained in:
bangonicdd
2025-03-14 15:58:22 +09:00
parent fef10c1e56
commit 6446d4aa07
2 changed files with 11 additions and 4 deletions

View File

@@ -1,5 +1,5 @@
import { get, writable } from "svelte/store";
import { type character, type MessageGenerationInfo, type Chat, changeToPreset } from "../storage/database.svelte";
import { type character, type MessageGenerationInfo, type Chat, changeToPreset, setCurrentChat } from "../storage/database.svelte";
import { DBState } from '../stores.svelte';
import { CharEmotion, selectedCharID } from "../stores.svelte";
import { ChatTokenizer, tokenize, tokenizeNum } from "../tokenizer";
@@ -694,6 +694,7 @@ export async function sendChat(chatProcessIndex = -1,arg:{
const triggerResult = await runTrigger(currentChar, 'start', {chat: currentChat})
if(triggerResult){
currentChat = triggerResult.chat
setCurrentChat(currentChat)
ms = currentChat.message
currentTokens += triggerResult.tokens
if(triggerResult.stopSending){

View File

@@ -23,6 +23,8 @@ interface LuaEngineState {
engine: LuaEngine;
mutex: Mutex;
chat: Chat;
setVar: (key:string, value:string) => void,
getVar: (key:string) => string
}
let LuaEngines = new Map<string, LuaEngineState>()
@@ -55,12 +57,16 @@ export async function runLua(code:string, arg:{
code,
engine: await luaFactory.createEngine({injectObjects: true}),
mutex: new Mutex(),
chat
chat,
setVar,
getVar
}
LuaEngines.set(mode, luaEngineState)
wasEmpty = true
} else {
luaEngineState.chat = chat
luaEngineState.setVar = setVar
luaEngineState.getVar = getVar
}
return await luaEngineState.mutex.runExclusive(async () => {
if (wasEmpty || code !== luaEngineState.code) {
@@ -72,13 +78,13 @@ export async function runLua(code:string, arg:{
if(!LuaSafeIds.has(id) && !LuaEditDisplayIds.has(id)){
return
}
setVar(key, value)
luaEngineState.setVar(key, value)
})
luaEngine.global.set('getChatVar', (id:string,key:string) => {
if(!LuaSafeIds.has(id) && !LuaEditDisplayIds.has(id)){
return
}
return getVar(key)
return luaEngineState.getVar(key)
})
luaEngine.global.set('stopChat', (id:string) => {
if(!LuaSafeIds.has(id)){