Skip to content

Commit 437028e

Browse files
committed
feat: enhance response event handling with event types and improved parsing
1 parent 552fcf1 commit 437028e

File tree

5 files changed

+275
-351
lines changed

5 files changed

+275
-351
lines changed

src/routes/messages/handler.ts

Lines changed: 5 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import {
2323
import {
2424
createResponses,
2525
type ResponsesResult,
26+
type ResponseStreamEvent,
2627
} from "~/services/copilot/create-responses"
2728

2829
import {
@@ -150,16 +151,10 @@ const handleWithResponsesApi = async (
150151
continue
151152
}
152153

153-
if (data === "[DONE]") {
154-
break
155-
}
156-
157-
const parsed = safeJsonParse(data)
158-
if (!parsed) {
159-
continue
160-
}
161-
162-
const events = translateResponsesStreamEvent(parsed, streamState)
154+
const events = translateResponsesStreamEvent(
155+
JSON.parse(data) as ResponseStreamEvent,
156+
streamState,
157+
)
163158
for (const event of events) {
164159
consola.debug("Translated Anthropic event:", JSON.stringify(event))
165160
await stream.writeSSE({
@@ -210,12 +205,3 @@ const isNonStreaming = (
210205
const isAsyncIterable = <T>(value: unknown): value is AsyncIterable<T> =>
211206
Boolean(value)
212207
&& typeof (value as AsyncIterable<T>)[Symbol.asyncIterator] === "function"
213-
214-
const safeJsonParse = (value: string): Record<string, unknown> | undefined => {
215-
try {
216-
return JSON.parse(value) as Record<string, unknown>
217-
} catch (error) {
218-
consola.warn("Failed to parse Responses stream chunk:", value, error)
219-
return undefined
220-
}
221-
}

0 commit comments

Comments
 (0)