proyecto generalizado

This commit is contained in:
2026-05-23 16:44:45 +02:00
parent 2f990ea636
commit b4964261ec
94 changed files with 1032 additions and 320 deletions
+11 -11
View File
@@ -1,4 +1,4 @@
# Componentes de AgentForge y su interrelación (bajo nivel)
# Componentes de Forja y su interrelación (bajo nivel)
> **Alcance.** Este documento es la **referencia de cableado**: módulos exactos,
> firmas, el grafo de dependencias de imports, el grafo de inyección de
@@ -9,7 +9,7 @@
> - ¿Las decisiones técnicas resumidas? → [`ARCHITECTURE.md`](../ARCHITECTURE.md).
> - ¿Cómo arrancarlo? → [`README.md`](../README.md).
>
> Rutas relativas a `core/src/agentforge_core/` salvo que se diga otra cosa.
> Rutas relativas a `core/src/ forja_core/` salvo que se diga otra cosa.
> Refleja el estado del repo en `v0.1.0`.
---
@@ -67,7 +67,7 @@ NIVEL 6
main ⇐ api (routers), api.middlewares, config, observability.logging → create_app(), app
(separado, sin imports del paquete core)
dashboard/src/agentforge_dashboard/* ← habla con `main` por HTTP, no por import
dashboard/src/ forja_dashboard/* ← habla con `main` por HTTP, no por import
```
Reglas que se cumplen y conviene mantener:
@@ -333,11 +333,11 @@ Hashing/versionado: `registry/versioning.compute_hash(yaml_text)` = SHA-256 del
---
## 6. Dashboard ↔ Core (`agentforge_dashboard`)
## 6. Dashboard ↔ Core (` forja_dashboard`)
El dashboard no comparte código con el core: solo lo llama por HTTP a través de
`CoreClient` (`dashboard/src/agentforge_dashboard/client.py`, httpx síncrono con 2
retries, `base_url = AGENTFORGE_CORE_URL`; mapea 404/409/422 → `{"error": <json>}`).
`CoreClient` (`dashboard/src/ forja_dashboard/client.py`, httpx síncrono con 2
retries, `base_url = FORJA_CORE_URL`; mapea 404/409/422 → `{"error": <json>}`).
| `CoreClient.<método>` | Endpoint del core | Página(s) que lo usan |
|-----------------------|-------------------|-----------------------|
@@ -365,11 +365,11 @@ Componentes reutilizables: `components/diff_view.render_unified_diff(diff_text)`
## 7. Arranque y ciclo de vida
**Proceso core** (`uvicorn agentforge_core.main:app`):
1. Import de `agentforge_core.main` ⇒ se ejecuta `app = create_app()`:
**Proceso core** (`uvicorn forja_core.main:app`):
1. Import de ` forja_core.main` ⇒ se ejecuta `app = create_app()`:
`Settings()``configure_logging(level=settings.log_level)``FastAPI(...)`
`app.add_middleware(TraceIdMiddleware)` → registra `GET /health`
`from agentforge_core.api import agents, executions, policies, violations`
`from forja_core.api import agents, executions, policies, violations`
`include_router` ×5.
2. Las dependencias (`deps.get_registry`, `get_policy_store`, `get_llm_provider`,
`get_guardrail_engine`, `get_orchestrator`) **no** se construyen aún; se
@@ -378,12 +378,12 @@ Componentes reutilizables: `components/diff_view.render_unified_diff(diff_text)`
pueden disparar la construcción perezosa) → handler → respuesta con `X-Trace-Id`.
**Contenedores** (`docker-compose.yml`): servicio `core` (`core/Dockerfile`,
`uvicorn agentforge_core.main:app --host 0.0.0.0 --port 8000`, `HEALTHCHECK`
`uvicorn forja_core.main:app --host 0.0.0.0 --port 8000`, `HEALTHCHECK`
`curl /health`, monta `./agents:ro`, `./policies:ro`, `./data:rw`, env
`DATA_DIR=/app/data`, `AGENTS_DIR=/app/agents`, `POLICIES_DIR=/app/policies`,
`env_file: .env`); servicio `dashboard` (`dashboard/Dockerfile`, `streamlit run
app.py`, `HEALTHCHECK``/_stcore/health`, `depends_on: core: service_healthy`,
env `AGENTFORGE_CORE_URL=http://core:8000`, monta `./agents:ro` para leer los
env `FORJA_CORE_URL=http://core:8000`, monta `./agents:ro` para leer los
`examples/*.txt`).
**`Settings` (env vars)** — `config.py`: