@sffmc/memory
v0.16.0
Published
Memory composite — FTS5 SQLite recall + chokidar file watcher + opt-in checkpoint/judge/dream
Readme
@sffmc/memory
This is the memory composite. It composes 2 sub-features:
memory-core(SQLite + context recall, inlined), pluscheckpoint/judge/dreamfrom@sffmc/utilities(all opt-in, disabled by default — flip flags in~/.config/SFFMC/extra.yamlper feature). The standalonememorypackage now exports the composite that wires the 4 sub-features viamergeHooks().
Sub-features
Memory composes 2 sub-features via mergeHooks():
| Sub-feature | Description |
|---|---|
| memory-core | FTS5 SQLite index + chokidar watcher + context-recall injection (internal, in packages/memory/src/plugin.ts) |
| @sffmc/utilities | 3 opt-in named tools: extra_checkpoint, extra_judge, extra_dream (disabled by default; enable per-feature in ~/.config/SFFMC/extra.yaml) |
Opt-in configuration
To enable @sffmc/utilities features:
# opencode.json
{
"plugins": {
"@sffmc/memory": {
"extra": {
"checkpoint": true, // cross-turn state snapshot
"judge": true, // /max verdict scoring
"dream": true // periodic state summary
}
}
}
}What it does
Gives your agent persistent memory across sessions. Indexes project docs (memory-bank/*.md, AGENTS.md, root *.md) into an FTS5 SQLite database and injects a structured "Context Recall" block at the start of each session. A chokidar watcher re-indexes changed files. The recall block is composed of top-importance memory rows, an AGENTS.md parse, and a tail of recent messages — all sized by the per-section budget.
Install
This plugin is loaded by the SFFMC monorepo's sandbox config. To use standalone:
// ~/.config/opencode/opencode.json
{
"plugin": [
"file:///path/to/SFFMC/packages/memory/src/index.ts"
]
}Configuration
Edit ~/.config/SFFMC/memory.yaml:
# Memory plugin config
storage_path: ~/.local/share/SFFMC/memory/index.sqlite
recon_budgets:
memory: 6144
checkpoint: 6144
task_tree: 4096
tail: 8192
agents: 8192
memory_paths:
- memory-bank/
- AGENTS.md
- "*.md"
default_importance: 0.5Hooks registered
| Hook | Purpose |
|---|---|
| config | Initialize FTS5 DB and start chokidar watcher |
| event | Mark reconNeededThisSession on session.created |
| experimental.chat.messages.transform | Build Context Recall block, unshift as system message (once per session) |
Tests
bun test packages/memory/8 test files, ~120 cases across memory + extra tests (memory.test.ts + index.test.ts).
License
MIT
