2026.11.03 — v2.7.0
v2.7.0
The memory tools can read and write typed edges, and a query on an edge label no longer scans every edge. A database written by 2.6.0 to 2.6.3 opens as it is: no export or import.
Added
- Typed Edges in memory_context. memory_context returns an edges array beside neighbors: the relation, the direction (out or in), the entity at the other end and its edge_properties. neighbors is unchanged.
- memory_edges. The labeled edges of one entity and nothing else, optionally filtered by relation and direction, for walking the graph.
- Edge Properties and Weight. memory_relate takes properties (string or number values). weight is a number and defaults to 1.0. Relating the same source, relation and target again replaces the edge's properties.
- memory_unrelate. Removes one edge and says whether it existed.
- Relations in memory_save_batch. A batch takes relations; every endpoint is checked before anything is written, so a typo leaves memory untouched.
- memory_list by Type. An optional type returns only entities of that type.
- asanagidb-mcp --serve-port. Also serves the database over the native protocol on 127.0.0.1, from the same process, so a model and its memory can live in one database.
Fixed
- Edge Label Queries (2.6.3). Reading an edge by id searched every forward edge for it, so g.E().hasLabel(x).limit(30) took 22 seconds on a 584,000-edge graph and held the engine's thread while everything queued behind it. The edge-label index now finds the edge directly: 22.6 s to 0.7 s, a count 22.2 s to 0.06 s, with identical results.