diff --git a/README.md b/README.md index d2fe058..95b9bce 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,8 @@ # Sucker Check package.json for commands, I can't be bothered. + +### Changelog + +- 1.1: Fix for R1 handling change, blank user persona bug +- 1.0: Yup. diff --git a/src/app/api/proxy/route.ts b/src/app/api/proxy/route.ts index 9777f7a..31628fd 100644 --- a/src/app/api/proxy/route.ts +++ b/src/app/api/proxy/route.ts @@ -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) { diff --git a/src/app/page.tsx b/src/app/page.tsx index e75dcae..e348363 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -186,7 +186,12 @@ export default function Home() {
-

Sucker

+
+

Sucker v1.1

+

+ Fixed R1 handling change, blank user persona bug. +

+