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

Method sendMessageStreaming

src/main/aiHandler.ts:279–335  ·  view source on GitHub ↗
(
    event: Electron.IpcMainInvokeEvent,
    request: AIRequest,
    eventChannel: string
  )

Source from the content-addressed store, hash-verified

277 }
278
279 public async sendMessageStreaming(
280 event: Electron.IpcMainInvokeEvent,
281 request: AIRequest,
282 eventChannel: string
283 ): Promise<void> {
284 const abortController = new AbortController()
285 this.abortControllers.set(request.requestId, abortController)
286
287 try {
288 const modelConfig = this.getModelConfig(request.modelConfig)
289 const apiMessages = await this.prepareApiMessages(request.messages, modelConfig)
290
291 const response = await this.fetchStreamingResponse(
292 request,
293 apiMessages,
294 modelConfig,
295 abortController
296 )
297
298 if (!response.ok) {
299 this.sendError(event, eventChannel, `HTTP error! status: ${response.status}`)
300 return
301 }
302
303 const reader = response.body?.getReader()
304 if (!reader) {
305 this.sendError(event, eventChannel, 'No response body reader available')
306 return
307 }
308
309 const fullResponse = { value: '' }
310 const fullReasoning = { value: '' }
311
312 const parser = this.createStreamParser(event, eventChannel, fullResponse, fullReasoning)
313
314 await this.processStreamResponse(
315 reader,
316 parser,
317 event,
318 eventChannel,
319 fullResponse,
320 fullReasoning
321 )
322 } catch (error) {
323 if (error instanceof Error && error.name === 'AbortError') {
324 this.sendComplete(event, eventChannel, '', undefined)
325 } else {
326 this.sendError(
327 event,
328 eventChannel,
329 error instanceof Error ? error.message : 'Unknown error'
330 )
331 }
332 } finally {
333 this.abortControllers.delete(request.requestId)
334 }
335 }
336

Callers 2

sendMessageMethod · 0.80
setupAIHandlersFunction · 0.80

Calls 7

getModelConfigMethod · 0.95
prepareApiMessagesMethod · 0.95
sendErrorMethod · 0.95
createStreamParserMethod · 0.95
processStreamResponseMethod · 0.95
sendCompleteMethod · 0.95

Tested by

no test coverage detected