From a984b823a66f26250980e1953bd42bf6af932667 Mon Sep 17 00:00:00 2001 From: Kwaroran Date: Fri, 13 Dec 2024 00:09:13 +0900 Subject: [PATCH] Update inlay syntax to support 'inlayed' type and adjust parsing logic --- src/lib/ChatScreens/DefaultChatScreen.svelte | 2 +- src/ts/parser.svelte.ts | 25 ++++++++++++-------- src/ts/process/index.svelte.ts | 6 ++--- 3 files changed, 19 insertions(+), 14 deletions(-) diff --git a/src/lib/ChatScreens/DefaultChatScreen.svelte b/src/lib/ChatScreens/DefaultChatScreen.svelte index ecba3cbc..abe258a5 100644 --- a/src/lib/ChatScreens/DefaultChatScreen.svelte +++ b/src/lib/ChatScreens/DefaultChatScreen.svelte @@ -71,7 +71,7 @@ if(fileInput.length > 0){ for(const file of fileInput){ - messageInput += `{{inlay::${file}}}` + messageInput += `{{inlayed::${file}}}` } fileInput = [] } diff --git a/src/ts/parser.svelte.ts b/src/ts/parser.svelte.ts index 9892fe53..12b0528d 100644 --- a/src/ts/parser.svelte.ts +++ b/src/ts/parser.svelte.ts @@ -429,19 +429,24 @@ function getClosestMatch(name:string, assetPaths:{[key:string]:{path:string, ext } async function parseInlayAssets(data:string){ - const inlayMatch = data.match(/{{inlay::(.+?)}}/g) + const inlayMatch = data.match(/{{(inlay|inlayed)::(.+?)}}/g) if(inlayMatch){ for(const inlay of inlayMatch){ - const id = inlay.substring(9, inlay.length - 2) + const inlayType = inlay.startsWith('{{inlayed') ? 'inlayed' : 'inlay' + const id = inlay.substring(inlay.indexOf('::') + 2, inlay.length - 2) const asset = await getInlayAsset(id) - if(asset?.type === 'image'){ - data = data.replace(inlay, `
\n\n`) - } - if(asset?.type === 'video'){ - data = data.replace(inlay, `
\n\n`) - } - if(asset?.type === 'audio'){ - data = data.replace(inlay, `
\n\n`) + let prefix = inlayType === 'inlayed' ? `
` : '' + let postfix = inlayType === 'inlayed' ? `
\n\n` : '' + switch(asset?.type){ + case 'image': + data = data.replace(inlay, `${prefix}${postfix}`) + break + case 'video': + data = data.replace(inlay, `${prefix}${postfix}`) + break + case 'audio': + data = data.replace(inlay, `${prefix}${postfix}`) + break } } diff --git a/src/ts/process/index.svelte.ts b/src/ts/process/index.svelte.ts index b3e33813..3cf86d32 100644 --- a/src/ts/process/index.svelte.ts +++ b/src/ts/process/index.svelte.ts @@ -688,10 +688,10 @@ export async function sendChat(chatProcessIndex = -1,arg:{ } let inlays:string[] = [] if(msg.role === 'char'){ - formatedChat = formatedChat.replace(/{{inlay::(.+?)}}/g, '') + formatedChat = formatedChat.replace(/{{(inlay|inlayed)::(.+?)}}/g, '') } else{ - const inlayMatch = formatedChat.match(/{{inlay::(.+?)}}/g) + const inlayMatch = formatedChat.match(/{{(inlay|inlayed)::(.+?)}}/g) if(inlayMatch){ for(const inlay of inlayMatch){ inlays.push(inlay) @@ -703,7 +703,7 @@ export async function sendChat(chatProcessIndex = -1,arg:{ const modelinfo = getModelInfo(DBState.db.aiModel) if(inlays.length > 0){ for(const inlay of inlays){ - const inlayName = inlay.replace('{{inlay::', '').replace('}}', '') + const inlayName = inlay.replace('{{inlayed::', '').replace('{{inlay::', '').replace('}}', '') const inlayData = await getInlayAsset(inlayName) if(inlayData?.type === 'image'){ if(modelinfo.flags.includes(LLMFlags.hasImageInput)){