mirror of
https://github.com/router-for-me/CLIProxyAPIPlus.git
synced 2026-04-26 04:16:09 +00:00
refactor: align GenerateSearchIndicatorEvents return type with other event builders
Change GenerateSearchIndicatorEvents to return [][]byte instead of []sseEvent for consistency with BuildFallbackTextEvents and other event building functions. Benefits: - Consistent API across all event generation functions - Eliminates intermediate sseEvent type conversion in caller - Simplifies usage by returning ready-to-send SSE byte slices This addresses the code quality feedback from PR #226 review.
This commit is contained in:
@@ -4487,7 +4487,7 @@ func (e *KiroExecutor) handleWebSearchStream(
|
|||||||
select {
|
select {
|
||||||
case <-ctx.Done():
|
case <-ctx.Done():
|
||||||
return
|
return
|
||||||
case out <- cliproxyexecutor.StreamChunk{Payload: []byte(event.ToSSEString())}:
|
case out <- cliproxyexecutor.StreamChunk{Payload: event}:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
contentBlockIndex += 2
|
contentBlockIndex += 2
|
||||||
|
|||||||
@@ -194,46 +194,43 @@ func GenerateSearchIndicatorEvents(
|
|||||||
toolUseID string,
|
toolUseID string,
|
||||||
searchResults *WebSearchResults,
|
searchResults *WebSearchResults,
|
||||||
startIndex int,
|
startIndex int,
|
||||||
) []sseEvent {
|
) [][]byte {
|
||||||
events := make([]sseEvent, 0, 4)
|
events := make([][]byte, 0, 5)
|
||||||
|
|
||||||
// 1. content_block_start (server_tool_use)
|
// 1. content_block_start (server_tool_use)
|
||||||
events = append(events, sseEvent{
|
event1 := map[string]interface{}{
|
||||||
Event: "content_block_start",
|
"type": "content_block_start",
|
||||||
Data: map[string]interface{}{
|
"index": startIndex,
|
||||||
"type": "content_block_start",
|
"content_block": map[string]interface{}{
|
||||||
"index": startIndex,
|
"id": toolUseID,
|
||||||
"content_block": map[string]interface{}{
|
"type": "server_tool_use",
|
||||||
"id": toolUseID,
|
"name": "web_search",
|
||||||
"type": "server_tool_use",
|
"input": map[string]interface{}{},
|
||||||
"name": "web_search",
|
|
||||||
"input": map[string]interface{}{},
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
})
|
}
|
||||||
|
data1, _ := json.Marshal(event1)
|
||||||
|
events = append(events, []byte("event: content_block_start\ndata: "+string(data1)+"\n\n"))
|
||||||
|
|
||||||
// 2. content_block_delta (input_json_delta)
|
// 2. content_block_delta (input_json_delta)
|
||||||
inputJSON, _ := json.Marshal(map[string]string{"query": query})
|
inputJSON, _ := json.Marshal(map[string]string{"query": query})
|
||||||
events = append(events, sseEvent{
|
event2 := map[string]interface{}{
|
||||||
Event: "content_block_delta",
|
"type": "content_block_delta",
|
||||||
Data: map[string]interface{}{
|
"index": startIndex,
|
||||||
"type": "content_block_delta",
|
"delta": map[string]interface{}{
|
||||||
"index": startIndex,
|
"type": "input_json_delta",
|
||||||
"delta": map[string]interface{}{
|
"partial_json": string(inputJSON),
|
||||||
"type": "input_json_delta",
|
|
||||||
"partial_json": string(inputJSON),
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
})
|
}
|
||||||
|
data2, _ := json.Marshal(event2)
|
||||||
|
events = append(events, []byte("event: content_block_delta\ndata: "+string(data2)+"\n\n"))
|
||||||
|
|
||||||
// 3. content_block_stop (server_tool_use)
|
// 3. content_block_stop (server_tool_use)
|
||||||
events = append(events, sseEvent{
|
event3 := map[string]interface{}{
|
||||||
Event: "content_block_stop",
|
"type": "content_block_stop",
|
||||||
Data: map[string]interface{}{
|
"index": startIndex,
|
||||||
"type": "content_block_stop",
|
}
|
||||||
"index": startIndex,
|
data3, _ := json.Marshal(event3)
|
||||||
},
|
events = append(events, []byte("event: content_block_stop\ndata: "+string(data3)+"\n\n"))
|
||||||
})
|
|
||||||
|
|
||||||
// 4. content_block_start (web_search_tool_result)
|
// 4. content_block_start (web_search_tool_result)
|
||||||
searchContent := make([]map[string]interface{}, 0)
|
searchContent := make([]map[string]interface{}, 0)
|
||||||
@@ -252,27 +249,25 @@ func GenerateSearchIndicatorEvents(
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
events = append(events, sseEvent{
|
event4 := map[string]interface{}{
|
||||||
Event: "content_block_start",
|
"type": "content_block_start",
|
||||||
Data: map[string]interface{}{
|
"index": startIndex + 1,
|
||||||
"type": "content_block_start",
|
"content_block": map[string]interface{}{
|
||||||
"index": startIndex + 1,
|
"type": "web_search_tool_result",
|
||||||
"content_block": map[string]interface{}{
|
"tool_use_id": toolUseID,
|
||||||
"type": "web_search_tool_result",
|
"content": searchContent,
|
||||||
"tool_use_id": toolUseID,
|
|
||||||
"content": searchContent,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
})
|
}
|
||||||
|
data4, _ := json.Marshal(event4)
|
||||||
|
events = append(events, []byte("event: content_block_start\ndata: "+string(data4)+"\n\n"))
|
||||||
|
|
||||||
// 5. content_block_stop (web_search_tool_result)
|
// 5. content_block_stop (web_search_tool_result)
|
||||||
events = append(events, sseEvent{
|
event5 := map[string]interface{}{
|
||||||
Event: "content_block_stop",
|
"type": "content_block_stop",
|
||||||
Data: map[string]interface{}{
|
"index": startIndex + 1,
|
||||||
"type": "content_block_stop",
|
}
|
||||||
"index": startIndex + 1,
|
data5, _ := json.Marshal(event5)
|
||||||
},
|
events = append(events, []byte("event: content_block_stop\ndata: "+string(data5)+"\n\n"))
|
||||||
})
|
|
||||||
|
|
||||||
return events
|
return events
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user