UNPKG

trellis

Version:

Agentic State Engine — event-sourced causal graph with branching, decision traces, and realtime sync for AI-native applications

80 lines 2.82 kB
/** * Graph Context Manager — Persists conversation history as entities in the Trellis graph. * * Implements the ContextManager interface but backs every message with a * kernel entity, making conversations queryable via EQL-S and persistent * across sessions and devices. * * @module trellis/plugins/agent-memory */ import type { LLMMessage } from '../../llm/types.js'; import type { ContextManager } from '../../context/types.js'; import type { TrellisKernel } from '../../core/kernel/trellis-kernel.js'; export interface ConversationOptions { title: string; agentId?: string; model?: string; createdBy?: string; } export declare class GraphContextManager implements ContextManager { private kernel; private conversationId; private messageCounter; /** * In-memory cache of active messages for fast getHistory() reads. * Always kept in sync with the graph via addMessage/prune/resume. */ private cache; /** In-flight graph writes from fire-and-forget addMessage/prune calls. */ private pendingWrites; constructor(kernel: TrellisKernel); /** * Create a new conversation entity and set it as the active context. * Returns the conversation entity ID. */ createConversation(opts: ConversationOptions): Promise<string>; /** * Resume an existing conversation by loading its messages from the graph. */ resumeConversation(conversationId: string): Promise<void>; /** * Get the active conversation ID, or null if none is set. */ getConversationId(): string | null; /** * Archive the active conversation and clear local state. */ archiveConversation(): Promise<void>; addMessage(message: LLMMessage): void; getHistory(): LLMMessage[]; prune(targetTokenCount: number): Promise<void>; summarize(): Promise<string>; injectRagContext(query: string, limit?: number): Promise<void>; calculateTokenCount(message: LLMMessage): number; /** * List all conversations, optionally filtered by status. */ listConversations(status?: 'active' | 'archived'): Array<{ id: string; title: string; status: string; createdAt: string; messageCount: number; }>; /** * Get the total message count for the active conversation. */ getMessageCount(): number; /** * Get the total estimated token count for the active conversation. */ getTotalTokenCount(): number; /** Wait for in-flight graph writes (tests and graceful shutdown). */ awaitPersistence(): Promise<void>; private trackWrite; /** * Load messages from the graph for a given conversation, sorted by timestamp. */ private _loadMessagesFromGraph; } //# sourceMappingURL=graph-context-manager.d.ts.map