diff --git a/apps/desktop/electron/ipc/hub.ts b/apps/desktop/electron/ipc/hub.ts index 685f1d0104..6412cf9725 100644 --- a/apps/desktop/electron/ipc/hub.ts +++ b/apps/desktop/electron/ipc/hub.ts @@ -341,13 +341,13 @@ export function registerHubIpcHandlers(): void { } try { - const sessionMessages = await agent.getMessages() + const sessionMessages = agent.getMessages() const messages = sessionMessages .filter((m) => m.role === 'user' || m.role === 'assistant') .map((m, i) => ({ id: `history-${i}-${Date.now()}`, role: m.role as 'user' | 'assistant', - content: extractTextContent(m.content), + content: extractTextContent((m as { content?: unknown }).content), agentId, })) .filter((m) => m.content.length > 0) diff --git a/apps/desktop/electron/preload.ts b/apps/desktop/electron/preload.ts index 21edbe7c9e..f554ef4bac 100644 --- a/apps/desktop/electron/preload.ts +++ b/apps/desktop/electron/preload.ts @@ -159,9 +159,6 @@ const electronAPI = { // Expose to renderer contextBridge.exposeInMainWorld('electronAPI', electronAPI) -// Re-export LocalChatEvent type for use in renderer -export type { LocalChatEvent } - // Also expose ipcRenderer for backward compatibility contextBridge.exposeInMainWorld('ipcRenderer', { on(...args: Parameters) { diff --git a/src/agent/async-agent.ts b/src/agent/async-agent.ts index 957509e22f..6847555501 100644 --- a/src/agent/async-agent.ts +++ b/src/agent/async-agent.ts @@ -1,5 +1,5 @@ import { v7 as uuidv7 } from "uuid"; -import type { AgentEvent } from "@mariozechner/pi-agent-core"; +import type { AgentEvent, AgentMessage } from "@mariozechner/pi-agent-core"; import { Agent } from "./runner.js"; import { Channel } from "./channel.js"; import type { AgentOptions, Message } from "./types.js"; @@ -214,4 +214,11 @@ export class AsyncAgent { reloadSystemPrompt(): void { this.agent.reloadSystemPrompt(); } + + /** + * Get all messages from the current session. + */ + getMessages(): AgentMessage[] { + return this.agent.getMessages(); + } } diff --git a/src/agent/runner.ts b/src/agent/runner.ts index 399234707a..f66ef159cd 100644 --- a/src/agent/runner.ts +++ b/src/agent/runner.ts @@ -482,6 +482,11 @@ export class Agent { return this.agent.state.tools?.map(t => t.name) ?? []; } + /** Get all messages from the current session */ + getMessages(): AgentMessage[] { + return this.agent.state.messages.slice(); + } + /** * Get all skills with their eligibility status. * Returns empty array if skills are disabled.