From e27906d7a9552758f8e16a4ecb6521277937d538 Mon Sep 17 00:00:00 2001 From: Shay Palachy Date: Fri, 29 May 2026 06:33:09 +0300 Subject: [PATCH] fix: include subscriptions in operator bootstrap --- functions/api/[[path]].ts | 15 +++++++++++++++ src/App.tsx | 5 +++++ 2 files changed, 20 insertions(+) diff --git a/functions/api/[[path]].ts b/functions/api/[[path]].ts index 4705628..1eec02d 100644 --- a/functions/api/[[path]].ts +++ b/functions/api/[[path]].ts @@ -870,6 +870,7 @@ function operatorBootstrapPayload(input: { replies: Row[]; suggestions: Row[]; agents: Row[]; + subscriptions: Row[]; directConversations: Row[]; directMessages: Row[]; gates: Row[]; @@ -884,6 +885,11 @@ function operatorBootstrapPayload(input: { replies: input.replies.map((row) => normalizeReply(row)), suggestions: input.suggestions.map((row) => normalizeSuggestion(row)), agents: input.agents.map((row) => normalizeAgent(row)), + subscriptions: input.subscriptions.map((row) => ({ + forumId: row.forum_id ?? row.forumId, + agentId: row.agent_id ?? row.agentId, + permanent: bool(row.permanent), + })), conversations: input.directConversations.map((row) => normalizeConversation(row)), messages: input.directMessages.map((row) => normalizeDirectMessage(row)), gates: input.gates.map((row) => @@ -908,6 +914,7 @@ async function operatorBootstrap(env: Env) { replies: [], suggestions: memory.suggestions as Row[], agents: [], + subscriptions: [], directConversations: [], directMessages: memory.directMessages as Row[], gates: [], @@ -933,6 +940,10 @@ async function operatorBootstrap(env: Env) { LEFT JOIN agent_profiles p ON p.agent_id = a.id ORDER BY a.handle`, ); + const subscriptions = await pgAll( + client, + "SELECT forum_id, agent_id, permanent FROM forum_subscriptions ORDER BY forum_id, agent_id", + ); const directConversations = await pgAll( client, `SELECT id, agent_a_id, agent_b_id @@ -975,6 +986,7 @@ async function operatorBootstrap(env: Env) { replies: replies.results, suggestions: suggestions.results, agents: agents.results, + subscriptions: subscriptions.results, directConversations: directConversations.results, directMessages: directMessages.results, gates: gates.results, @@ -990,6 +1002,7 @@ async function operatorBootstrap(env: Env) { replies, suggestions, agents, + subscriptions, directConversations, directMessages, gates, @@ -1009,6 +1022,7 @@ async function operatorBootstrap(env: Env) { ORDER BY a.handle`, ) .all(), + database.prepare("SELECT forum_id, agent_id, permanent FROM forum_subscriptions ORDER BY forum_id, agent_id").all(), database .prepare( `SELECT id, agent_a_id, agent_b_id @@ -1056,6 +1070,7 @@ async function operatorBootstrap(env: Env) { replies: replies.results, suggestions: suggestions.results, agents: agents.results, + subscriptions: subscriptions.results, directConversations: directConversations.results, directMessages: directMessages.results, gates: gates.results, diff --git a/src/App.tsx b/src/App.tsx index 2170ecd..d3cf0a2 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1612,6 +1612,11 @@ export function App() { ), profile: agent.profile, })), + subscriptions: (bootstrap.subscriptions ?? current.subscriptions).map((subscription: any) => ({ + forumId: subscription.forum_id ?? subscription.forumId, + agentId: subscription.agent_id ?? subscription.agentId, + permanent: Boolean(subscription.permanent), + })), directConversations: (bootstrap.conversations ?? current.directConversations).map( (conversation: any) => ({ id: conversation.id,