Skip to main content
Defined in: core/provider.ts:1500 Persistence contract of the bot: message log, chats, contacts, flow checkpoints, AI history, delivery cursors and (optionally) ctx.user data. MemoryStore is the reference implementation; @botmesh/sqlite-store and @botmesh/redis-store provide durable ones. Pass a store as BotConfig.store.

Methods

saveMessage()

Defined in: core/provider.ts:1501

Parameters

Returns

Promise<void>

getMessage()

Defined in: core/provider.ts:1502

Parameters

Returns

Promise<StoredMessage | undefined>

getMessagesByChat()

Defined in: core/provider.ts:1503

Parameters

Returns

Promise<StoredMessage[]>

deleteMessage()

Defined in: core/provider.ts:1504

Parameters

Returns

Promise<void>

upsertChat()

Defined in: core/provider.ts:1510 Shallow-merge chat onto the stored record. An own field set to undefined UNSETS that field, so a partial upsert must omit what it does not know (the Bot does).

Parameters

Returns

Promise<void>

getChat()

Defined in: core/provider.ts:1511

Parameters

Returns

Promise<StoredChat | undefined>

listChats()

Defined in: core/provider.ts:1512

Returns

Promise<StoredChat[]>

deleteChat()

Defined in: core/provider.ts:1513

Parameters

Returns

Promise<void>

upsertContact()

Defined in: core/provider.ts:1516 Shallow-merge contact onto the stored record; same undefined = unset rule as upsertChat.

Parameters

Returns

Promise<void>

getContact()

Defined in: core/provider.ts:1517

Parameters

Returns

Promise<StoredContact | undefined>

listContacts()

Defined in: core/provider.ts:1518

Returns

Promise<StoredContact[]>

deleteContact()

Defined in: core/provider.ts:1519

Parameters

Returns

Promise<void>

getCursor()?

Defined in: core/provider.ts:1522 Delivery cursor for long-poll/webhook transports (Telegram update_id).

Parameters

Returns

Promise<string | undefined>

setCursor()?

Defined in: core/provider.ts:1523

Parameters

Returns

Promise<void>

getConversation()

Defined in: core/provider.ts:1526

Parameters

Returns

Promise<AIMessage[] | undefined>

setConversation()

Defined in: core/provider.ts:1527

Parameters

Returns

Promise<void>

clearConversation()

Defined in: core/provider.ts:1528

Parameters

Returns

Promise<void>

getCheckpoint()

Defined in: core/provider.ts:1530

Parameters

Returns

Promise<FlowCheckpoint | undefined>

setCheckpoint()

Defined in: core/provider.ts:1531

Parameters

Returns

Promise<void>

clearCheckpoint()

Defined in: core/provider.ts:1532

Parameters

Returns

Promise<void>

listCheckpoints()

Defined in: core/provider.ts:1533

Returns

Promise<[string, FlowCheckpoint][]>

setCheckpointIf()?

Defined in: core/provider.ts:1544 Compare-and-set checkpoint write (multi-replica coordination). Succeeds (resolves true) only when the stored row’s FlowCheckpoint.revision equals expectedRevision, where 0 means “no row, or a row without revision”; otherwise the row is left untouched and it resolves false. ONE atomic statement per store (never a read-modify-write), so two replicas racing on one key see exactly one winner. expectedRevision is a non-negative integer (RangeError otherwise). Optional: a store without it keeps the local-fence behaviour; all six built-in stores implement it and pass the shared conformance block (test-utils/store-conformance.ts).

Parameters

Returns

Promise<boolean>

clearCheckpointIf()?

Defined in: core/provider.ts:1550 Conditional delete: true when the row is absent, or its revision (0 without one) matched expectedRevision and it was deleted; false when a different revision is stored (the row is left untouched). Same atomicity rule as setCheckpointIf.

Parameters

Returns

Promise<boolean>

getUserData()?

Defined in: core/provider.ts:1563 Read one entry. MUST return undefined when the entry is missing OR its expiresAt is <= Date.now() (lazy expiry — expired rows may still exist physically until purged).

Parameters

Returns

Promise<UserDataEntry | undefined>

setUserData()?

Defined in: core/provider.ts:1569 Upsert one entry as a SINGLE atomic write that replaces both value and expiresAt (no read-modify-write inside the store). An entry whose expiresAt is already in the past may be dropped instead of written.

Parameters

Returns

Promise<void>

deleteUserData()?

Defined in: core/provider.ts:1575 Delete one key (namespace + key), one whole namespace (key omitted) or every namespace of the user (namespace omitted; key is then ignored). Deleting missing data is a no-op.

Parameters

Returns

Promise<void>

listUserData()?

Defined in: core/provider.ts:1577 Live (non-expired) entries of a user — all namespaces, or just namespace. Order unspecified.

Parameters

Returns

Promise<UserDataEntry[]>

purgeExpiredUserData()?

Defined in: core/provider.ts:1583 Physically remove entries whose expiresAt <= now (default Date.now()) across the whole store; resolves with how many were removed. Stores with native expiry (Redis) resolve 0.

Parameters

Returns

Promise<number>

start()

Defined in: core/provider.ts:1585

Returns

Promise<void>

stop()

Defined in: core/provider.ts:1586

Returns

Promise<void>