From 71ee015f21adb366c3c4d40e2c51f0f7ceabf8a5 Mon Sep 17 00:00:00 2001 From: bangonicdd <157843588+bangonicdd2@users.noreply.github.com> Date: Sun, 9 Mar 2025 19:58:08 +0900 Subject: [PATCH 1/3] fix: lua chat functions --- src/ts/observer.svelte.ts | 7 ++++- src/ts/process/lua.ts | 52 +++++++++++++------------------------- src/ts/process/triggers.ts | 2 +- 3 files changed, 24 insertions(+), 37 deletions(-) diff --git a/src/ts/observer.svelte.ts b/src/ts/observer.svelte.ts index 8d7f2fe3..0eb1d54d 100644 --- a/src/ts/observer.svelte.ts +++ b/src/ts/observer.svelte.ts @@ -43,7 +43,12 @@ function nodeObserve(node:HTMLElement){ if(currentChar.type === 'group'){ return; } - await runLuaButtonTrigger(currentChar, btnEvent); + const triggerResult = await runLuaButtonTrigger(currentChar, btnEvent); + + if(triggerResult){ + setCurrentChat(triggerResult.chat); + } + }, { passive: true, }); diff --git a/src/ts/process/lua.ts b/src/ts/process/lua.ts index 1f2e4bdf..06e39642 100644 --- a/src/ts/process/lua.ts +++ b/src/ts/process/lua.ts @@ -22,6 +22,7 @@ interface LuaEngineState { code: string; engine: LuaEngine; mutex: Mutex; + chat: Chat; } let LuaEngines = new Map() @@ -53,10 +54,13 @@ export async function runLua(code:string, arg:{ luaEngineState = { code, engine: await luaFactory.createEngine({injectObjects: true}), - mutex: new Mutex() + mutex: new Mutex(), + chat } LuaEngines.set(mode, luaEngineState) wasEmpty = true + } else { + luaEngineState.chat = chat } return await luaEngineState.mutex.runExclusive(async () => { if (wasEmpty || code !== luaEngineState.code) { @@ -104,79 +108,58 @@ export async function runLua(code:string, arg:{ if(!LuaSafeIds.has(id)){ return } - chat = getCurrentChat() - const message = chat.message?.at(index) + const message = luaEngineState.chat.message?.at(index) if(message){ message.data = value } - setCurrentChat(chat) }) luaEngine.global.set('setChatRole', (id:string, index:number, value:string) => { if(!LuaSafeIds.has(id)){ return } - chat = getCurrentChat() - const message = chat.message?.at(index) + const message = luaEngineState.chat.message?.at(index) if(message){ message.role = value === 'user' ? 'user' : 'char' } - setCurrentChat(chat) }) luaEngine.global.set('cutChat', (id:string, start:number, end:number) => { if(!LuaSafeIds.has(id)){ return } - chat = getCurrentChat() - chat.message = chat.message.slice(start,end) - setCurrentChat(chat) + luaEngineState.chat.message = luaEngineState.chat.message.slice(start,end) }) luaEngine.global.set('removeChat', (id:string, index:number) => { if(!LuaSafeIds.has(id)){ return } - chat = getCurrentChat() - chat.message.splice(index, 1) - setCurrentChat(chat) + luaEngineState.chat.message.splice(index, 1) }) luaEngine.global.set('addChat', (id:string, role:string, value:string) => { if(!LuaSafeIds.has(id)){ return } - chat = getCurrentChat() let roleData:'user'|'char' = role === 'user' ? 'user' : 'char' - chat.message.push({role: roleData, data: value}) - setCurrentChat(chat) + luaEngineState.chat.message.push({role: roleData, data: value}) }) luaEngine.global.set('insertChat', (id:string, index:number, role:string, value:string) => { if(!LuaSafeIds.has(id)){ return } - chat = getCurrentChat() let roleData:'user'|'char' = role === 'user' ? 'user' : 'char' - chat.message.splice(index, 0, {role: roleData, data: value}) - setCurrentChat(chat) - }) - luaEngine.global.set('removeChat', (id:string, index:number) => { - if(!LuaSafeIds.has(id)){ - return - } - chat = getCurrentChat() - chat.message.splice(index, 1) - setCurrentChat(chat) + luaEngineState.chat.message.splice(index, 0, {role: roleData, data: value}) }) luaEngine.global.set('getChatLength', (id:string) => { if(!LuaSafeIds.has(id)){ return } - chat = getCurrentChat() - return chat.message.length + return luaEngineState.chat.message.length }) luaEngine.global.set('getFullChatMain', (id:string) => { - chat = getCurrentChat() - const data = JSON.stringify(chat.message.map((v) => { + const data = JSON.stringify(luaEngineState.chat.message.map((v) => { return { role: v.role, - data: v.data + data: v.data, + time: v.time ?? 0 } })) return data @@ -187,14 +170,12 @@ export async function runLua(code:string, arg:{ if(!LuaSafeIds.has(id)){ return } - chat = getCurrentChat() - chat.message = realValue.map((v) => { + luaEngineState.chat.message = realValue.map((v) => { return { role: v.role, data: v.data } }) - setCurrentChat(chat) }) luaEngine.global.set('logMain', (value:string) => { @@ -550,6 +531,7 @@ export async function runLua(code:string, arg:{ LuaSafeIds.delete(accessKey) LuaLowLevelIds.delete(accessKey) + chat = luaEngineState.chat return { stopSending, chat, res diff --git a/src/ts/process/triggers.ts b/src/ts/process/triggers.ts index 14f314b5..75a91d51 100644 --- a/src/ts/process/triggers.ts +++ b/src/ts/process/triggers.ts @@ -1151,7 +1151,7 @@ export async function runTrigger(char:character,mode:triggerMode, arg:{ if(triggerCodeResult.stopSending){ stopSending = true } - chat = getCurrentChat() + chat = triggerCodeResult.chat break } From 48b470bf06019d5afa2717f9210e91965856ecf9 Mon Sep 17 00:00:00 2001 From: sub-hub <70351692+sub-hub@users.noreply.github.com> Date: Sun, 9 Mar 2025 21:09:58 +0900 Subject: [PATCH 2/3] Fix: Now useAutoTranslateInput is turned off, translation requests are not made. --- src/lib/ChatScreens/DefaultChatScreen.svelte | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/lib/ChatScreens/DefaultChatScreen.svelte b/src/lib/ChatScreens/DefaultChatScreen.svelte index 991d9410..5d1bc1c3 100644 --- a/src/lib/ChatScreens/DefaultChatScreen.svelte +++ b/src/lib/ChatScreens/DefaultChatScreen.svelte @@ -317,6 +317,9 @@ }); async function updateInputTransateMessage(reverse: boolean) { + if(!DBState.db.useAutoTranslateInput){ + return + } if(isExpTranslator()){ if(!reverse){ messageInputTranslate = '' From aaa9dfc2dc5d1373e2ddbaed9000c7504b2e7a04 Mon Sep 17 00:00:00 2001 From: bangonicdd <157843588+bangonicdd2@users.noreply.github.com> Date: Wed, 12 Mar 2025 22:34:29 +0900 Subject: [PATCH 3/3] feat:Add 'module_assetlist' cbs --- src/ts/parser.svelte.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/ts/parser.svelte.ts b/src/ts/parser.svelte.ts index 75ae99df..c0039492 100644 --- a/src/ts/parser.svelte.ts +++ b/src/ts/parser.svelte.ts @@ -1544,6 +1544,17 @@ function basicMatcher (p1:string,matcherArg:matcherArg,vars:{[key:string]:string } return '0' } + case 'module_assetlist':{ + const module = getModules()?.find((f) => { + return f.namespace === arra[1] + }) + if(!module){ + return '' + } + return makeArray(module.assets?.map((f) => { + return f[0] + })) + } case 'filter':{ const array = parseArray(arra[1]) const filterTypes = [