Abstract base class for persistent key-value stores.

Stores enable persistence and memory that can be shared across threads, scoped to user IDs, assistant IDs, or other arbitrary namespaces.

Features:

  • Hierarchical namespaces for organization
  • Key-value storage with metadata
  • Vector similarity search (if configured)
  • Filtering and pagination

Hierarchy (view full)

Constructors

Properties

enqueueOperation: any
nextKey: any
processBatchQueue: any
processingTask: any
queue: any
running: any
store: any

Accessors

  • get isRunning(): boolean
  • Returns boolean

Methods

  • Delete an item from the store.

    Parameters

    • namespace: string[]

      Hierarchical path for the item

    • key: string

      Unique identifier within the namespace

    Returns Promise<void>

  • Retrieve a single item by its namespace and key.

    Parameters

    • namespace: string[]

      Hierarchical path for the item

    • key: string

      Unique identifier within the namespace

    Returns Promise<null | Item>

    Promise resolving to the item or null if not found

  • List and filter namespaces in the store. Used to explore data organization and navigate the namespace hierarchy.

    Parameters

    • Optional options: {
          limit?: number;
          maxDepth?: number;
          offset?: number;
          prefix?: string[];
          suffix?: string[];
      }

      Options for listing namespaces

      • Optional limit?: number
      • Optional maxDepth?: number
      • Optional offset?: number
      • Optional prefix?: string[]
      • Optional suffix?: string[]

    Returns Promise<string[][]>

    Promise resolving to list of namespace paths

    Example

    // List all namespaces under "documents"
    await store.listNamespaces({
    prefix: ["documents"],
    maxDepth: 2
    });

    // List namespaces ending with "v1"
    await store.listNamespaces({
    suffix: ["v1"],
    limit: 50
    });
  • Store or update an item.

    Parameters

    • namespace: string[]

      Hierarchical path for the item

    • key: string

      Unique identifier within the namespace

    • value: Record<string, any>

      Object containing the item's data

    Returns Promise<void>

    Example

    // Simple storage
    await store.put(["docs"], "report", { title: "Annual Report" });

    // With specific field indexing
    await store.put(
    ["docs"],
    "report",
    {
    title: "Q4 Report",
    chapters: [{ content: "..." }, { content: "..." }]
    },
    ["title", "chapters[*].content"]
    );
  • Search for items within a namespace prefix. Supports both metadata filtering and vector similarity search.

    Parameters

    • namespacePrefix: string[]

      Hierarchical path prefix to search within

    • Optional options: {
          filter?: Record<string, any>;
          limit?: number;
          offset?: number;
      }

      Search options for filtering and pagination

      • Optional filter?: Record<string, any>
      • Optional limit?: number
      • Optional offset?: number

    Returns Promise<Item[]>

    Promise resolving to list of matching items with relevance scores

    Example

    // Search with filters
    await store.search(["documents"], {
    filter: { type: "report", status: "active" },
    limit: 5,
    offset: 10
    });

    // Vector similarity search
    await store.search(["users", "content"], {
    query: "technical documentation about APIs",
    limit: 20
    });
  • Start the store. Override if initialization is needed.

    Returns void

  • Stop the store. Override if cleanup is needed.

    Returns Promise<void>