Files
graph_explorer/issues/0001-claude-chat-agent.md
T
egutierrez a36530bb6f feat: docking host + add-node toolbar + node context menu
- 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
2026-04-30 22:55:30 +02:00

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_KEY o ~/.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.db tabla chat_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.