v0.3.18
What's Changed
Opt-in file persistence for the memory plugin (#111, #315)
The memory plugin can now persist extracted memories across requests. Set OPTILLM_MEMORY_FILE to a path to opt in; when unset, behaviour is byte-for-byte unchanged (in-RAM, reset per request).
- Loads any previously saved items on init and writes after every
add(). - Atomic writes (temp file +
os.replace) so a crash mid-write can't corrupt the store. - A missing/corrupt/non-list file degrades gracefully to an empty store — persistence can never fail a request. Loaded items are filtered to strings and bounded by
max_size.
CI: Frame SAST scan of PR-changed files
Added a Security Scan (Frame SAST) workflow that runs the Frame neuro-symbolic SAST tool (pinned) on the Python files changed by each pull request. Scanning only changed files surfaces newly introduced issues without failing on pre-existing findings; the job fails only on high/critical severity.
Full Changelog: v0.3.17...v0.3.18