diff --git a/packages/web-ui/example/src/main.ts b/packages/web-ui/example/src/main.ts index 8a8b181..f2c7c6d 100644 --- a/packages/web-ui/example/src/main.ts +++ b/packages/web-ui/example/src/main.ts @@ -290,6 +290,7 @@ chatPanel.setAgent(agent, { case "agent_end": if (typing) typing.hide(); + saveSession(); break; case "turn_start": @@ -379,9 +380,31 @@ async function saveSession() { if (!agent) return; const msgs = agent.getMessages(); const title = msgs.find((m: AgentMessage) => m.role === "user")?.content?.toString().slice(0, 50) || "New chat"; - const state = agent.getState(); - const id = state.sessionId || crypto.randomUUID(); - await sessionsStore.save(id, { state, title }); + const agentState = agent.getState(); + const id = agentState.sessionId || crypto.randomUUID(); + const now = new Date().toISOString(); + try { + const sessionData = { + id, + title, + model: agentState.model, + thinkingLevel: agentState.thinkingLevel, + messages: agentState.messages || [], + createdAt: now, + lastModified: now, + }; + const sessionMeta = { + id, + title, + createdAt: now, + lastModified: now, + messageCount: msgs.length, + usage: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, totalTokens: 0, cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 } }, + thinkingLevel: agentState.thinkingLevel || "off", + preview: msgs[msgs.length - 1]?.content?.toString().slice(0, 100) || "", + }; + await sessionsStore.save(sessionData as any, sessionMeta as any); + } catch (_e) { /* store may not be ready */ } const sidebar = document.querySelector("jae-session-sidebar") as JaeSessionSidebar; if (sidebar) { sidebar.addSession({ id, title, date: new Date().toLocaleDateString(), pinned: false }); @@ -391,7 +414,19 @@ async function saveSession() { async function refreshSidebar() { const sidebar = document.querySelector("jae-session-sidebar") as JaeSessionSidebar; - if (sidebar) sidebar.refresh(); + if (!sidebar) return; + try { + const allMeta = await sessionsStore.getAllMetadata(); + for (const meta of allMeta) { + sidebar.addSession({ + id: meta.id, + title: meta.title || "New chat", + date: meta.lastModified ? new Date(meta.lastModified).toLocaleDateString() : new Date().toLocaleDateString(), + pinned: false, + }); + } + } catch (_e) { /* fallback if store not ready */ } + sidebar.refresh(); } function newSession() { @@ -586,7 +621,7 @@ function renderApp() { html`
{ (e.currentTarget as HTMLElement).style.transform = "scale(1.15) rotate(5deg)"; }} @mouseleave=${(e: Event) => { (e.currentTarget as HTMLElement).style.transform = ""; }} />
JAE