Ports the non-Compose half of app/.../TranscriptItems.kt (TranscriptItem, foldEvent, runIdFor, settleReply, placePeerNote, splitRun) and ToolRows.kt (TranscriptRow, groupToolRuns) into transcript_fold.rs, with 7 tests covering delta accumulation, settling, tool-run grouping, a ToolEnd with no matching start, and a question attaching to its call's row versus drawing its own. Not ported: TranscriptUnits.kt's flatten of a row into bounded Compose list units (a fact about that UI framework, not the transcript), and joinPages/healSplitMessage/adoptRun (page-boundary healing) -- both recorded in CLIENT_CORE.md as left for whoever picks this up next. Also noted there: event_model::Event has no Unknown catch-all, so an event type this build doesn't recognise fails to parse rather than degrading to a placeholder row, unlike Events.kt's hand-kept mirror. cargo test (85 passed), clippy --all-targets and fmt clean. Co-Authored-By: Claude Sonnet <noreply@anthropic.com>
14 lines
322 B
Rust
14 lines
322 B
Rust
//! The app's pure logic, shared between the server and any Rust client --
|
|
//! see `CLIENT_CORE.md` at the repo root for what lives here and what does
|
|
//! not yet.
|
|
|
|
pub mod ansi;
|
|
pub mod api;
|
|
pub mod event_stream;
|
|
pub mod highlight;
|
|
pub mod sse;
|
|
pub mod transcript_cache;
|
|
pub mod transcript_fold;
|
|
|
|
pub use event_model::*;
|