from langflow.utils import constants def truncate_long_strings(data, max_length=None): """Recursively traverse the dictionary or list and truncate strings longer than max_length.""" if max_length is None: max_length = constants.MAX_TEXT_LENGTH if max_length < 0: return data if not isinstance(data, dict | list): if isinstance(data, str) and len(data) > max_length: return data[:max_length] + "..." return data if isinstance(data, dict): for key, value in data.items(): if isinstance(value, str) and len(value) > max_length: data[key] = value[:max_length] + "..." elif isinstance(value, (dict | list)): truncate_long_strings(value, max_length) elif isinstance(data, list): for index, item in enumerate(data): if isinstance(item, str) and len(item) > max_length: data[index] = item[:max_length] + "..." elif isinstance(item, (dict | list)): truncate_long_strings(item, max_length) return data