mirror of
				https://github.com/severian-dev/sucker.severian.dev.git
				synced 2025-10-31 06:05:41 +00:00 
			
		
		
		
	fix: r1 and blank user persona handling
This commit is contained in:
		| @@ -52,7 +52,7 @@ function safeReplace(text: string, old: string, newStr: string): string { | ||||
|  | ||||
| function extractCardData(messages: Message[]): CardData { | ||||
|   const content0 = messages[0].content; | ||||
|   const content1 = messages[1].content; | ||||
|   const content1 = messages[2].content; | ||||
|  | ||||
|   const userName = extractPersonaName(content0, 0); | ||||
|   const charName = extractPersonaName(content0, 1); | ||||
| @@ -67,41 +67,41 @@ function extractCardData(messages: Message[]): CardData { | ||||
|     first_mes: content1, | ||||
|   }; | ||||
|  | ||||
|   if (personaMatches.length >= 2) { | ||||
|     const secondPersonaIdx = personaMatches[1].index!; | ||||
|     const startDesc = secondPersonaIdx + "'s Persona:".length; | ||||
|     const remaining = content0.slice(startDesc); | ||||
|   // blank user persona handling, or at least an attempt | ||||
|   let secondPersonaIdx = | ||||
|     personaMatches[personaMatches.length >= 2 ? 1 : 0]?.index; | ||||
|   const startDesc = secondPersonaIdx + "'s Persona:".length; | ||||
|   const remaining = content0.slice(startDesc); | ||||
|  | ||||
|     const scenarioMarker = remaining.match(/Scenario of the roleplay:/); | ||||
|     const exampleMarker = remaining.match(/Example conversations between/); | ||||
|   const scenarioMarker = remaining.match(/Scenario of the roleplay:/); | ||||
|   const exampleMarker = remaining.match(/Example conversations between/); | ||||
|  | ||||
|     let endIdx = remaining.length; | ||||
|     if (scenarioMarker) endIdx = Math.min(endIdx, scenarioMarker.index!); | ||||
|     if (exampleMarker) endIdx = Math.min(endIdx, exampleMarker.index!); | ||||
|   let endIdx = remaining.length; | ||||
|   if (scenarioMarker) endIdx = Math.min(endIdx, scenarioMarker.index!); | ||||
|   if (exampleMarker) endIdx = Math.min(endIdx, exampleMarker.index!); | ||||
|  | ||||
|     cardData.description = remaining.slice(0, endIdx).trim(); | ||||
|   cardData.description = remaining.slice(0, endIdx).trim(); | ||||
|  | ||||
|     if (scenarioMarker) { | ||||
|       const scenarioStart = scenarioMarker.index! + scenarioMarker[0].length; | ||||
|       const scenarioRemaining = remaining.slice(scenarioStart); | ||||
|       const exampleInScenarioMarker = scenarioRemaining.match( | ||||
|         /Example conversations between/ | ||||
|       ); | ||||
|       const scenarioEnd = exampleInScenarioMarker | ||||
|         ? exampleInScenarioMarker.index! | ||||
|         : scenarioRemaining.length; | ||||
|       cardData.scenario = scenarioRemaining.slice(0, scenarioEnd).trim(); | ||||
|     } | ||||
|   if (scenarioMarker) { | ||||
|     const scenarioStart = scenarioMarker.index! + scenarioMarker[0].length; | ||||
|     const scenarioRemaining = remaining.slice(scenarioStart); | ||||
|     const exampleInScenarioMarker = scenarioRemaining.match( | ||||
|       /Example conversations between/ | ||||
|     ); | ||||
|     const scenarioEnd = exampleInScenarioMarker | ||||
|       ? exampleInScenarioMarker.index! | ||||
|       : scenarioRemaining.length; | ||||
|     cardData.scenario = scenarioRemaining.slice(0, scenarioEnd).trim(); | ||||
|   } | ||||
|  | ||||
|     if (exampleMarker) { | ||||
|       const exampleStart = exampleMarker.index!; | ||||
|       const rawExampleStr = remaining.slice(exampleStart).trim(); | ||||
|       const colonIdx = rawExampleStr.indexOf(":"); | ||||
|       cardData.mes_example = | ||||
|         colonIdx !== -1 | ||||
|           ? rawExampleStr.slice(colonIdx + 1).trim() | ||||
|           : rawExampleStr.trim(); | ||||
|     } | ||||
|   if (exampleMarker) { | ||||
|     const exampleStart = exampleMarker.index!; | ||||
|     const rawExampleStr = remaining.slice(exampleStart).trim(); | ||||
|     const colonIdx = rawExampleStr.indexOf(":"); | ||||
|     cardData.mes_example = | ||||
|       colonIdx !== -1 | ||||
|         ? rawExampleStr.slice(colonIdx + 1).trim() | ||||
|         : rawExampleStr.trim(); | ||||
|   } | ||||
|  | ||||
|   for (const field in cardData) { | ||||
|   | ||||
| @@ -186,7 +186,12 @@ export default function Home() { | ||||
|     <main className="min-h-screen bg-background text-foreground"> | ||||
|       <div className="container mx-auto px-4 py-8"> | ||||
|         <div className="flex justify-between items-center mb-4"> | ||||
|           <h1 className="text-3xl font-bold">Sucker</h1> | ||||
|           <div> | ||||
|             <h1 className="text-3xl font-bold">Sucker v1.1</h1> | ||||
|             <p className="text-sm text-muted-foreground"> | ||||
|               Fixed R1 handling change, blank user persona bug. | ||||
|             </p> | ||||
|           </div> | ||||
|           <Button | ||||
|             onClick={fetchCards} | ||||
|             variant="outline" | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Severian
					Severian