startProviderResponse function

Future<StreamedResponse> startProviderResponse(
  1. AssistantMessageEventStream eventStream,
  2. ProviderStreamState state,
  3. Client httpClient,
  4. Request request,
  5. CancelToken? cancelToken,
  6. FutureOr<void> onResponse(
    1. int statusCode,
    2. Map<String, String> headers,
    3. Model
    )?,
)

Sends request (via sendProviderRequest), runs the adapter's onResponse hook, and pushes the StartEvent with the initial snapshot.

Shared by the adapters: pi fires start right after the response headers arrive, before the body stream is consumed.

Implementation

Future<http.StreamedResponse> startProviderResponse(
  AssistantMessageEventStream eventStream,
  ProviderStreamState state,
  http.Client httpClient,
  http.Request request,
  CancelToken? cancelToken,
  FutureOr<void> Function(int statusCode, Map<String, String> headers, Model)?
  onResponse,
) async {
  final response = await sendProviderRequest(httpClient, request, cancelToken);
  await onResponse?.call(response.statusCode, response.headers, state.model);
  eventStream.push(StartEvent(partial: state.snapshot()));
  return response;
}