use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "lowercase")]
pub enum ContentType {
Code,
Documents,
Logs,
Conversation,
Mixed,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Chunk {
pub content: String,
#[serde(rename = "type")]
pub chunk_type: ChunkType,
pub start_line: usize,
pub end_line: usize,
pub tokens: usize,
pub priority: u8,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum ChunkType {
Code,
Text,
ToolOutput,
Conversation,
}
#[derive(Debug, Clone)]
pub struct ChunkOptions {
pub max_chunk_tokens: usize,
pub preserve_recent: usize,
}
impl Default for ChunkOptions {
fn default() -> Self {
Self {
max_chunk_tokens: 4000,
preserve_recent: 100,
}
}
}