From 2b91368a235276c1ddad56581700f9ec2b9d2f09 Mon Sep 17 00:00:00 2001 From: canvas-bot Date: Tue, 16 Jun 2026 21:19:11 +0400 Subject: [PATCH] fix(memory): use edge role=memory not presentation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit EA2 enforces one-defines-presentation-per-node — only the first memory could ever attach because every subsequent create_edge(role=presentation) from the vault returned 500 [ERR 1650]. Use role=memory for ongoing memories. listAll filter accepts both for back-compat with the single existing presentation edge. --- src/lib/agentMemory.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib/agentMemory.ts b/src/lib/agentMemory.ts index 3a9a8ca..0ff078f 100644 --- a/src/lib/agentMemory.ts +++ b/src/lib/agentMemory.ts @@ -94,7 +94,7 @@ export const agentMemory = { body: JSON.stringify({ request_id: newRequestId(), ops: [ - { op: "create_edge", edge_coll: "defines", from: `flow/${vaultKey}`, to: `flow/${mem._key}`, role: "presentation" }, + { op: "create_edge", edge_coll: "defines", from: `flow/${vaultKey}`, to: `flow/${mem._key}`, role: "memory" }, ], }), signal, @@ -116,7 +116,7 @@ export const agentMemory = { if (!edgesRes.ok) return []; const edges = (await edgesRes.json())?.items || []; const memKeys = (edges as any[]) - .filter((e) => e?.role === "presentation") + .filter((e) => e?.role === "memory" || e?.role === "presentation") .map((e) => (e._to || "").split("/").pop()) .filter(Boolean) .slice(0, cap) as string[];