Files
keep/PLAN.md
Andrew Phillips 2435c8bebf docs: update code optimization plan with completion status
Co-authored-by: aider (openai/andrew/openrouter/deepseek/deepseek-chat-v3.1) <aider@aider.chat>
2025-08-27 21:49:01 -03:00

2.3 KiB

Code Optimization Plan - Status Update

This document outlines optimizations to reduce boilerplate code and improve maintainability through the use of derive macros and utility crates.

1. Add Utility Crates to Cargo.toml - COMPLETED

Files affected:

  • Cargo.toml - thiserror and derive_more are already present

2. Replace Manual Debug Implementations with Derives - MOSTLY COMPLETED

Files affected:

  • Most structs now use #[derive(Debug)] instead of manual implementations
  • Remaining manual implementations appear intentional for specific formatting

3. Replace Manual Default Implementations with Derives - PARTIALLY COMPLETED

Files affected:

  • Many plugins use #[derive(Default)] or #[derive(SmartDefault)]
  • Some still have manual implementations that could potentially be simplified

4. Use thiserror for Error Types - PARTIALLY COMPLETED

Files affected:

  • src/services/error.rs - CoreError enum uses thiserror
  • src/modes/server/mcp/tools.rs - ToolError enum could be updated

🔄 5. Use derive_more for Common Trait Implementations - PENDING

Files affected:

  • Wrapper types throughout the codebase could benefit from derive_more
  • This would further reduce boilerplate code

6. Enhance Serde Usage - MOSTLY COMPLETED

Files affected:

  • Most response and configuration types use #[derive(Serialize, Deserialize)]
  • Field naming appears consistent

7. Improve Strum Usage for Enums - COMPLETED

Files affected:

  • src/compression_engine.rs - CompressionType uses strum
  • src/meta_plugin/mod.rs - MetaPluginType uses strum

🔄 8. Code Organization Improvements - ONGOING

Files affected:

  • All source files could benefit from consistent derive ordering and import organization

Implementation Status

  1. High Priority: Crates are already in Cargo.toml
  2. Medium Priority: Error handling mostly uses thiserror
  3. Medium Priority: Debug and Default derives mostly implemented
  4. 🔄 Low Priority: derive_more usage could be expanded

Remaining Opportunities

  • Apply #[derive(thiserror::Error)] to ToolError in src/modes/server/mcp/tools.rs
  • Use derive_more for wrapper types to reduce boilerplate
  • Ensure consistent import ordering across all files
  • Standardize derive attribute ordering