From f61da89db26e702df00a2c52a9e0f321a67ec40b Mon Sep 17 00:00:00 2001 From: kwaroran Date: Wed, 9 Aug 2023 01:38:47 +0900 Subject: [PATCH] [feat] add template warn --- src/lib/Setting/Pages/PromptSettings.svelte | 12 ++++ src/ts/process/templates/templateCheck.ts | 79 +++++++++++++++++++++ 2 files changed, 91 insertions(+) create mode 100644 src/ts/process/templates/templateCheck.ts diff --git a/src/lib/Setting/Pages/PromptSettings.svelte b/src/lib/Setting/Pages/PromptSettings.svelte index 15c4654b..ae5a723f 100644 --- a/src/lib/Setting/Pages/PromptSettings.svelte +++ b/src/lib/Setting/Pages/PromptSettings.svelte @@ -3,12 +3,15 @@ import { language } from "src/lang"; import ProomptItem from "src/lib/UI/ProomptItem.svelte"; import type { Proompt } from "src/ts/process/proompt"; + import { templateCheck } from "src/ts/process/templates/templateCheck"; import { DataBase } from "src/ts/storage/database"; let sorted = 0 let opened = 0 + let warns: string[] = [] export let onGoBack: () => void = () => {} + $: warns = templateCheck($DataBase)

@@ -17,6 +20,15 @@ {language.promptTemplate}

+{#if warns.length > 0} +
+

Warning

+
+ {#each warns as warn} + {warn} + {/each} +
+{/if}
{#if $DataBase.promptTemplate.length === 0}
No Format
diff --git a/src/ts/process/templates/templateCheck.ts b/src/ts/process/templates/templateCheck.ts new file mode 100644 index 00000000..11c054b2 --- /dev/null +++ b/src/ts/process/templates/templateCheck.ts @@ -0,0 +1,79 @@ +import type { Database } from 'src/ts/storage/database' + +export function templateCheck(db:Database){ + + const temp = db.promptTemplate + if(!temp){ + return [] + } + + let mainPrompts = 0 + let notePrompts = 0 + let endRanges:number[] = [] + let startRanges:number[] = [] + let hasDescription = false + let hasLorebook = false + let reachEnd = false + + for(let i=0;i !endRanges.includes(x)).concat(endRanges.filter(x => !startRanges.includes(x))) + + if(mainPrompts === 0){ + warnings.push('No main prompt entry found') + } + if(mainPrompts > 1){ + warnings.push('Multiple main prompt entries found, this can result in unexpected behavior') + } + if(notePrompts === 0){ + warnings.push('No global notes entry found') + } + if(notePrompts > 1){ + warnings.push('Multiple global notes entries found, this can result in unexpected behavior') + } + if(!hasDescription){ + warnings.push('No description entry found') + } + if(!hasLorebook){ + warnings.push('No lorebook entry found') + } + if(!reachEnd){ + warnings.push('No chat entry found with range end set to "Until chat end"') + } + + if(unresolvedRanges.length > 0){ + warnings.push('Unresolved chat ranges: ' + unresolvedRanges.join(', ')) + } + + return warnings + +} \ No newline at end of file