Epic: #1977
MessagePart is #[derive(Serialize, Deserialize)] but contains internal variants:
ThinkingBlock, RedactedThinkingBlock, Compaction — these are Claude-specific artifacts.
Options:
- Add #[serde(skip)] to internal variants
- Split into PublicMessagePart and InternalMessagePart
Location: crates/zeph-llm/src/provider.rs
Acceptance Criteria:
Complexity: Medium | Effort: 2h
Ref: ABS-05