# Package: dirigent_chatgpt Pure-Rust parser for OpenAI's ChatGPT `conversations.json` data export. ## Scope - `parse_export(path)` — reads a `conversations.json` file on disk and returns `Vec`. - `parse_str(json)` — parses an in-memory JSON string (useful for tests and piped inputs). - Types: `ParsedConversation`, `ParsedMessage`, `ContentPart` (`Text`, `Code`, `Tool`). No dirigent-specific types. `dirigent_archivist::import::sources::chatgpt` consumes this crate and maps into the archivist's internal types. ## Example ```rust let convs = dirigent_chatgpt::parse_export(path)?; for c in convs { println!("{}: {} messages", c.title.as_deref().unwrap_or("(untitled)"), c.messages.len()); } ``` ## Failure modes - Truly broken JSON → `ParseError::Json`. - Malformed individual messages are skipped where possible. - Unknown content shapes are preserved as best-effort text in `ContentPart::Text { text: raw_json }` so no user data is silently lost.