9042110ea2
Cinco issues que componen el plan: - 0026: sistema de jobs (infra, contrato wire) - 0027: tipo Webpage + cache de documentos - 0028: enricher fetch_webpage (MVP end-to-end) - 0028b: enrichers extract_domain / extract_links / extract_text_entities - 0029: variantes CDP (Chrome headless, screenshot) - 0030: macro "Deep enrich" + expand_domain Tambien anade los issues previos 0012-0025 que estaban untracked. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2.1 KiB
2.1 KiB
id, title, status, priority, created
| id | title | status | priority | created |
|---|---|---|---|---|
| 0012 | Endpoint HTTP local de ingesta y consulta | pending | medium | 2026-05-01 |
Objetivo
Exponer un servidor HTTP local en graph_explorer (o como ingest_server
hermano) que sea el punto de entrada unico para todo flujo externo:
extension de navegador, CLI gx, watcher de portapapeles, bots, OCR, etc.
Sin este endpoint cada cliente externo tendria que abrir operations.db
directamente — colisiona con el lock del proceso vivo y duplica logica de
extraccion.
Endpoints minimos
POST /entity— crea entidad. Body:{type, name, metadata}.POST /relation— crea relacion. Body:{from_id, to_id, kind, metadata}.POST /ingest/text— texto libre ->extract_graph_hybrid-> preview o auto-commit.POST /ingest/url— URL -> fetch + extract -> preview o auto-commit.POST /ingest/file— multipart upload (PDF/CSV/JSON/.eml/imagen) -> router por mime -> extract.GET /search?q=— fuzzy / FTS sobre entidades.GET /entity/:id,GET /entity/:id/neighbors.
Decisiones
- Bind a
127.0.0.1por defecto, puerto fijo (ej. 7878) o aleatorio escrito a~/.fn_graph_port. - Auth: token compartido en
~/.fn_graph_token(headerX-Token). Generado al primer arranque. - Modo "preview": las rutas de ingesta aceptan
?commit=falsey devuelven entities/relations propuestas para que el cliente las muestre antes de persistir. Cuando estrue, escribe directo. - Implementacion: httplib o Mongoose embebido en C++ (sin nuevas deps pesadas). Alternativa: lanzar el servidor en Go/Python aparte si la integracion C++ se complica.
Bloquea
Issues 0014, 0017, 0018, 0019, 0020 dependen de este.
Definicion de hecho
curl -H "X-Token: ..." -d '{"type":"person","name":"X"}' localhost:7878/entitycrea entidad.POST /ingest/textcon texto en castellano devuelve entities/relations detectadas por el pipeline hibrido.- El endpoint corre en background mientras la UI sigue interactiva.
- Si
graph_explorerno esta abierto, un binarioingest_serverstandalone ofrece el mismo API contra la mismaoperations.db.