Context Layer API
fmemory provides durable state and transcript persistence for Fiddlesticks.
It is the persistence layer used by fharness for initializer/coding-run artifacts and by fchat (through an adapter) for conversation history.
Responsibilities
- Persist session bootstrap artifacts (manifest, feature list, progress, run checkpoints)
- Persist transcript messages
- Expose a
MemoryBackendcontract for harness logic - Adapt memory transcript storage to
fchat::ConversationStore
fmemory does not:
- Execute model calls (
fprovider) - Orchestrate turns (
fchat) - Execute tools (
ftooling) - Decide multi-run harness strategy (
fharness)
Add dependency
[]
= { = "../fmemory" }
Core types
MemoryBackend: async persistence traitInMemoryMemoryBackend: default in-crate implementationMemoryConversationStore: adapter implementingfchat::ConversationStoreSessionManifest: harness session metadata (+ schema/harness versions)FeatureRecord: feature checklist itemProgressEntry: per-run progress log entryRunCheckpoint: run lifecycle status recordBootstrapState: manifest + feature/progress/checkpoint aggregate
Session initialization guards
MemoryBackend includes explicit initializer-safe methods:
is_initialized(session_id)initialize_session_if_missing(...)
initialize_session_if_missing(...) is idempotent:
- returns
truewhen it creates state for the first time - returns
falsewhen state already exists (no overwrite)
Basic backend usage
use SessionId;
use *;
async
fchat integration adapter
MemoryConversationStore lets fchat use fmemory without direct store duplication:
use Arc;
use *;
let backend: = new;
let store = new;
let _ = store;
Versioning fields
SessionManifest includes:
schema_version(default:1)harness_version(default:"v0")
These support forward migration for future harness behaviors.
Error model
MemoryErrorKind variants:
StorageNotFoundInvalidRequestOther