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 <noreply@anthropic.com>
This commit is contained in:
Jiang Bohan 2026-02-04 16:51:07 +08:00
parent fbe55ab11e
commit a098a78942
4 changed files with 15 additions and 6 deletions

View file

@ -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)

View file

@ -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<typeof ipcRenderer.on>) {

View file

@ -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();
}
}

View file

@ -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.