Clover/plan.md
2026-01-13 00:16:00 -06:00

13 KiB

Clover CLI Implementation Plan

Overview

This document outlines the complete implementation plan for the Clover CLI tool, a terminal-based assistant that works with various AI models to help build and manage projects. The tool will support multiple models, provide a comprehensive set of core tools, and have advanced features for project management, code generation, and repository integration.

Project Structure

clover/
├── main.py                 # Main entry point
├── cli/                    # CLI module
│   ├── __init__.py
│   ├── commands.py         # Command implementations
│   └── parser.py           # CLI argument parsing
├── tools/                  # Core tool implementations
│   ├── __init__.py
│   ├── file_tools.py       # File operations (read, create, update, delete)
│   ├── project_tools.py    # Project operations (summarize, structure)
│   ├── commandline_tool.py # Command line execution tool
│   ├── git_tools.py        # Git operations (status, diff, commit, push)
│   ├── lint_format_tools.py # Linting and formatting tools
│   ├── test_generation.py  # Test generation tools
│   ├── docstring_tools.py  # Docstring generation tools
│   ├── dependency_tools.py # Dependency management tools
│   ├── security_tools.py   # Security scanning tools
│   ├── model_orchestration.py # Multi-model orchestration
│   ├── incremental_summary.py # Incremental project summarization
│   ├── sandbox_execution.py # Sandbox execution tools
│   ├── cost_tracking.py    # Cost reporting mechanism
│   ├── profiling_tools.py  # Performance profiling tools
│   ├── workflow_tools.py   # Workflow and issue tracking tools
│   ├── language_detection.py # Language detection for tool selection
│   └── ide_integration.py  # IDE integration support
├── models/                 # Model interaction modules
│   ├── __init__.py
│   ├── model_manager.py    # Manage available models
│   └── api_client.py       # API client for different LLM providers
├── config/                 # Configuration management
│   ├── __init__.py
│   └── settings.py         # Settings and configuration handling
├── utils/                  # Utility functions
│   ├── __init__.py
│   └── helpers.py          # Helper functions and utilities
├── .agent                  # Agent summary file (to be maintained)
├── .structure              # Project structure diagram (to be maintained)
├── summary.md              # Summary of actions taken so far (to be maintained)
└── requirements.txt        # Dependencies

Core Tools Implementation

1. File Operations Tools

  • read_file: Read content from a file and return its contents
  • create_file: Create a new file with specified content
  • update_file: Modify an existing file's content at specific lines or patterns
  • delete_file: Remove a file from the project
  • list_files: List all files in directory structure

2. Project Summary Tools

  • summarize_file: Use another LLM to generate a summary of a specific file
  • get_project_structure: Look for structure.md or generate it using LLM
  • aggregate_summaries: Collect summaries from all files and create a combined project summary
  • incremental_summarization: Re-summarize only changed files to save tokens and time

3. Command Line Tool

  • commandline: Execute system commands with user permission
  • safe_execute: Handle command execution safely with error handling and permissions

4. Git Integration Tools

  • git_status: Query repository status and return changes
  • git_diff: Generate JSON diff of changes for staged files
  • git_commit: Commit changes with auto-generated commit message
  • git_push: Push committed changes to remote repository
  • git_log: Show commit history with structured output

5. Linting & Formatting Tools

  • lint_code: Run linter (flake8, ESLint) on specified file(s)
  • format_code: Run formatter (black, isort, prettier) on specified files
  • lint_format_report: Return structured results of lint/format operations

6. Test Generation Tools

  • generate_tests: Create unit tests for a file or module using LLM
  • test_coverage: Analyze test coverage for given files

7. Documentation Tools

  • generate_docstring: Auto-generate docstrings for functions/classes/modules
  • update_docstrings: Update existing docstrings with current function purposes

8. Dependency Management Tools

  • scan_dependencies: Parse requirements.txt, pyproject.toml, package.json etc.
  • add_dependency: Add a package to project dependencies
  • remove_dependency: Remove a package from project dependencies
  • dependency_report: Generate structured dependency analysis

9. Security Tools

  • security_scan: Run security audit (bandit) on project
  • vulnerability_report: Return structured security findings

10. Multi-model Orchestration

  • model_selector: Choose best LLM for specific sub-task based on cost/speed
  • task_orchestrator: Schedule tools to appropriate model providers
  • cost_optimizer: Track and optimize API costs across operations

11. Sandbox Execution Tools

  • sandbox_run: Execute code in isolated container environment
  • container_manager: Manage temporary containers for safe execution

12. Performance Analysis Tools

  • profile_execution: Time how long a command or LLM request takes
  • cost_report: Estimate token usage and API costs
  • performance_log: Log execution timing for optimization

13. Workflow Management

  • create_issue: Create GitHub/GitLab issue from model input
  • update_issue: Update existing issue status
  • close_issue: Close resolved issues
  • task_board: Maintain task board with status tracking

14. Language Detection

  • detect_language: Identify language of a file for tool selection
  • language_aware_tools: Apply appropriate tools based on detected language

15. IDE Integration

  • ide_buffer_sync: Send current buffer content to Clover assistant
  • vscode_ext: Provide VSCode extension capabilities
  • neovim_integration: Support Neovim integration

Key Features Implementation

1. /list - List Available Models

  • Query the OpenAI-compatible server for available models
  • Display model information in a readable format

2. /init - Initialize Project Summary

  • Create a "clover.md" file in project root
  • Generate initial project summary using LLM
  • Update this file as the project progresses

3. /timeout - Set Timeout Duration

  • Configure maximum time allowed for agent to work on a problem
  • Store timeout value in configuration

4. /threads - Set Thread Limit

  • Configure maximum threads used for concurrent LLM operations
  • Manage thread pool for sub-processes like file summaries and command line calls

Advanced Features Implementation

Git Repository Management

  1. Git Operations Tools:

    • Git status: Query repository state for changes
    • Git diff: Generate structured diffs for staging
    • Git commit: Commit with auto-generating messages
    • Git push: Push changes to remote repository
  2. Repository Sync Feature:

    • Single step commit-and-push workflow
    • Automatic JSON diff generation and commit message
    • Safe repository management with model interaction

Code Quality Tools

  1. Linting & Formatting Suite:

    • Lint code with flake8, ESLint etc.
    • Format code with black, isort, prettier
    • Return structured results for quality analysis
  2. Testing Framework:

    • Generate unit tests from file/module content
    • Bootstrap test coverage quickly
    • Test generation with confidence-building approach

Documentation Generation

  1. Docstring Tools:
    • Auto-generate docstrings
    • Update existing docstrings with model understanding
    • Improve code readability and typing

Dependency Management

  1. Dependency Operations:
    • Scan project dependencies automatically
    • Add/remove packages via pip/poetry/npm
    • Generate dependency reports with conflicts detection

Security Features

  1. Security Scanning:
    • Run security audits (bandit)
    • Flag potential vulnerabilities early
    • Return structured vulnerability reports

Performance Optimization

  1. Cost Tracking:

    • Estimate token usage and API costs
    • Multi-step task cost calculation
    • Budget monitoring capabilities
  2. Profile Execution:

    • Time command or LLM request duration
    • Log performance metrics for tuning
    • Decorator-based timing tools

Multi-model Orchestration

  1. Model Selection:
    • Choose best model for sub-task (cost/speed optimization)
    • Scheduler for mapping tools to appropriate providers
    • Cost optimization across multiple operations

Implementation Details

Model Integration

  1. Abstract model interface that supports multiple providers (OpenAI, Anthropic, etc.)
  2. Model manager to handle switching between different models
  3. API client that handles authentication and requests
  4. Multi-model orchestration capability for optimal performance/cost

Configuration Management

  • Environment variables for configuration as specified in guidelines
  • Settings file for persistent configuration storage
  • Default fallback values for all settings
  • Integration with containerized deployment via environment variables

Thread Management

  • Semaphore-based system for controlling concurrent LLM operations
  • Thread pool implementation for managing sub-processes like file summaries and command line calls
  • Safety limits to prevent resource exhaustion

Security Considerations

  • Permission prompts for command line execution
  • Input validation for all user inputs
  • Safe file paths to prevent directory traversal attacks
  • Sandboxed execution for untrusted code snippets

Dependencies to Install in Virtual Environment

openai                 # For OpenAI API integration
requests               # For HTTP requests
python-dotenv          # For environment variable management  
tqdm                   # For progress bars
GitPython              # For Git operations  
pylint                 # For linting quality checks
black                  # For Python code formatting
isort                  # For import sorting
bandit                 # For security scanning
docker                 # For sandbox execution (if using Docker)
pydantic               # For data validation

Development Approach

Phase 1: Core Infrastructure

  1. Start with basic CLI structure and command parsing
  2. Implement core file tools (CRUD operations)
  3. Add command line tool with permission prompts

Phase 2: Model Integration

  1. Add model interaction capabilities
  2. Implement configuration management system
  3. Add thread safety and timeout features

Phase 3: Advanced Features

  1. Implement Git integration tools for repository management
  2. Add linting, formatting, and test generation tools
  3. Include documentation and dependency management tools
  4. Integrate security scanning capabilities

Phase 4: Performance & Orchestration

  1. Add sandbox execution and profiling tools
  2. Implement multi-model orchestration system
  3. Finalize all tool integrations and testing

Testing Strategy

Unit Tests for Tools

  • Test individual file operations
  • Validate Git command execution with mock repositories
  • Ensure linter/formatter tools work correctly
  • Test security scanning capabilities

Integration Tests

  • End-to-end CLI operation testing
  • Multi-tool workflow testing (e.g., create file → lint → commit)
  • Configuration management validation
  • Security tests for execution environment

Version Control Considerations

File Management During Development

  • Maintain .agent, .structure, and summary.md files during development
  • Follow Git workflow for tracking changes through phases
  • Keep requirements.txt updated with dependencies

Documentation Updates

  • Regularly update README.md during implementation
  • Keep plan.md current with completed work
  • Document new tools and features as they're developed

Virtual Environment Setup Plan

  1. Create virtual environment:

    python -m venv clover_env
    
  2. Activate environment:

    source clover_env/bin/activate  # On macOS/Linux
    # or  
    clover_env\Scripts\activate     # On Windows
    
  3. Install dependencies:

    pip install openai requests python-dotenv tqdm GitPython pylint black isort bandit docker pydantic
    
  4. Initialize the project structure and continue development

Command Line Interface Design

The CLI should support commands like:

  • clover /list - List available models
  • clover /init - Initialize project
  • clover /timeout 300 - Set timeout to 300 seconds
  • clover /threads 5 - Set thread limit to 5
  • clover /git_status - Query git repository status
  • clover /lint_file main.py - Lint a specific file
  • clover "Write a Python function to calculate factorial" - Send prompt to AI assistant

Each command will be implemented in the commands.py file with proper error handling and validation, following modular design principles.