History

fix(runtime): treat non-empty finishReason as terminal

hkfires committed 11 months ago

Commit d32bb9d1 parent 8356b351 file · +6 −5Browse files

Unified · Split

internal/runtime/executor/usage_helpers.go+6−5
@@ -486,7 +486,7 @@ func FilterSSEUsageMetadata(payload []byte) []byte { · 485 unmodified lines
486486 return bytes.Join(lines, []byte("\n"))
487487 }
488488
489−// StripUsageMetadataFromJSON drops usageMetadata unless finishReason is "stop".
489+// StripUsageMetadataFromJSON drops usageMetadata unless finishReason is present (terminal).
490490 // It handles both formats:
491491 // - Aistudio: candidates.0.finishReason
492492 // - Antigravity: response.candidates.0.finishReason
@@ -501,15 +501,15 @@ func StripUsageMetadataFromJSON(rawJSON []byte) ([]byte, bool) { · 8 unmodified lines
501501 if !finishReason.Exists() {
502502 finishReason = gjson.GetBytes(jsonBytes, "response.candidates.0.finishReason")
503503 }
504− stopReason := finishReason.Exists() && strings.ToLower(strings.TrimSpace(finishReason.String())) == "stop"
504+ terminalReason := finishReason.Exists() && strings.TrimSpace(finishReason.String()) != ""
505505
506506 usageMetadata := gjson.GetBytes(jsonBytes, "usageMetadata")
507507 if !usageMetadata.Exists() {
508508 usageMetadata = gjson.GetBytes(jsonBytes, "response.usageMetadata")
509509 }
510510
511− // Stop chunk: keep as-is.
512− if stopReason {
511+ // Terminal chunk: keep as-is.
512+ if terminalReason {
513513 return rawJSON, false
514514 }
515515
@@ -556,7 +556,8 @@ func isStopChunkWithoutUsage(jsonBytes []byte) bool { · 40 unmodified lines
556556 if !finishReason.Exists() {
557557 finishReason = gjson.GetBytes(jsonBytes, "response.candidates.0.finishReason")
558558 }
559− if !finishReason.Exists() || strings.ToLower(strings.TrimSpace(finishReason.String())) != "stop" {
559+ trimmed := strings.TrimSpace(finishReason.String())
560+ if !finishReason.Exists() || trimmed == "" {
560561 return false
561562 }
562563 return !hasUsageMetadata(jsonBytes)