--- id: 0001 title: Chat con Claude sobre el grafo status: pending priority: high created: 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.