From aca28ad0ecbb75686d08f060ef8b8888f9b74e6f Mon Sep 17 00:00:00 2001 From: JAE Date: Fri, 27 Mar 2026 18:42:30 +0000 Subject: [PATCH] fix: critical storage init - AppStorage constructed with wrong args ROOT CAUSE: setAppStorage(new AppStorage(backend)) passed 1 arg to a 5-arg constructor (settings, providerKeys, sessions, customProviders, backend). This left providerKeys=undefined, crashing sendMessage() at AgentInterface.ts:223 every time. Fix: - Create all Store instances first - Create IndexedDBStorageBackend with proper config (dbName, stores) - Wire backend into each store via setBackend() - Construct AppStorage with all 5 required arguments This was the root cause of all "messages wont send" bugs. --- packages/web-ui/example/src/main.ts | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/packages/web-ui/example/src/main.ts b/packages/web-ui/example/src/main.ts index ad1c1ae..8a8b181 100644 --- a/packages/web-ui/example/src/main.ts +++ b/packages/web-ui/example/src/main.ts @@ -71,13 +71,33 @@ import "./components/typing-indicator.js"; import "./components/context-peek.js"; // ===== STORAGE ===== -const backend = new IndexedDBStorageBackend(); -setAppStorage(new AppStorage(backend)); -const sessionsStore = new SessionsStore(); +// 1. Create all stores first (to collect their configs) const settingsStore = new SettingsStore(); const providerKeysStore = new ProviderKeysStore(); +const sessionsStore = new SessionsStore(); const customProvidersStore = new CustomProvidersStore(); +// 2. Create IndexedDB backend with all store configs +const backend = new IndexedDBStorageBackend({ + dbName: "jae-web-ui", + version: 1, + stores: [ + settingsStore.getConfig(), + providerKeysStore.getConfig(), + sessionsStore.getConfig(), + customProvidersStore.getConfig(), + ], +}); + +// 3. Wire backend into each store +settingsStore.setBackend(backend); +providerKeysStore.setBackend(backend); +sessionsStore.setBackend(backend); +customProvidersStore.setBackend(backend); + +// 4. Create and register global AppStorage with ALL required args +setAppStorage(new AppStorage(settingsStore, providerKeysStore, sessionsStore, customProvidersStore, backend)); + // ===== STATE ===== let chatPanel: ChatPanel; let agent: Agent | null = null;