{ "messages": [ { "role": "system", "content": "You are a helpful AI assistant with access to tools. Use tools when they help answer the user's question. Be concise and accurate." }, { "role": "user", "content": "Can memories be linked to each other?" }, { "role": "assistant", "content": "\nEEMS graph — edges between memories. Relationship types and neighborhood exploration.\n\n\nYes. EEMS has a graph layer — memories can be connected via typed, weighted edges stored in an `edges` table.\n\nFive relationship types:\n\n| Relation | Meaning | Example |\n|---|---|---|\n| `related_to` | General association | A network topology memory linked to a firewall config memory |\n| `depends_on` | A requires B to make sense | A deployment procedure depends on an infrastructure setup memory |\n| `contradicts` | A and B conflict | An old architecture decision contradicted by a newer correction |\n| `extends` | A builds on B | A v2 plan that extends the original plan |\n| `supersedes` | A replaces B | A corrected doctrine that supersedes an older, wrong version |\n\nEach edge has a **weight** (0.0 to 1.0, default 1.0) indicating strength of the relationship.\n\nTwo tools work with the graph:\n\n- **memory_link** — create an edge between two memories by ID. Specify the relation type and optional weight.\n- **memory_graph** — explore the neighborhood of a memory. Starting from one memory ID, traverse connected memories up to N hops (default 2). Returns the subgraph of related memories.\n\nThe graph is particularly useful for:\n- Tracing how a decision evolved (follow the `supersedes` chain)\n- Finding all dependencies of a procedure\n- Discovering contradictions that need resolution\n- Navigating from a known memory to related context you didn't know existed\n\nThe graph layer complements search. Search finds memories by content similarity; the graph finds memories by structural relationship regardless of content." } ] }