import type { AgentTool } from '@earendil-works/pi-agent-core'; import type { MemoryCapabilities, MemoryDeleteRequest, MemoryListRequest, MemoryProviderManifest, MemoryReadRequest, MemoryReadResult, MemorySearchRequest, MemorySearchResult, MemorySyncEvent, MemoryUpdateRequest, MemoryWriteRequest, MemoryWriteResult, MemoryRecord } from './types.js'; export interface MemoryProviderInitOptions { workspace?: string; agentWorkspace?: string; agentId?: string; sessionId?: string; config?: Record; [key: string]: unknown; } export interface MemoryProvider { readonly id: string; readonly displayName?: string; readonly manifest?: MemoryProviderManifest; readonly capabilities: MemoryCapabilities; isAvailable(): boolean; initialize(sessionId: string, options?: MemoryProviderInitOptions): Promise | void; /** Static text merged into the system prompt. */ systemPromptBlock?(): string; queuePrefetch?(query: string, options?: { sessionId?: string; }): void; sync?(event: MemorySyncEvent): Promise | void; search?(request: MemorySearchRequest): Promise; read?(request: MemoryReadRequest): Promise; get?(id: string): Promise; list?(request: MemoryListRequest): Promise; write?(request: MemoryWriteRequest): Promise; update?(request: MemoryUpdateRequest): Promise; delete?(request: MemoryDeleteRequest): Promise; getToolSchemas?(): AgentTool[]; /** JSON string result for tool calls routed by name (when not using inline AgentTool.execute only). */ handleToolCall?(toolName: string, args: Record): Promise; shutdown(): Promise | void; onTurnStart?(turnNumber: number, message: string, metadata?: Record): void; onSessionEnd?(messages: unknown[]): void; onPreCompress?(messages: unknown[]): string; }