Metadata-Version: 2.4
Name: autogit-ai
Version: 0.1.0
Summary: CLI que analiza tu repositorio Git y genera commits profesionales con IA (Conventional Commits).
Project-URL: Homepage, https://github.com/OptimScul/autogit-ai
Project-URL: Repository, https://github.com/OptimScul/autogit-ai
Project-URL: Issues, https://github.com/OptimScul/autogit-ai/issues
Author: OptimScul
License: MIT
License-File: LICENSE
Keywords: ai,cli,commit,conventional-commits,devtools,git
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Software Development :: Version Control :: Git
Requires-Python: >=3.10
Requires-Dist: click>=8.1
Requires-Dist: httpx>=0.27
Requires-Dist: pydantic>=2.7
Requires-Dist: rich>=13.0
Requires-Dist: tomli>=2.0.1; python_version < '3.11'
Requires-Dist: typer>=0.12
Provides-Extra: dev
Requires-Dist: mypy>=1.11; extra == 'dev'
Requires-Dist: pytest-cov>=5.0; extra == 'dev'
Requires-Dist: pytest>=8.0; extra == 'dev'
Requires-Dist: ruff>=0.6; extra == 'dev'
Description-Content-Type: text/markdown

# AutoGit AI

**AutoGit AI** analiza automáticamente los cambios de tu repositorio Git, los
agrupa de forma inteligente y usa IA para generar mensajes de commit
profesionales siguiendo **Conventional Commits**.

```bash
autogit commit   # o el alias corto: ag commit
```

> ⚠️ Proyecto en desarrollo temprano (Alpha). La API y los comandos pueden cambiar.

## Características

- Detecta el repositorio Git actual y lee su estado (añadidos, modificados,
  eliminados, renombrados y sin seguimiento).
- Construye el contexto (diffs y estadísticas por archivo) y lo envía a la IA.
- Genera el mensaje, muestra una vista previa y te deja **confirmar, editar o
  cancelar**.
- Configuración flexible por capas y varios proveedores de IA intercambiables.

## Instalación

Requisitos: [uv](https://docs.astral.sh/uv/) y Git.

```bash
git clone https://github.com/OptimScul/autogit-ai.git
cd autogit-ai
uv sync --extra dev
uv run autogit version
```

Una vez publicado en PyPI podrás instalarlo con `pip install autogit-ai`.

## Uso rápido

```bash
autogit status     # ver los cambios del repositorio
autogit analyze    # analizar y previsualizar el mensaje sin commitear
autogit commit     # generar el commit con IA (menú Sí / Editar / Cancelar)
autogit commit -p  # además hacer push tras el commit
```

## Comandos

| Comando           | Descripción                                             |
| ----------------- | ------------------------------------------------------- |
| `autogit commit`  | Analiza los cambios y genera el commit con IA           |
| `autogit status`  | Estado del repositorio en formato enriquecido           |
| `autogit analyze` | Analiza y previsualiza el mensaje sin hacer commit      |
| `autogit config`  | Gestiona proveedor, modelo, API key, idioma, etc.       |
| `autogit doctor`  | Diagnóstico del entorno (git, config, proveedor de IA)  |
| `autogit version` | Muestra la versión instalada                            |

## Configuración

La configuración se resuelve combinando, de menor a mayor prioridad:

1. Valores por defecto.
2. Archivo global del usuario: `~/.autogit/config.toml`.
3. Archivo del proyecto: `.autogit.toml` en la raíz del repo.
4. Variables de entorno: `AUTOGIT_PROVIDER`, `AUTOGIT_MODEL`, `AUTOGIT_API_KEY`,
   `AUTOGIT_LANGUAGE`, `AUTOGIT_COMMIT_STYLE`, `AUTOGIT_MAX_MESSAGE_LENGTH`.

```bash
autogit config show                  # ver la configuración efectiva
autogit config path                  # ver dónde viven los archivos
autogit config set provider ollama   # fijar un valor (se valida antes de guardar)
autogit config set model llama3
```

> La API key es más segura como variable de entorno (`AUTOGIT_API_KEY`) que
> escrita en un archivo.

### Proveedores de IA

| Proveedor    | Estado           | Notas                                  |
| ------------ | ---------------- | -------------------------------------- |
| `fake`       | ✅ Disponible    | Determinista y offline (desarrollo)    |
| `ollama`     | ✅ Disponible    | Modelos locales, sin API key           |
| `openai`     | ⏳ Planificado   |                                        |
| `claude`     | ⏳ Planificado   |                                        |
| `gemini`     | ⏳ Planificado   |                                        |
| `openrouter` | ⏳ Planificado   |                                        |

## Desarrollo

```bash
uv run pytest              # tests
uv run ruff check .        # lint
uv run ruff format .       # formato
uv run mypy                # tipado estático
```

## Arquitectura

Clean Architecture con capas desacopladas:

```
src/autogit/
├── cli/        # Interacción de terminal (Typer + Rich)
├── commands/   # Un módulo por subcomando
├── core/       # Casos de uso y reglas de negocio (dominio)
├── git/        # Adaptador sobre el binario git
├── ai/         # Interfaz AIProvider + implementaciones + fábrica
├── config/     # Carga y validación de configuración (Pydantic)
├── models/     # Modelos de datos tipados
└── utils/      # Utilidades transversales
```

## Licencia

MIT
