1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
//! Typed conversion for coding-agent session transcripts.
//!
//! Claude Code, Codex, `OpenCode`, pi, Campfire, Cursor, and Grok record
//! similar conversation data in different on-disk formats. This crate maps
//! each format through [`Transcript<Common>`] and converts with
//! [`convert::<A, B>`](convert): `A` -> [`Common`] -> `B`.
//!
//! # Fidelity
//!
//! Stores preserve native disk shape. [`Common`] preserves resumable
//! conversation semantics, not byte identity.
//!
//! # Shape
//!
//! - [`common`] — the canonical model ([`common::Message`], [`common::Block`],
//! [`common::Tool`], …).
//! - [`Transcript`], [`Harness`], [`Codec`], [`Store`] — the generic type and
//! the traits over it.
//! - [`harness`] — one module per implemented harness.
// The core generic API lives in the private `transcript` module, so the crate
// root is its canonical home. The concrete model and per-harness types keep
// their own module homes — reach them through [`common`] and [`harness`]
// rather than flattened at the root.
pub use ;
pub use ;