Components
2 available- conversationAtomic conversation memory for llm_chat — keyed by conversationId, backed by bbolt on the PVC. append does load+append+trim+save in ONE transaction, so two concurrent turns can't lose each other's messages (unlike a get→append→put chain around document_store). Intended wiring: append the user turn → feed the response's messages into llm_chat → append the assistant turn; or make a single append of both turns after llm_chat responds. Every append/get response carries the full current window, ready to feed llm_chat directly. get on an unknown conversationId returns an empty messages array — not an error — so start a cold conversation by appending the user turn first (that also satisfies llm_chat's minItems:1). Message shape is whatever llm_chat uses ({role, content, ...}); objects pass through unchanged. Settings.MaxMessages windows each conversation to the most recent N messages (default 50; 0 = unlimited, unbounded growth). clear deletes a conversation.
- document_storeEmbedded key/value store backed by bbolt + PVC. Four operation ports (put, get, delete, find) each with a matching result port. Use as the storage layer for chat history, agent scratchpads, intermediate flow state — anywhere SDK State's 900KB cap is too tight. Settings.Collections declares named buckets so typo'd collection names fail at config time. Single-replica only (bbolt locks the file). For HA persistence use postgres_* or redis_* from database-module-v0.
Release notes
Document store — persist and query JSON documents