Split think/outputs.py into markdown.py and hooks.py
Separate the two distinct concerns that were combined in outputs.py:
- think/markdown.py: Semantic markdown chunking utilities (AST parsing,
chunking by headers/lists/tables, rendering back to markdown)
- think/hooks.py: Shared utilities for output extraction hooks
(should_skip_extraction, write_events_jsonl, compute_output_source)
Updates imports in:
- think/formatters.py (registry + inline import)
- muse/anticipation.py, muse/occurrence.py (hook utilities)
- tests/test_formatters.py (7 test imports)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>