diff --git a/aider_gitea/__init__.py b/aider_gitea/__init__.py index 8fd49ec..cd20be4 100644 --- a/aider_gitea/__init__.py +++ b/aider_gitea/__init__.py @@ -1,15 +1,19 @@ """Aider Gitea. -A code automation tool that integrates Gitea with Aider to automatically solve issues. +A code automation tool that integrates Gitea with AI assistants to automatically solve issues. This program monitors your [Gitea](https://about.gitea.com/) repository for issues with the 'aider' label. When such an issue is found, it: 1. Creates a new branch. -2. Invokes [Aider](https://aider.chat/) to solve the issue using a Large-Language Model. +2. Invokes an AI assistant (Aider or Claude Code) to solve the issue using a Large-Language Model. 3. Runs tests and code quality checks. 4. Creates a pull request with the solution. +The tool automatically selects the appropriate AI assistant based on the specified model: +- **Aider**: Used for non-Anthropic models (e.g., GPT, Ollama, Gemini) +- **Claude Code**: Used for Anthropic models (e.g., Claude, Sonnet, Haiku, Opus) + Inspired by [the AI workflows](https://github.com/oscoreio/ai-workflows/) project. @@ -25,48 +29,109 @@ have the following permissions: ### Command Line ```bash -# Run with default settings -python -m aider_gitea +# Run with default settings (uses Aider) +python -m aider_gitea --aider-model gpt-4 + +# Use Claude Code with Anthropic models +python -m aider_gitea --aider-model claude-3-sonnet +python -m aider_gitea --aider-model claude-3-haiku +python -m aider_gitea --aider-model anthropic/claude-3-opus + +# Use Aider with various models +python -m aider_gitea --aider-model gpt-4 +python -m aider_gitea --aider-model ollama/llama3 +python -m aider_gitea --aider-model gemini-pro # Specify custom repository and owner -python -m aider_gitea --owner myorg --repo myproject +python -m aider_gitea --owner myorg --repo myproject --aider-model claude-3-sonnet # Use a custom Gitea URL -python -m aider_gitea --gitea-url https://gitea.example.com +python -m aider_gitea --gitea-url https://gitea.example.com --aider-model gpt-4 # Specify a different base branch -python -m aider_gitea --base-branch develop +python -m aider_gitea --base-branch develop --aider-model claude-3-haiku ``` +### AI Assistant Selection + +The tool automatically routes to the appropriate AI assistant based on the model name: + +**Claude Code Integration (Anthropic Models):** +- Model names containing: `claude`, `anthropic`, `sonnet`, `haiku`, `opus` +- Examples: `claude-3-sonnet`, `claude-3-haiku`, `anthropic/claude-3-opus` +- Requires: `ANTHROPIC_API_KEY` environment variable + +**Aider Integration (All Other Models):** +- Any model not matching Anthropic patterns +- Examples: `gpt-4`, `ollama/llama3`, `gemini-pro`, `mistral-7b` +- Requires: `LLM_API_KEY` environment variable + ### Python API ```python -from aider_gitea import solve_issue_in_repository +from aider_gitea import solve_issue_in_repository, create_code_solver from pathlib import Path +import argparse -# Solve an issue programmatically -args = argparse.Namespace( +# Solve an issue programmatically with automatic AI assistant selection +repository_config = RepositoryConfig( gitea_url="https://gitea.example.com", owner="myorg", repo="myproject", base_branch="main" ) +# Set the model to control which AI assistant is used +import aider_gitea +aider_gitea.CODE_MODEL = "claude-3-sonnet" # Will use Claude Code +# aider_gitea.CODE_MODEL = "gpt-4" # Will use Aider + +code_solver = create_code_solver() # Automatically selects based on model + solve_issue_in_repository( - args, + repository_config, Path("/path/to/repo"), "issue-123-fix-bug", "Fix critical bug", "The application crashes when processing large files", - "123" + "123", + gitea_client, + code_solver ) ``` ### Environment Configuration The tool uses environment variables for sensitive information: + +**Required for all setups:** - `GITEA_TOKEN`: Your Gitea API token -- `LLM_API_KEY`: API key for the language model used by Aider + +**For Aider (non-Anthropic models):** +- `LLM_API_KEY`: API key for the language model (OpenAI, Ollama, etc.) + +**For Claude Code (Anthropic models):** +- `ANTHROPIC_API_KEY`: Your Anthropic API key for Claude models + +### Model Examples + +**Anthropic Models (→ Claude Code):** +```bash +--aider-model claude-3-sonnet +--aider-model claude-3-haiku +--aider-model claude-3-opus +--aider-model anthropic/claude-3-sonnet +``` + +**Non-Anthropic Models (→ Aider):** +```bash +--aider-model gpt-4 +--aider-model gpt-3.5-turbo +--aider-model ollama/llama3 +--aider-model ollama/codellama +--aider-model gemini-pro +--aider-model mistral-7b +``` ``` """