Recover from missing chronicle entries

This commit is contained in:
2026-07-15 07:20:09 -07:00
parent 3314ef191f
commit 448c1f7067
2 changed files with 27 additions and 10 deletions
@@ -1,6 +1,6 @@
package net.eagle0.eagle.library.actions.llm_prompt_generators
import net.eagle0.common.SimpleTimedLogger
import net.eagle0.eagle.client_text.{ClientTextStore, TextGenerationResult}
import net.eagle0.eagle.client_text.{ClientTextStore, TextGenerationDependencyUnknown, TextGenerationResult}
import net.eagle0.eagle.library.settings.ChronicleWordCount
import net.eagle0.eagle.model.action_result.generated_text_request.chronicle_event.ChronicleEvent
import net.eagle0.eagle.model.action_result.generated_text_request.LlmRequestT
@@ -177,14 +177,22 @@ case class ChronicleUpdatePromptGenerator(
)
private def previousEntryText: Vector[TextGenerationResult] =
chronicleUpdateMessage.previous_entries.map { entry =>
clientTextStore.getText(entry.generatedTextId).map { text =>
val chroniclerLabel =
entry.chroniclerStyle match {
case Some(style) if style.nonEmpty => s"Written by $style:"
case _ => "Written by an unknown chronicler:"
}
s"${GeneratorUtilities.dateString(entry.date)}\n$chroniclerLabel\n$text"
chronicleUpdateMessage.previous_entries.flatMap { entry =>
clientTextStore.getText(entry.generatedTextId) match {
case TextGenerationDependencyUnknown(missingTextId) =>
SimpleTimedLogger.printLogger.logLine(
s"Skipping missing previous chronicle entry $missingTextId while generating ${chronicleUpdateMessage.requestId}"
)
None
case result =>
Some(result.map { text =>
val chroniclerLabel =
entry.chroniclerStyle match {
case Some(style) if style.nonEmpty => s"Written by $style:"
case _ => "Written by an unknown chronicler:"
}
s"${GeneratorUtilities.dateString(entry.date)}\n$chroniclerLabel\n$text"
})
}
}
@@ -1,6 +1,6 @@
package net.eagle0.eagle.library.actions.llm_prompt_generators
import net.eagle0.eagle.client_text.{ClientTextStore, TextGenerationSuccess}
import net.eagle0.eagle.client_text.{ClientTextStore, TextGenerationDependencyUnknown, TextGenerationSuccess}
import net.eagle0.eagle.library.settings.ChronicleWordCount
import net.eagle0.eagle.model.action_result.generated_text_request.{ChronicleUpdatePreviousEntry, LlmRequestT}
import net.eagle0.eagle.model.action_result.generated_text_request.chronicle_event.{
@@ -100,6 +100,10 @@ class ChronicleUpdatePromptGeneratorTest extends AnyFlatSpec with BeforeAndAfter
TextGenerationSuccess("Last year's title\n=====\nLast year's text")
)
.once(): Unit
mockClientTextStore.getText
.expects("missing_chronicle_entry")
.returning(TextGenerationDependencyUnknown("missing_chronicle_entry"))
.once(): Unit
mockClientTextStore.getText
.expects("bregos_id")
.returning(TextGenerationSuccess("Bregos Fyar is the King of the realm."))
@@ -139,6 +143,11 @@ class ChronicleUpdatePromptGeneratorTest extends AnyFlatSpec with BeforeAndAfter
date = Date(year = 342, month = Date.Month.January),
generatedTextId = "previous_chronicle_entry",
chroniclerStyle = None // Unknown chronicler for this older entry
),
ChronicleUpdatePreviousEntry(
date = Date(year = 342, month = Date.Month.February),
generatedTextId = "missing_chronicle_entry",
chroniclerStyle = Some("a missing chronicler")
)
),
new_entries = Vector(