MCPcopy Create free account
hub / github.com/experdot/pointer / processStreamResponse

Method processStreamResponse

src/main/aiHandler.ts:246–277  ·  view source on GitHub ↗

* 处理流式响应

(
    reader: ReadableStreamDefaultReader<Uint8Array>,
    parser: ReturnType<typeof createParser>,
    event: Electron.IpcMainInvokeEvent,
    eventChannel: string,
    fullResponse: { value: string },
    fullReasoning: { value: string }
  )

Source from the content-addressed store, hash-verified

244 * 处理流式响应
245 */
246 private async processStreamResponse(
247 reader: ReadableStreamDefaultReader<Uint8Array>,
248 parser: ReturnType<typeof createParser>,
249 event: Electron.IpcMainInvokeEvent,
250 eventChannel: string,
251 fullResponse: { value: string },
252 fullReasoning: { value: string }
253 ): Promise<void> {
254 const decoder = new TextDecoder()
255
256 try {
257 while (true) {
258 const { done, value } = await reader.read()
259 if (done) break
260
261 const chunk = decoder.decode(value, { stream: true })
262 parser.feed(chunk)
263 }
264
265 this.sendComplete(event, eventChannel, fullResponse.value, fullReasoning.value)
266 } catch (error) {
267 if (error instanceof Error && error.name === 'AbortError') {
268 this.sendComplete(event, eventChannel, fullResponse.value, fullReasoning.value)
269 } else {
270 this.sendError(
271 event,
272 eventChannel,
273 error instanceof Error ? error.message : 'Unknown error'
274 )
275 }
276 }
277 }
278
279 public async sendMessageStreaming(
280 event: Electron.IpcMainInvokeEvent,

Callers 1

sendMessageStreamingMethod · 0.95

Calls 2

sendCompleteMethod · 0.95
sendErrorMethod · 0.95

Tested by

no test coverage detected