Commit 6aec3fcf32a0

Vincent Demeester <vincent@sbr.pm>
2026-03-31 16:44:29
fix(pi): use raw streaming to bypass SDK JSON parsing
Switched from client.messages.stream() to client.messages.create({ stream: true }) to avoid the SDK's internal _accumulateMessage calling JSON.parse on tool input containing literal control characters (tabs). Our parseStreamingJson() with escapeControlCharsInJsonStrings() already handles this safely.
1 parent 1b55c51
Changed files (1)
dots
pi
agent
extensions
vertex-claude
dots/pi/agent/extensions/vertex-claude/index.ts
@@ -523,7 +523,7 @@ export function streamVertexClaude(
 			}
 
 			// Start streaming
-			const anthropicStream = client.messages.stream({ ...params }, { signal: options?.signal });
+			const anthropicStream = await client.messages.create({ ...params, stream: true }, { signal: options?.signal });
 			stream.push({ type: "start", partial: output });
 
 			type Block = (ThinkingContent | TextContent | (ToolCall & { partialJson: string })) & { index: number };