feat: completions API improvements, gemini endpoint, response types

This commit is contained in:
Nikketryhard
2026-02-15 17:08:53 -06:00
parent afa96b88a5
commit ca9f808ee3
8 changed files with 1031 additions and 742 deletions

View File

@@ -755,7 +755,7 @@ async fn handle_http_over_tls(
info!("MITM: stored {} function call(s) from initial body", streaming_acc.function_calls.len());
}
// Capture response + thinking text directly into MitmStore
// Capture response + thinking text + grounding directly into MitmStore
if bypass_ls {
if !streaming_acc.response_text.is_empty() {
store.set_response_text(&streaming_acc.response_text).await;
@@ -763,6 +763,9 @@ async fn handle_http_over_tls(
if !streaming_acc.thinking_text.is_empty() {
store.set_thinking_text(&streaming_acc.thinking_text).await;
}
if let Some(ref gm) = streaming_acc.grounding_metadata {
store.set_grounding(gm.clone()).await;
}
if streaming_acc.is_complete {
store.mark_response_complete();
}
@@ -827,7 +830,7 @@ async fn handle_http_over_tls(
info!("MITM: stored {} function call(s) from body chunk", streaming_acc.function_calls.len());
}
// Capture response + thinking text directly into MitmStore
// Capture response + thinking text + grounding directly into MitmStore
if bypass_ls {
if !streaming_acc.response_text.is_empty() {
store.set_response_text(&streaming_acc.response_text).await;
@@ -835,6 +838,9 @@ async fn handle_http_over_tls(
if !streaming_acc.thinking_text.is_empty() {
store.set_thinking_text(&streaming_acc.thinking_text).await;
}
if let Some(ref gm) = streaming_acc.grounding_metadata {
store.set_grounding(gm.clone()).await;
}
if streaming_acc.is_complete {
store.mark_response_complete();
}
@@ -883,6 +889,10 @@ async fn handle_http_over_tls(
// Capture usage data
if is_streaming_response {
// Store grounding metadata before consuming the accumulator
if let Some(ref gm) = streaming_acc.grounding_metadata {
store.set_grounding(gm.clone()).await;
}
if streaming_acc.is_complete || streaming_acc.output_tokens > 0 {
// Function calls are stored immediately when detected (above),
// so no need to store them again here.