Skip to main content

LogFormat

Trait LogFormat 

Source
pub trait LogFormat: Send + Sync {
    // Required methods
    fn name(&self) -> &'static str;
    fn sessions_dir(&self, project: Option<&Path>) -> PathBuf;
    fn list_sessions(&self, project: Option<&Path>) -> Vec<SessionFile>;
    fn detect(&self, path: &Path) -> f64;
    fn parse(&self, path: &Path) -> Result<Session, ParseError>;

    // Provided methods
    fn list_subagent_sessions(
        &self,
        _project: Option<&Path>,
    ) -> Vec<SessionFile> { ... }
    fn metadata_roots(&self, project: Option<&Path>) -> Vec<PathBuf> { ... }
}
Expand description

Trait for session log format plugins.

Required Methods§

Source

fn name(&self) -> &'static str

Format identifier (e.g., “claude”, “codex”, “gemini”, “normalize”).

Source

fn sessions_dir(&self, project: Option<&Path>) -> PathBuf

Get the sessions directory for this format. Does NOT check if the directory exists - that’s handled by list_sessions.

Source

fn list_sessions(&self, project: Option<&Path>) -> Vec<SessionFile>

List all session files for this format.

Source

fn detect(&self, path: &Path) -> f64

Check if this format can parse the given file. Returns a confidence score 0.0-1.0.

Source

fn parse(&self, path: &Path) -> Result<Session, ParseError>

Parse the log file into a unified Session structure.

Provided Methods§

Source

fn list_subagent_sessions(&self, _project: Option<&Path>) -> Vec<SessionFile>

List subagent session files for this format. Default returns empty (only Claude Code supports subagents currently).

Source

fn metadata_roots(&self, project: Option<&Path>) -> Vec<PathBuf>

Returns external directories (outside the project root) that belong to this format’s session metadata for the given project. Used by normalize sync to copy metadata alongside the project.

Default implementation delegates to sessions_dir. Override only if your format stores metadata in multiple locations.

Implementors§