feat(chat): per-user inbox anchor for listing kind=value threads
EA2 doesn't expose a generic flow-by-kind list endpoint; flow/processes is definition-only. Migrated chat to flow.kind=value, so direct listing needed a new strategy. - Each user has a deterministic inbox flow.kind=value doc keyed by email slug. ensureInbox() creates it idempotently on first listThreads. - createThread links the new thread into BOTH participants' inboxes via defines edges with role='presentation' (each link is one apply-batch). - listThreads(userEmail) reads defines edges from the user's inbox key. No more reliance on source_context regex filtering through the definition catalogue. Updated all 3 call sites: Chat.tsx (mount + after-create refresh) and agentTools.send_chat. 31/31 tests green.
This commit is contained in:
@@ -107,7 +107,7 @@ const TOOLS: ToolDef[] = [
|
||||
};
|
||||
const recipient = Object.entries(directory).find(([k]) => target.includes(k))?.[1];
|
||||
if (!recipient) return { ok: false, display: `I don't know who "${target}" is. Try Mariana, Aisha, or Rohan.` };
|
||||
const threads = await chatApi.listThreads();
|
||||
const threads = await chatApi.listThreads(ctx.userEmail);
|
||||
const existing = threads.find((t) => t.participants.includes(recipient) && t.participants.includes(ctx.userEmail));
|
||||
const threadKey = existing?._key || (await chatApi.createThread(`${ctx.userEmail} ↔ ${recipient}`, [ctx.userEmail, recipient]));
|
||||
await chatApi.sendMessage(threadKey, body, ctx.userEmail);
|
||||
|
||||
Reference in New Issue
Block a user