Repository navigation
v0.17.1
·
223 commits
to master
since this release
0.17.1 (2026-11-12)
⚠ BREAKING CHANGES
- memory: a souled agent's memory and wiki pages are kept per user, in a new
conversationscope. Recall across users and across sessions ends, and compiled pages are rows of the newmemory_pagestable instead of files. This change was approved as breaking and was released under a patch number by mistake. Read the migration notes of #767 before moving from 0.17.0.
Features
- guardrails: a guard can ask to run first, and a closed failure names its cause (142814d)
- guardrails: a typed moderation context (917f1dd)
- guardrails: an image guard that runs match checks before model checks (30a1981)
- guardrails: frame text a person wrote as data (68c265c)
- guardrails: image guard (#805) (fddec4d)
- guardrails: moderateContent, one entry point for content between people (53b4655)
- guardrails: the posture a moderation entry point runs a guard under (68cae37)
- memory: a recall pipeline with exact-words and recency legs, one eligibility gate, and the store's by-id load and listener (38ab7c5)
- memory: add the conversation scope and its key (e18641f)
- memory: compile the wiki per scope into each subject's own pages (2e2cc10)
- memory: keep each subject's wiki pages as rows with their chunks (ab89947)
- memory: read_memory_page answers the asker's own pages and the operator's alone (0b23711)
- memory: register each conversation scope with its first trace and read scopes by their column (e5bd377)
- souls: add a compile target, a per-account memory policy and a screen hook to souled memory (5328125)
- souls: file and recall a souled agent's memory per subject (9e6e857)
- souls: index operator pages under the operator key and leave earlier compiled pages out of the index, the prompt and recall (e199a8b)
Bug Fixes
- guardrails: a match check's hold, block or failure no longer stops the other match checks, and the image guard starts nothing past its deadline (8d935f0)
- guardrails: a signal that answers no verdict is skipped like one that threw, and the docs say what a model check's quarantine ends (7481c74)
- guardrails: an action must be a string to count, and a malformed-answer block names its guard (8d215b8)
- guardrails: moderateContent refuses a mode it does not know (8693573)
- guardrails: the dispatcher aborts a deadline signal when it stops waiting, and the image guard starts nothing after it (e45550a)
- guardrails: the dispatcher settles a timeout before it aborts the deadline signal (1c7fc51)
- guardrails: the image guard keeps its own copy of each validated check (399b009)
- guardrails: the image guard limits an image's bytes, counts an answer without a code as no answer, keeps only numeric scores and decodes only base64 data URLs (a39e0de)
- guardrails: the library marks its own failure block, a removed text stays removed, an undefined answer is malformed, tool-call screens answer first, unnamed streaming screens keep their own count, a label line breaks template tokens (1383d61)
- logging: list the error a page write throws when its row changed under it (9a0b0bb)
- memory: a cached recall trace stored again elsewhere takes the row's provenance with its policy (5651f47)
- memory: a cached recall trace stored again under the same policy takes the row's provenance; this process's own verification stays (6910c14)
- memory: a cached recall trace takes its row's trust policy; persisting a trace's metadata tells the store's listeners (d59c884)
- memory: a cached trace stored again elsewhere with other words is returned as its row holds it, words and trust together (d911b54)
- memory: a cached trace whose row was stored again without a policy loses the one it held (aef4f3e)
- memory: a row written since with another type or creation time is returned as the row holds it, so the gate reads what the query selected (5132f70)
- memory: a trace a sibling store revived loses its policy when its row was stored again without one (6355fe0)
- memory: carry the scope registry and the wiki pages through a JSON export and import (014cd9d)
- memory: check cached recall traces against their rows, refile the in-process index on a scope move, gate in-process matches before the limit (f68708c)
- memory: delete a page row only while it holds the chunks just deleted (576e01f)
- memory: keep compile keys, session policies, page writes, imports and the compile watermark per subject (a197366)
- memory: keep conversation scopes apart in the search tool, consolidation, exports and page writes (8c9e099)
- memory: keep the recall report's legs optional for managers that build their own (41afe3a)
- memory: name the compile's checked ids apart from its batch read (9543330)
- memory: order policy answers by when they were asked, recheck after screening, compare page rows on write, and order deletes with compiles (485ae59)
- memory: per-turn policy decisions, the host's latest answer, provider-only compiles and shared store coordination (3bc4fc8)
- memory: read a JSON export from one consistent view of the database (1842546)
- memory: read a scope's compile watermark in the scope's own turn (2bc3eac)
- memory: read the subject the runtime names before the user id when read_memory_page finds its asker (c403af5)
- memory: refuse a brain file whose page or registry rows name another brain (7812d3a)
- memory: refuse a conversation key for an id that holds a lone surrogate (cf7e2da)
- memory: refuse the store's options beside cognitive memory on every soul path, and find duplicates past page chunks (dc32d75)
- memory: the by-id load compares a row with what the store last wrote or read, and leaves out a trace deleted during the call (96549cc)
- memory: the by-id load reads a changed row again inside the trace's turn, so a store() that lands meanwhile keeps what it wrote (43ba08d)
- memory: the durable recall legs read the next page of rows when the gate drops a page's, up to four pages (bd37aa7)
- soul: keep the wiki folder's narrowed type inside the guarded attach (19307fd)
- soul: refuse an agent id with no operator key before the store opens, and close the store on a failed open (4f374fd)
- wiki: index the operator's pages again when the folder's agent id changes (975008a)
Code Refactoring
- memory: write the wiki's events through the memory module's one log handle (4739c08)