@@ -60,18 +60,35 @@ func buildStreamResponse(evt interfaces.StreamEvent, requestID string) *types.St
6060 // Special handling for references event
6161 if evt .Type == types .ResponseTypeReferences {
6262 refsData := evt .Data ["references" ]
63- logger .GetLogger (context .Background ()).Info ("buildStreamResponse references event" ,
64- "refsData_type" , fmt .Sprintf ("%T" , refsData ),
65- "refsData" , refsData )
6663 if refs , ok := refsData .(types.References ); ok {
67- logger .GetLogger (context .Background ()).Info ("buildStreamResponse: matched types.References" )
6864 response .KnowledgeReferences = refs
6965 } else if refs , ok := refsData .([]* types.SearchResult ); ok {
70- logger .GetLogger (context .Background ()).Info ("buildStreamResponse: matched []*types.SearchResult" )
7166 response .KnowledgeReferences = types .References (refs )
72- } else {
73- logger .GetLogger (context .Background ()).Warn ("buildStreamResponse: references type assertion failed" ,
74- "actual_type" , fmt .Sprintf ("%T" , refsData ))
67+ } else if refs , ok := refsData .([]interface {}); ok {
68+ // Handle case where data was serialized/deserialized (e.g., from Redis)
69+ searchResults := make ([]* types.SearchResult , 0 , len (refs ))
70+ for _ , ref := range refs {
71+ if refMap , ok := ref .(map [string ]interface {}); ok {
72+ sr := & types.SearchResult {
73+ ID : getString (refMap , "id" ),
74+ Content : getString (refMap , "content" ),
75+ KnowledgeID : getString (refMap , "knowledge_id" ),
76+ ChunkIndex : int (getFloat64 (refMap , "chunk_index" )),
77+ KnowledgeTitle : getString (refMap , "knowledge_title" ),
78+ StartAt : int (getFloat64 (refMap , "start_at" )),
79+ EndAt : int (getFloat64 (refMap , "end_at" )),
80+ Seq : int (getFloat64 (refMap , "seq" )),
81+ Score : getFloat64 (refMap , "score" ),
82+ ChunkType : getString (refMap , "chunk_type" ),
83+ ParentChunkID : getString (refMap , "parent_chunk_id" ),
84+ ImageInfo : getString (refMap , "image_info" ),
85+ KnowledgeFilename : getString (refMap , "knowledge_filename" ),
86+ KnowledgeSource : getString (refMap , "knowledge_source" ),
87+ }
88+ searchResults = append (searchResults , sr )
89+ }
90+ }
91+ response .KnowledgeReferences = types .References (searchResults )
7592 }
7693 }
7794
0 commit comments