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