fix(cortex_agent): fix SSE response parsing for Cortex Agent API#175
Open
shibinmatrix wants to merge 1 commit intoSnowflake-Labs:mainfrom
Open
fix(cortex_agent): fix SSE response parsing for Cortex Agent API#175shibinmatrix wants to merge 1 commit intoSnowflake-Labs:mainfrom
shibinmatrix wants to merge 1 commit intoSnowflake-Labs:mainfrom
Conversation
Two bugs prevented the cortex_agent tool from returning agent responses: 1. `stream: False` in the request payload caused Snowflake to return a plain JSON response instead of SSE. The `parse_agent_response()` parser expects SSE format with `event: response` markers, so it found no events and returned "No final response found." Removing `stream: False` lets the API default to streaming (SSE), which the parser handles correctly. 2. The SSE parser assumed the text response was the last item in the `content` array (`content[-1]`). In practice, the array contains multiple content types (thinking, tool_use, tool_result, text, suggested_queries) and the last item is `suggested_queries`, not `text`. The fix iterates the content array and finds the item with `type == "text"` explicitly. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
stream: Falsefrom the Cortex Agent request payload. This parameter caused Snowflake to return plain JSON instead of SSE, butparse_agent_response()expects SSE format withevent: responsemarkers. Without streaming, the parser found zero events and always returned"No final response found.".content[-1]assumption inparse_agent_response(). The responsecontentarray contains multiple types (thinking,tool_use,tool_result,text,suggested_queries). The last item issuggested_queries, nottext. The fix iterates the array and explicitly finds the item withtype == "text".Root Cause
The
cortex_agenttool always returned{"results": "No final response found."}due to two compounding bugs:tools.py:79—"stream": Falsewas included with the comment "Ignored by Agent API", but it is not ignored. Snowflake returnsContent-Type: application/json(a single JSON blob) instead oftext/event-stream(SSE). The parser then iterates over JSON lines looking forevent: responseand never finds it.utils.py:312-316— Even when streaming works correctly,content[-1].get("text")grabs the wrong item. Thesuggested_queriescontent type appears aftertextin the array, so the last element has notextfield and falls back to the default"No final response found.".Test plan
event: responseevent: responsedata payload contains acontentarray where thetextitem is NOT the last elementcortex_agentMCP tool now returns actual agent responses