(streamId: string)
| 279 | * controller" in dashboards. |
| 280 | */ |
| 281 | export async function abortActiveStream(streamId: string): Promise<boolean> { |
| 282 | return withCopilotSpan( |
| 283 | TraceSpan.CopilotChatAbortActiveStream, |
| 284 | { [TraceAttr.StreamId]: streamId }, |
| 285 | async (span) => { |
| 286 | await writeAbortMarker(streamId) |
| 287 | span.setAttribute(TraceAttr.CopilotAbortMarkerWritten, true) |
| 288 | const controller = activeStreams.get(streamId) |
| 289 | if (!controller) { |
| 290 | span.setAttribute(TraceAttr.CopilotAbortControllerFired, false) |
| 291 | return false |
| 292 | } |
| 293 | controller.abort(AbortReason.UserStop) |
| 294 | activeStreams.delete(streamId) |
| 295 | span.setAttribute(TraceAttr.CopilotAbortControllerFired, true) |
| 296 | return true |
| 297 | } |
| 298 | ) |
| 299 | } |
| 300 | |
| 301 | export type { AbortReasonValue } from './abort-reason' |
| 302 | /** |
no test coverage detected