# πŸ”¨ Forja **Forja de agentes IA** β€” plataforma de gobernanza genΓ©rica para agentes de cualquier tipo. CatalogaciΓ³n y versionado (estilo Git) de definiciones, polΓ­ticas y guardrails; ejecuciΓ³n controlada con runtime stateful, Human-in-the-Loop y observabilidad completa. Úsala como plano de control en cualquier proyecto que necesite agentes gobernados. ## Arquitectura ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ docker-compose ──────────────────────────┐ β”‚ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” HTTP/JSON β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ forja-dashboard β”‚ ────────────────► β”‚ forja-core β”‚ β”‚ β”‚ β”‚ Streamlit :8501 β”‚ ◄──────────────── β”‚ FastAPI :8000 β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ β”‚ Strategy pattern para LLMProvider, GuardrailEngine, Registry. β”‚ β”‚ Persistencia: YAML (defs versionadas), JSONL (logs), SQLite β”‚ β”‚ (checkpoints LangGraph + HITL). β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` Detalles completos en [`ARCHITECTURE.md`](ARCHITECTURE.md). AdemΓ‘s: - [`docs/walkthrough.html`](docs/walkthrough.html) β€” **walkthrough HTML autocontenido** (de alto a bajo nivel, con diagramas). Ábrelo directamente en el navegador (`xdg-open docs/walkthrough.html`); no requiere servidor. - [`docs/explicacion.md`](docs/explicacion.md) β€” explicaciΓ³n didΓ‘ctica de extremo a extremo (conceptos, recorrido por todos los mΓ³dulos y sus interrelaciones, y el viaje de una peticiΓ³n de principio a fin). - [`docs/componentes.md`](docs/componentes.md) β€” referencia de cableado a bajo nivel (grafo de dependencias de mΓ³dulos, inyecciΓ³n de dependencias, firmas de los contratos entre capas, cadenas de llamada de cada endpoint). ## Quickstart ```bash cp .env.example .env docker compose up ``` Abre [http://localhost:8501](http://localhost:8501). Funciona out-of-the-box (`LLM_PROVIDER=mock`, sin API keys). Si quieres usar Azure OpenAI real, edita `.env`. ## Demo guiada (3 pasos) 1. **Registro** β†’ ver `incident_analyzer` y comparar `v1` vs `v2`. 2. **Ejecutar** β†’ seleccionar el escenario `01_sip_registration_drop` y pulsar *Invocar*. VerΓ‘s el grafo recorrer validate_input β†’ llm_reason β†’ validate_output β†’ propose_actions β†’ approve_gate y pausarse en HITL. 3. **Aprobaciones** β†’ revisar las acciones propuestas (con risk_score y rollback_plan), aprobar las seguras y comprobar que la ejecuciΓ³n completa. ## Capacidades implementadas | Feature | UbicaciΓ³n | |---|---| | Agent / Policy Registry | `core/src/forja_core/registry/` | | Versionado Git-like (YAML) | `agents//` + `policies//` | | Guardrails runtime (strategy) | `core/src/forja_core/guardrails/` | | LangGraph + HITL + checkpoints | `core/src/forja_core/runtime/` | | Observabilidad (trace + structlog) | `core/src/forja_core/observability/` | | LLM abstraction | `core/src/forja_core/llm/` | | Editores grΓ‘ficos (nuevo) | dashboard pΓ‘ginas Forjar Agente / PolΓ­tica | | API REST + dashboard | forja-core :8000 + forja-dashboard :8501 | ## Variables de entorno Ver [`.env.example`](.env.example). ## Roadmap Ver [`docs/futuro.md`](docs/futuro.md). ## Estructura del repositorio ``` forja/ β”œβ”€β”€ core/ servicio FastAPI (gobernanza + runtime) β”œβ”€β”€ dashboard/ Streamlit (UI + editores grΓ‘ficos) β”œβ”€β”€ agents/ definiciones de agentes (YAML versionados) β”œβ”€β”€ policies/ polΓ­ticas de guardrails (YAML versionados) β”œβ”€β”€ data/ runtime state (gitignored) β”œβ”€β”€ tests/ └── docs/ ``` ## Tests ```bash make install make test # solo unit make test-all # unit + integration make lint # ruff + mypy make smoke # docker-compose + curl health ``` ## Licencia MIT (a confirmar).