diff --git a/codeagent-wrapper/main_test.go b/codeagent-wrapper/main_test.go index 5774068..d80801f 100644 --- a/codeagent-wrapper/main_test.go +++ b/codeagent-wrapper/main_test.go @@ -2096,6 +2096,16 @@ func TestBackendParseJSONStream_GeminiEvents(t *testing.T) { } } +func TestBackendParseJSONStream_GeminiInitEventSessionID(t *testing.T) { + input := `{"type":"init","session_id":"gemini-abc123"}` + + _, threadID := parseJSONStream(strings.NewReader(input)) + + if threadID != "gemini-abc123" { + t.Fatalf("threadID=%q, want %q", threadID, "gemini-abc123") + } +} + func TestBackendParseJSONStream_GeminiEvents_DeltaFalseStillDetected(t *testing.T) { input := `{"type":"init","session_id":"xyz789"} {"type":"message","content":"Hi","delta":false,"session_id":"xyz789"} diff --git a/codeagent-wrapper/parser.go b/codeagent-wrapper/parser.go index 165b0b2..60b2142 100644 --- a/codeagent-wrapper/parser.go +++ b/codeagent-wrapper/parser.go @@ -171,7 +171,7 @@ func parseJSONStreamInternal(r io.Reader, warnFn func(string), infoFn func(strin if !isClaude && event.Type == "result" && event.SessionID != "" && event.Status == "" { isClaude = true } - isGemini := event.Role != "" || event.Delta != nil || event.Status != "" + isGemini := (event.Type == "init" && event.SessionID != "") || event.Role != "" || event.Delta != nil || event.Status != "" // Handle Codex events if isCodex {