diff --git a/src/ts/process/index.svelte.ts b/src/ts/process/index.svelte.ts index 8bda6569..47eda1f6 100644 --- a/src/ts/process/index.svelte.ts +++ b/src/ts/process/index.svelte.ts @@ -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){ diff --git a/src/ts/process/lua.ts b/src/ts/process/lua.ts index 06e39642..861560c9 100644 --- a/src/ts/process/lua.ts +++ b/src/ts/process/lua.ts @@ -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() @@ -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)){