Add your description here
Project description
aigency-lib
Una librería para crear y gestionar agentes de IA.
Inicio rápido
Para probar un agente simple:
cd examples/simple_agents/hello_world_agent
docker compose up
🔧 Gestión de versiones
Este proyecto incluye un sistema automatizado para gestionar versiones tanto en desarrollo como en producción.
Version Manager
El script scripts/version_manager.py te ayuda a gestionar las versiones de tu paquete de forma local.
Comandos disponibles
1. Ver información actual
python scripts/version_manager.py show
Qué hace:
- Muestra la versión actual en
pyproject.toml - Muestra la rama git actual
- Muestra el commit actual
- Si no estás en
main, sugiere una versión de desarrollo
Ejemplo de salida:
Versión actual: 0.0.1
Rama: feature/new-agent
Commit: a1b2c3d
Versión dev sugerida: 0.0.1.dev20250409143022+feature/new-agent.a1b2c3d
2. Crear versión de desarrollo
python scripts/version_manager.py dev
Qué hace:
- Toma la versión actual y crea una versión de desarrollo
- Formato:
version.devYYYYMMDDHHMMSS+branch.commit - Actualiza automáticamente el
pyproject.toml
Ejemplo:
# Si estás en rama "feature/auth" con commit "abc123"
python scripts/version_manager.py dev
# Resultado: 0.0.1.dev20250409143022
3. Establecer versión específica
python scripts/version_manager.py set --version "0.1.0"
Qué hace:
- Cambia la versión a la que especifiques
- Útil para releases o para corregir versiones
Ejemplos:
# Versión de release
python scripts/version_manager.py set --version "1.0.0"
# Versión beta
python scripts/version_manager.py set --version "1.0.0b1"
# Versión alpha
python scripts/version_manager.py set --version "1.0.0a1"
4. Crear versión Release Candidate
python scripts/version_manager.py rc --version "1.0.1"
Qué hace:
- Crea una versión RC con el formato
version-rc<commit> - Útil para preparar releases en ramas
release/*
5. Validar versión actual
python scripts/version_manager.py validate
Qué hace:
- Valida que la versión actual sea apropiada para la rama
- Verifica formato semántico en
mainy ramasrelease/*
6. Crear dev con versión base personalizada
python scripts/version_manager.py dev --base-version "0.2.0"
Qué hace:
- Usa una versión base diferente a la actual
- Útil cuando quieres preparar una dev version para la próxima release
🚀 Flujo de trabajo recomendado
Para desarrollo diario:
# 1. Ver estado actual
python scripts/version_manager.py show
# 2. Si estás en una rama feature, crear versión dev
python scripts/version_manager.py dev
# 3. Hacer tus cambios y commits
git add .
git commit -m "feat: nueva funcionalidad"
# 4. Si necesitas actualizar la versión dev (opcional)
python scripts/version_manager.py dev
Para releases:
# 1. En rama main, establecer versión de release
python scripts/version_manager.py set --version "1.0.0"
# 2. Commit de la versión
git add pyproject.toml
git commit -m "bump: version 1.0.0"
# 3. Usar el workflow de GitHub para publicar
Para testing:
# Crear versión de test específica
python scripts/version_manager.py set --version "1.0.0rc1"
⚠️ Limitaciones de PyPI
PyPI no permite "local versions" (versiones con + y identificadores locales). Por eso, hemos adaptado el formato:
- ❌ No permitido:
1.0.0.dev20250409+feature.abc123 - ✅ Permitido:
1.0.0.dev20250409
Solución para Release Candidates:
- Convertimos el hash del commit (hexadecimal) a decimal
- Ejemplo: commit
abc123→11256099→ versión1.0.1rc11256099 - Esto mantiene la unicidad del commit en un formato compatible con PyPI
Resultado:
- Las versiones dev incluyen timestamp único
- Las versiones RC incluyen el hash del commit (en decimal)
- Mantenemos trazabilidad sin usar local versions
📋 Casos de uso prácticos
Escenario 1: Trabajando en una feature
git checkout -b feature/new-auth
python scripts/version_manager.py dev
# Ahora tienes: 0.0.1.dev20250409143022
Escenario 2: Preparando release
git checkout main
python scripts/version_manager.py set --version "1.0.0"
git add pyproject.toml
git commit -m "release: v1.0.0"
Escenario 3: Preparando Release Candidate
git checkout -b release/1.0.1
python scripts/version_manager.py rc --version "1.0.1"
# Resultado: 1.0.1rc12345678 (donde 12345678 es el hash del commit en decimal)
Escenario 4: Hotfix urgente
git checkout -b hotfix/critical-bug
python scripts/version_manager.py dev --base-version "1.0.1"
# Resultado: 1.0.1.dev20250409143022
🔄 Workflow de CI/CD Inteligente
El proyecto incluye un único workflow inteligente (python-publish.yml) que maneja automáticamente diferentes tipos de versiones según la rama:
Comportamiento automático por rama:
🚀 Rama main - Versiones de Producción
- Trigger: Push a
maino ejecución manual - Versión: Usa exactamente la versión del
pyproject.toml - Validaciones:
- ✅ Verifica que sea una versión semántica válida (ej:
1.0.0) - ✅ Verifica que no exista ya en PyPI
- ❌ Falla si contiene sufijos de desarrollo (
dev,rc,alpha,beta)
- ✅ Verifica que sea una versión semántica válida (ej:
- Destino: PyPI producción
🎯 Ramas release/* - Release Candidates
- Trigger: Push a rama
release/X.Y.Zo ejecución manual - Versión:
X.Y.ZrcNdonde N es el hash del commit en decimal (ej:1.0.1rc12345678) - Validaciones:
- ✅ Verifica que
X.Y.Zsea una versión semántica válida - ✅ Extrae la versión del nombre de la rama
- ✅ Usa hash del commit como identificador único
- ✅ Formato compatible con PyPI
- ✅ Verifica que
- Destino: PyPI producción
- Ejemplo: Rama
release/1.0.1+ commitabc123→ Versión1.0.1rc11256099
🔧 Otras ramas - Versiones de Desarrollo
- Trigger: Push a cualquier otra rama o ejecución manual
- Versión:
current.devYYYYMMDDHHMMSS(ej:0.0.1.dev20250409143022) - Destino: PyPI producción
- Nota: Sin local versions para compatibilidad con PyPI
Flujo de trabajo recomendado:
# 1. Desarrollo en feature branch
git checkout -b feature/new-functionality
# Versión automática: 0.0.1.dev20250409143022+feature-new-functionality.abc123
# 2. Preparar release
git checkout -b release/1.0.0
git push origin release/1.0.0
# Versión automática: 1.0.0rc12345678
# 3. Release final
git checkout main
python scripts/version_manager.py set --version "1.0.0"
git add pyproject.toml
git commit -m "release: v1.0.0"
git push origin main
# Versión: 1.0.0 (con validaciones)
📦 Instalación
pip install aigency
🛠️ Desarrollo
- Clona el repositorio
- Instala las dependencias de desarrollo
- Usa el version manager para gestionar versiones durante el desarrollo
git clone <repo-url>
cd aigency-lib
pip install -e .
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file aigency-0.0.1rc15474277.tar.gz.
File metadata
- Download URL: aigency-0.0.1rc15474277.tar.gz
- Upload date:
- Size: 13.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7ff4856f4c873453aeb2aa9272920d0b8ae7b7b910707e5c357868dfa874b635
|
|
| MD5 |
6d29f655d2ee9553615329bf04e95ade
|
|
| BLAKE2b-256 |
8ddd40fd07aecf54db3fd4416ba3bce2ff8eed41a6d577b0f215ae1ec16c733e
|
Provenance
The following attestation bundles were made for aigency-0.0.1rc15474277.tar.gz:
Publisher:
python-publish.yml on aigency-project/aigency-lib
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aigency-0.0.1rc15474277.tar.gz -
Subject digest:
7ff4856f4c873453aeb2aa9272920d0b8ae7b7b910707e5c357868dfa874b635 - Sigstore transparency entry: 468736698
- Sigstore integration time:
-
Permalink:
aigency-project/aigency-lib@0ec1e65971174f8f8ce51d232d5dc33706b3c06f -
Branch / Tag:
refs/heads/release/0.0.1 - Owner: https://github.com/aigency-project
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@0ec1e65971174f8f8ce51d232d5dc33706b3c06f -
Trigger Event:
push
-
Statement type:
File details
Details for the file aigency-0.0.1rc15474277-py3-none-any.whl.
File metadata
- Download URL: aigency-0.0.1rc15474277-py3-none-any.whl
- Upload date:
- Size: 13.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7bfd2f99c4eabdf0f1285a21b71aafc9dfcac99f6343f74fb88a94495b62362e
|
|
| MD5 |
9604370d443ef5eacb8ab8f89b38c37b
|
|
| BLAKE2b-256 |
a51c6d20ba6896aaf1872bf8b57af51c63a985329054a7fe8e5ad93179bf8045
|
Provenance
The following attestation bundles were made for aigency-0.0.1rc15474277-py3-none-any.whl:
Publisher:
python-publish.yml on aigency-project/aigency-lib
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aigency-0.0.1rc15474277-py3-none-any.whl -
Subject digest:
7bfd2f99c4eabdf0f1285a21b71aafc9dfcac99f6343f74fb88a94495b62362e - Sigstore transparency entry: 468736724
- Sigstore integration time:
-
Permalink:
aigency-project/aigency-lib@0ec1e65971174f8f8ce51d232d5dc33706b3c06f -
Branch / Tag:
refs/heads/release/0.0.1 - Owner: https://github.com/aigency-project
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@0ec1e65971174f8f8ce51d232d5dc33706b3c06f -
Trigger Event:
push
-
Statement type: