Skip to content

Storage

Defined in: src/storage/storage.ts:93

A backend for storing and retrieving raw bytes under string keys.

The interface is deliberately minimal — four operations over opaque Uint8Array values. Keys are opaque strings — implementations must round-trip the bytes they are given unchanged. The shipped backends interpret / as a logical separator (collapsing runs, rejecting ..), but custom backends may apply their own key scheme.

The ListQuery type parameter controls what list accepts. It defaults to string (a key prefix), which every backend supports. Implementations may widen it to accept a richer query object (e.g. a DynamoDB partition/sort-key filter) while still accepting a plain string for SDK-internal callers.

The SearchQuery type parameter controls what search accepts. It defaults to string (a natural-language query), which every backend interprets in its own way (keyword scan, vector similarity, full-text index). Implementations may widen it to accept a richer query object (e.g. a pre-computed embedding vector with filters).

Implement this to add a custom backend; the SDK ships InMemoryStorage, LocalFileStorage, and S3Storage.

Type ParameterDefault type
ListQuerystring
SearchQuerystring
write(key, data): Promise<void>;

Defined in: src/storage/storage.ts:101

Stores data under key, overwriting any existing value.

ParameterTypeDescription
keystringOpaque string key identifying the value
dataUint8ArrayRaw bytes to persist

Promise<void>

StorageError if the write fails


read(key): Promise<Uint8Array<ArrayBufferLike>>;

Defined in: src/storage/storage.ts:110

Retrieves the bytes previously stored under key.

ParameterTypeDescription
keystringThe key to read

Promise<Uint8Array<ArrayBufferLike>>

The stored bytes, or null if no value exists for key

StorageError if the read fails for a reason other than a missing key


delete(key): Promise<void>;

Defined in: src/storage/storage.ts:118

Deletes the value stored under key. A no-op if the key does not exist.

ParameterTypeDescription
keystringThe key to delete

Promise<void>

StorageError if the delete fails


list(query): Promise<string[]>;

Defined in: src/storage/storage.ts:134

Lists keys matching the given query.

When ListQuery is string (the default), this is a prefix match — returns full keys (not the suffix after the prefix), sorted lexicographically. An empty string lists every key.

Implementations may accept richer query objects (e.g. partition + sort-key filters) while still supporting a plain string prefix for SDK-internal callers.

ParameterTypeDescription
queryListQueryA string prefix or backend-specific query object

Promise<string[]>

The matching keys, sorted ascending

StorageError if the listing fails


optional namespace(prefix): Storage;

Defined in: src/storage/storage.ts:145

Returns a view of this storage with all keys prefixed by prefix. The original storage is not mutated.

Optional — shipped backends implement this, custom backends may omit it.

ParameterTypeDescription
prefixstringPrefix to prepend to all keys

Storage

A Storage view scoped to the given prefix


optional search(query): Promise<StorageSearchResult[]>;

Defined in: src/storage/storage.ts:162

Searches stored content by query.

When SearchQuery is string (the default), the query is a natural-language string and how it is interpreted is backend-specific: keyword/lexical scan, full-text index, or vector similarity (the backend embeds the query internally).

Implementations may accept richer query objects (e.g. a pre-computed embedding vector with metadata filters) while still accepting a plain string for SDK-internal callers.

Optional — when absent, consumers fall back to client-side search.

ParameterTypeDescription
querySearchQueryA string query or backend-specific query object

Promise<StorageSearchResult[]>

Matched keys with relevance scores, ranked best-first