a36530bb6f
- Dockspace host (PassthruCentralNode) bajo la toolbar para que las
ventanas Viewport/Legend/Inspector/Stats puedan dockearse dentro de la
app principal.
- Toolbar: input "Add node" con auto-deteccion de tipo (text/email/
ip_address/url/domain/phone). Insert en operations.db + reload.
- Context menu (right-click sobre nodo): Change type, Duplicate, Delete,
submenu "Run enricher" (placeholder hasta issues 0001-0003).
- Inspector: vecinos ahora muestran etiqueta de relacion ("-> employs",
"<- owns") usando rel_types[].name como label de arista.
- Default relation label k_default_relation_name="RELATED_TO" para
relaciones creadas sin nombre semantico explicito.
- Indice EntityIndex (FNV1a hash -> sql id) reconstruido tras cada load
para resolver mutaciones desde el grafo en memoria.
Issues planteadas para iteraciones siguientes:
- 0001: chat con Claude sobre el grafo (HTTP + tool-use)
- 0002: enricher GLiNER+GLiREL desde nodo texto
- 0003: enricher web (fetch URL/dominio + extract text)
- 0004: vista tabla por tipo de entidad
1.8 KiB
1.8 KiB
id, title, status, priority, created
| id | title | status | priority | created |
|---|---|---|---|---|
| 0001 | Chat con Claude sobre el grafo | pending | high | 2026-04-30 |
Objetivo
Panel "Chat" dentro de graph_explorer que permita conversar con Claude (Anthropic API) usando el grafo activo como contexto. El agente debe poder:
- Leer el grafo (entidades, relaciones, metadata) via tool-use sobre operations.db.
- Responder preguntas tipo: "muestrame los nodos relacionados con X", "que patrones ves en estas conexiones", "que falta investigar".
- Proponer mutaciones (crear nodo, etiquetar relacion) que el usuario aprueba con un click antes de aplicarse.
Alcance tecnico
- Cliente HTTP minimo (libcurl o WinHTTP) → POST a
https://api.anthropic.com/v1/messages. - Modelo por defecto:
claude-sonnet-4-6(revisar al implementar). - API key desde env var
ANTHROPIC_API_KEYo~/.fn_anthropic_key. - Tool-use: definir tools
query_entities,query_relations,propose_node,propose_relation. Las "propose_*" no mutan: insertan en una cola que el usuario revisa antes de aplicar. - Estado de conversacion en memoria (lista de messages). Persistencia opcional
en
graph_explorer.dbtablachat_sessions. - Streaming SSE para feedback en vivo (puede dejarse para v2 — primer hit bloqueante esta bien).
Decisiones a tomar
- Renderizado de markdown en ImGui (TextWrapped basico vs lib externa).
- Threading: bloqueante en hilo aparte → cola de mensajes → main thread lee.
Trabajo previo
Ya existe en el registry python/functions/agents/anthropic_chat_py_agents.py
para inspiracion (usa el SDK Python). En C++ usaremos HTTP directo — sin SDK.
Definicion de hecho
- Panel "Chat" dockeable.
- Conversacion con tool-use sobre operations.db funciona.
- Las mutaciones propuestas por el agente se confirman desde la UI antes de llegar a la BD.