From 2a20961a149f7a3521f6ffb21cfece601a158a5c Mon Sep 17 00:00:00 2001 From: Yuqing Bai Date: Sun, 5 Apr 2026 10:04:04 +0800 Subject: [PATCH] feat(storage): add KVStore, MessageStore, and StoredMessage interfaces --- src/types.ts | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/src/types.ts b/src/types.ts index df7fa3a..b5a8c0d 100644 --- a/src/types.ts +++ b/src/types.ts @@ -271,6 +271,8 @@ export interface TeamConfig { readonly agents: readonly AgentConfig[] readonly sharedMemory?: boolean readonly maxConcurrency?: number + readonly store?: MemoryStore + readonly messageStore?: MessageStore } /** Aggregated result for a full team run. */ @@ -433,6 +435,14 @@ export interface MemoryEntry { readonly createdAt: Date } +export interface KVStore { + get(key: string): Promise + set(key: string, value: string): Promise + delete(key: string): Promise + list(): Promise + clear(): Promise +} + /** * Persistent (or in-memory) key-value store shared across agents. * Implementations may be backed by Redis, SQLite, or plain objects. @@ -445,6 +455,31 @@ export interface MemoryStore { clear(): Promise } +// --------------------------------------------------------------------------- +// Message storage +// --------------------------------------------------------------------------- + +export interface MessageFilter { + to?: string + from?: string +} + +export interface StoredMessage { + readonly id: string + readonly from: string + readonly to: string + readonly content: string + readonly timestamp: string +} + +export interface MessageStore { + save(message: StoredMessage): Promise + get(messageId: string): Promise + query(filter: MessageFilter): Promise + markRead(agentName: string, messageIds: string[]): Promise + getUnreadIds(agentName: string): Promise> +} + // --------------------------------------------------------------------------- // LLM adapter // ---------------------------------------------------------------------------