From a098a789428873ecd297ead61bc38fa15674014d Mon Sep 17 00:00:00 2001 From: Jiang Bohan Date: Wed, 4 Feb 2026 16:51:07 +0800 Subject: [PATCH] fix(agent): add getMessages method and fix TypeScript errors - Add getMessages() to Agent and AsyncAgent for retrieving session history - Fix type annotations in hub.ts for AgentMessage handling - Remove duplicate type export in preload.ts Co-Authored-By: Claude Opus 4.5 --- apps/desktop/electron/ipc/hub.ts | 4 ++-- apps/desktop/electron/preload.ts | 3 --- src/agent/async-agent.ts | 9 ++++++++- src/agent/runner.ts | 5 +++++ 4 files changed, 15 insertions(+), 6 deletions(-) diff --git a/apps/desktop/electron/ipc/hub.ts b/apps/desktop/electron/ipc/hub.ts index 685f1d01..6412cf97 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 21edbe7c..f554ef4b 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 957509e2..68475555 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 39923470..f66ef159 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.