dsh-llm-finish-reason-tolerance: Properly terminating streaming responses missing the finish_reason

# Introduction When connecting OpenAI-compatible models to agents, there is a subtle yet critical compatibility issue: the streaming response from some gateways only pushes content deltas and end markers, without ever sending the `finish_reason` field. DSH's model client, pi-ai, classifies this stream as truncated ("Stream ended without finish_reason"), which the host then maps to a `TRANSPORT` error finish. The result is that while the content of every request is delivered intact, the turn ends in failure. A typical example is the Snowflake Cortex REST gateway (`*.snowflakecomputing.com/api/`)

Read More