applyToolResultBudget method

Future<List<Message>> applyToolResultBudget(
  1. List<Message> messages,
  2. ContentReplacementState? state, {
  3. void writeToTranscript(
    1. List<ContentReplacementRecord>
    )?,
  4. Set<String>? skipToolNames,
})

Query-loop integration point for the aggregate budget.

Implementation

Future<List<Message>> applyToolResultBudget(
  List<Message> messages,
  ContentReplacementState? state, {
  void Function(List<ContentReplacementRecord>)? writeToTranscript,
  Set<String>? skipToolNames,
}) async {
  if (state == null) return messages;
  final result = await enforceToolResultBudget(
    messages,
    state,
    skipToolNames: skipToolNames ?? const {},
  );
  if (result.newlyReplaced.isNotEmpty) {
    writeToTranscript?.call(result.newlyReplaced);
  }
  return result.messages;
}