Make item event responses compatible with strict schemas

This commit is contained in:
2026-08-04 19:52:47 +00:00
parent 29fcad6e9b
commit f4c05c34ef
5 changed files with 143 additions and 19 deletions

View File

@@ -81,6 +81,21 @@ func TestExtractPreservesInvalidCandidatesAndEmptyResults(t *testing.T) {
}
}
func TestExtractMapsNullableResponseFieldsToAbsentArtifactFields(t *testing.T) {
client := &fakeItemEventsLLMClient{content: []byte(`{"events":[{"name":"Hidden Cache","kind":"discovered","quantity":null,"from":null,"to":null,"source_refs":[{"start_segment":1,"end_segment":1}]}]}`)}
result, err := newExtractor(t, client).Extract(context.Background(), extractionRequest())
if err != nil {
t.Fatal(err)
}
if len(result.Value.Events) != 1 {
t.Fatalf("events = %#v, want one", result.Value.Events)
}
event := result.Value.Events[0]
if event.Quantity != nil || event.From != "" || event.To != "" {
t.Fatalf("nullable response fields mapped to artifact values: %#v", event)
}
}
func TestExtractUsesSourceDocumentOrderForCandidates(t *testing.T) {
client := &fakeItemEventsLLMClient{response: extractionResponse{Events: []itemEventResponse{
{Name: "Later", Kind: "discovered", SourceRefs: responseRefs(10, 10)},