didCompleteClientTurn method

void didCompleteClientTurn(
  1. Response response
)

Implementation

void didCompleteClientTurn(Response response) {
  if (store == true) {
    previousResponseId = response.id;
    this.input = ResponseInputItems([..._pendingOutputs.values.whereType<ResponseItem>()]);
  } else {
    if (input is ResponseInputItems) {
      this.input = ResponseInputItems([
        ...(input as ResponseInputItems).items,
        if (response.output != null)
          ...response.output!.where(
            (element) => element is! Reasoning,
          ),
        ..._pendingOutputs.values.whereType<ResponseItem>()
      ]);
    } else if (input is ResponseInputText) {
      final text = input as ResponseInputText;
      this.input = ResponseInputItems([
        InputText(role: "user", text: text.text),
        if (response.output != null)
          ...response.output!.where(
            (element) => element is! Reasoning,
          ),
        ..._pendingOutputs.values.whereType<ResponseItem>()
      ]);
    } else {
      throw ArgumentError("There was no input or input was unexpected");
    }
  }

  _pendingOutputs.clear();
}