reconstructContentReplacementState method

ContentReplacementState reconstructContentReplacementState(
  1. List<Message> messages,
  2. List<ContentReplacementRecord> records, {
  3. Map<String, String>? inheritedReplacements,
})

Reconstruct replacement state from content-replacement records.

Implementation

ContentReplacementState reconstructContentReplacementState(
  List<Message> messages,
  List<ContentReplacementRecord> records, {
  Map<String, String>? inheritedReplacements,
}) {
  final state = createContentReplacementState();
  final candidateIds = _collectCandidatesByMessage(
    messages,
  ).expand((g) => g).map((c) => c.toolUseId).toSet();

  for (final id in candidateIds) {
    state.seenIds.add(id);
  }
  for (final r in records) {
    if (r.kind == 'tool-result' && candidateIds.contains(r.toolUseId)) {
      state.replacements[r.toolUseId] = r.replacement;
    }
  }
  if (inheritedReplacements != null) {
    for (final entry in inheritedReplacements.entries) {
      if (candidateIds.contains(entry.key) &&
          !state.replacements.containsKey(entry.key)) {
        state.replacements[entry.key] = entry.value;
      }
    }
  }
  return state;
}