Resolve four mypy contract violations with source-level typing fixes
Summary
Fixed the reported mypy errors by tightening type contracts at their source:
editor.py: added explicit Rich style narrowing soText.stylize()always receivesStyleType.web_fetch.py: marked_handle_http_error()asNoReturnbecause it always raises.compaction/types.py: made compaction status constants literal-typed (Final[Literal[...]]) and definedCompactionStatusas a type alias.shell_runner.py: unpackedrender_bash()tool render tuple and returned only the renderable content as required byRenderableType.
No shims, no fallback branches, and no cast-based suppression were introduced.
Files changed
src/tunacode/ui/widgets/editor.pysrc/tunacode/tools/web_fetch.pysrc/tunacode/core/compaction/types.pysrc/tunacode/ui/shell_runner.py
Verification
uv run mypy src/tunacode/ui/widgets/editor.py src/tunacode/tools/web_fetch.py src/tunacode/core/compaction/controller.py src/tunacode/ui/shell_runner.py src/tunacode/core/compaction/types.py✅uv run ruff check src/tunacode/ui/widgets/editor.py src/tunacode/tools/web_fetch.py src/tunacode/core/compaction/types.py src/tunacode/ui/shell_runner.py✅