Unified · Split
| @@ -486,7 +486,7 @@ func FilterSSEUsageMetadata(payload []byte) []byte { · 485 unmodified lines | ||
| 486 | 486 | return bytes.Join(lines, []byte("\n")) |
| 487 | 487 | } |
| 488 | 488 | |
| 489 | −// StripUsageMetadataFromJSON drops usageMetadata unless finishReason is "stop". | |
| 489 | +// StripUsageMetadataFromJSON drops usageMetadata unless finishReason is present (terminal). | |
| 490 | 490 | // It handles both formats: |
| 491 | 491 | // - Aistudio: candidates.0.finishReason |
| 492 | 492 | // - Antigravity: response.candidates.0.finishReason |
| @@ -501,15 +501,15 @@ func StripUsageMetadataFromJSON(rawJSON []byte) ([]byte, bool) { · 8 unmodified lines | ||
| 501 | 501 | if !finishReason.Exists() { |
| 502 | 502 | finishReason = gjson.GetBytes(jsonBytes, "response.candidates.0.finishReason") |
| 503 | 503 | } |
| 504 | − stopReason := finishReason.Exists() && strings.ToLower(strings.TrimSpace(finishReason.String())) == "stop" | |
| 504 | + terminalReason := finishReason.Exists() && strings.TrimSpace(finishReason.String()) != "" | |
| 505 | 505 | |
| 506 | 506 | usageMetadata := gjson.GetBytes(jsonBytes, "usageMetadata") |
| 507 | 507 | if !usageMetadata.Exists() { |
| 508 | 508 | usageMetadata = gjson.GetBytes(jsonBytes, "response.usageMetadata") |
| 509 | 509 | } |
| 510 | 510 | |
| 511 | − // Stop chunk: keep as-is. | |
| 512 | − if stopReason { | |
| 511 | + // Terminal chunk: keep as-is. | |
| 512 | + if terminalReason { | |
| 513 | 513 | return rawJSON, false |
| 514 | 514 | } |
| 515 | 515 | |
| @@ -556,7 +556,8 @@ func isStopChunkWithoutUsage(jsonBytes []byte) bool { · 40 unmodified lines | ||
| 556 | 556 | if !finishReason.Exists() { |
| 557 | 557 | finishReason = gjson.GetBytes(jsonBytes, "response.candidates.0.finishReason") |
| 558 | 558 | } |
| 559 | − if !finishReason.Exists() || strings.ToLower(strings.TrimSpace(finishReason.String())) != "stop" { | |
| 559 | + trimmed := strings.TrimSpace(finishReason.String()) | |
| 560 | + if !finishReason.Exists() || trimmed == "" { | |
| 560 | 561 | return false |
| 561 | 562 | } |
| 562 | 563 | return !hasUsageMetadata(jsonBytes) |