chore: scaffolding inicial del repo (pyproject, requirements, Makefile)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,27 @@
|
|||||||
|
# Proveedor LLM activo. Valores: mock | azure | openai
|
||||||
|
LLM_PROVIDER=mock
|
||||||
|
|
||||||
|
# Proveedor de fallback (opcional). Vacío deshabilita fallback.
|
||||||
|
LLM_FALLBACK_PROVIDER=
|
||||||
|
|
||||||
|
# Azure OpenAI (solo si LLM_PROVIDER=azure)
|
||||||
|
AZURE_OPENAI_ENDPOINT=
|
||||||
|
AZURE_OPENAI_API_KEY=
|
||||||
|
AZURE_OPENAI_DEPLOYMENT=
|
||||||
|
AZURE_OPENAI_API_VERSION=2024-08-01-preview
|
||||||
|
|
||||||
|
# OpenAI (solo si LLM_PROVIDER=openai)
|
||||||
|
OPENAI_API_KEY=
|
||||||
|
OPENAI_MODEL=gpt-4o
|
||||||
|
|
||||||
|
# Guardrails
|
||||||
|
GUARDRAILS_NEMO_ENABLED=false
|
||||||
|
|
||||||
|
# Observabilidad
|
||||||
|
LOG_LEVEL=INFO
|
||||||
|
|
||||||
|
# Persistencia
|
||||||
|
DATA_DIR=./data
|
||||||
|
|
||||||
|
# URL del core (la usa el dashboard)
|
||||||
|
AGENTFORGE_CORE_URL=http://core:8000
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
.PHONY: help install lint format test test-all smoke up down logs clean
|
||||||
|
|
||||||
|
help:
|
||||||
|
@echo "Targets: install lint format test test-all smoke up down logs clean"
|
||||||
|
|
||||||
|
install:
|
||||||
|
pip install -r core/requirements.txt -r dashboard/requirements.txt
|
||||||
|
pip install pytest pytest-asyncio ruff mypy freezegun
|
||||||
|
|
||||||
|
lint:
|
||||||
|
ruff check core/src dashboard/src tests
|
||||||
|
mypy core/src
|
||||||
|
|
||||||
|
format:
|
||||||
|
ruff format core/src dashboard/src tests
|
||||||
|
ruff check --fix core/src dashboard/src tests
|
||||||
|
|
||||||
|
test:
|
||||||
|
pytest tests/unit -v
|
||||||
|
|
||||||
|
test-all:
|
||||||
|
pytest -v
|
||||||
|
|
||||||
|
smoke:
|
||||||
|
docker compose up -d
|
||||||
|
@sleep 5
|
||||||
|
curl -fsS http://localhost:8000/health || (docker compose down && exit 1)
|
||||||
|
docker compose down
|
||||||
|
|
||||||
|
up:
|
||||||
|
docker compose up
|
||||||
|
|
||||||
|
down:
|
||||||
|
docker compose down
|
||||||
|
|
||||||
|
logs:
|
||||||
|
docker compose logs -f
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -rf .pytest_cache .mypy_cache .ruff_cache __pycache__ data/*.sqlite data/*.jsonl
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
fastapi>=0.115,<0.120
|
||||||
|
uvicorn[standard]>=0.30,<0.32
|
||||||
|
pydantic>=2.7,<3.0
|
||||||
|
pydantic-settings>=2.4,<3.0
|
||||||
|
structlog>=24.4,<25.0
|
||||||
|
httpx>=0.27,<0.28
|
||||||
|
langgraph>=0.2.50,<0.3
|
||||||
|
langgraph-checkpoint-sqlite>=2.0,<3.0
|
||||||
|
guardrails-ai>=0.5,<0.6
|
||||||
|
presidio-analyzer>=2.2,<3.0
|
||||||
|
presidio-anonymizer>=2.2,<3.0
|
||||||
|
openai>=1.50,<2.0
|
||||||
|
PyYAML>=6.0,<7.0
|
||||||
|
nemoguardrails>=0.10,<0.12
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
streamlit>=1.38,<2.0
|
||||||
|
httpx>=0.27,<0.28
|
||||||
|
pydantic>=2.7,<3.0
|
||||||
|
PyYAML>=6.0,<7.0
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
[build-system]
|
||||||
|
requires = ["setuptools>=68", "wheel"]
|
||||||
|
build-backend = "setuptools.build_meta"
|
||||||
|
|
||||||
|
[project]
|
||||||
|
name = "agentforge"
|
||||||
|
version = "0.1.0"
|
||||||
|
description = "Plataforma profesional de gobernanza de agentes IA"
|
||||||
|
requires-python = ">=3.11"
|
||||||
|
authors = [{name = "Juan", email = "jm0x@proton.me"}]
|
||||||
|
|
||||||
|
[tool.ruff]
|
||||||
|
line-length = 100
|
||||||
|
target-version = "py311"
|
||||||
|
|
||||||
|
[tool.ruff.lint]
|
||||||
|
select = ["E", "F", "W", "I", "N", "UP", "B", "C4", "SIM", "ASYNC", "RUF"]
|
||||||
|
ignore = ["E501"]
|
||||||
|
|
||||||
|
[tool.ruff.lint.isort]
|
||||||
|
known-first-party = ["agentforge_core", "agentforge_dashboard"]
|
||||||
|
|
||||||
|
[tool.mypy]
|
||||||
|
python_version = "3.11"
|
||||||
|
strict = true
|
||||||
|
warn_return_any = true
|
||||||
|
warn_unused_configs = true
|
||||||
|
disallow_untyped_defs = true
|
||||||
|
plugins = ["pydantic.mypy"]
|
||||||
|
|
||||||
|
[[tool.mypy.overrides]]
|
||||||
|
module = ["guardrails.*", "presidio_analyzer.*", "nemoguardrails.*", "langgraph.*"]
|
||||||
|
ignore_missing_imports = true
|
||||||
|
|
||||||
|
[tool.pytest.ini_options]
|
||||||
|
asyncio_mode = "auto"
|
||||||
|
testpaths = ["tests"]
|
||||||
|
addopts = "-ra -q --strict-markers"
|
||||||
|
pythonpath = ["core/src", "dashboard/src"]
|
||||||
|
markers = [
|
||||||
|
"integration: integration tests (slower, may touch FS)",
|
||||||
|
]
|
||||||
Reference in New Issue
Block a user