From 36b239085cbbd15b444dab077c6a4295e4373bb7 Mon Sep 17 00:00:00 2001 From: saravmajestic Date: Tue, 26 May 2026 08:19:15 +0000 Subject: [PATCH] feat: [AI-6771] add telemetry for streaming error scenarios Add Telemetry.track({ type: "error", context: "streaming" }) in the non-retry, non-overflow branch of the processor.ts streaming catch block. Covers: - MessageAbortedError (Stop button / dispose) - UnknownError (SSE chunk timeout after retry exhaustion) - APIError (provider failures after retry exhaustion) - AuthError and any other unhandled streaming error Event fields: session_id, error_name, error_message, context --- packages/opencode/src/session/processor.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/packages/opencode/src/session/processor.ts b/packages/opencode/src/session/processor.ts index 98409b1a9..3db946da5 100644 --- a/packages/opencode/src/session/processor.ts +++ b/packages/opencode/src/session/processor.ts @@ -533,6 +533,18 @@ export namespace SessionProcessor { sessionID: input.assistantMessage.sessionID, error: input.assistantMessage.error, }) + // altimate_change start — telemetry for unhandled streaming errors (non-retry, non-overflow) + // Covers: MessageAbortedError (Stop/dispose), UnknownError (SSE chunk timeout), + // APIError (provider failures after retry exhaustion), AuthError, and any other streaming error. + Telemetry.track({ + type: "error", + timestamp: Date.now(), + session_id: input.assistantMessage.sessionID, + error_name: error.name, + error_message: (error.data as any)?.message ?? String((e as any)?.message ?? ""), + context: "streaming", + }) + // altimate_change end // altimate_change start — SessionStatus.set became async; await so idle state flushes before exit await SessionStatus.set(input.sessionID, { type: "idle" }) // altimate_change end