Skip to main content

agentic_memory/format/
compression.rs

1//! LZ4 content compression/decompression.
2
3use crate::types::error::{AmemError, AmemResult};
4
5/// Compress UTF-8 content bytes with LZ4 (prepend size for decompression).
6pub fn compress_content(content: &str) -> AmemResult<Vec<u8>> {
7    Ok(lz4_flex::compress_prepend_size(content.as_bytes()))
8}
9
10/// Decompress LZ4-compressed content bytes back to a UTF-8 string.
11pub fn decompress_content(data: &[u8]) -> AmemResult<String> {
12    let bytes = lz4_flex::decompress_size_prepended(data)
13        .map_err(|e| AmemError::Compression(e.to_string()))?;
14    String::from_utf8(bytes).map_err(|e| AmemError::Compression(e.to_string()))
15}