namespace AIStudio.Provider.OpenAI; /// /// The closing line of a streamed Responses API call, which repeats the whole response. /// /// /// Everything the round produced comes back here, reasoning items included, in the same shape a /// non-streamed call would have returned. That is why a streamed tool calling round needs no /// reassembly: this line is the round. /// /// The type of the stream event. /// The response as a non-streamed call would have returned it. public sealed record ResponsesCompletedStreamLine(string Type, ResponsesResponse? Response) { /// /// States what the request of this call carried, as far as it can be believed. /// /// /// The one way from the wire to a usage, shared by the plain text path and the tool calling /// path, so that what counts as believable is decided in a single place. /// /// The usage, or TokenUsage.UNKNOWN when the line states nothing usable. public TokenUsage GetUsage() => this.Response?.GetUsage() ?? TokenUsage.UNKNOWN; }