Repository navigation
v0.17.0
·
652 commits
to master
since this release
0.17.0 (2026-11-11)
⚠ BREAKING CHANGES
- memory: send recalled text as a data block in a user message, not as a system message
- memory: run the memory hooks once per turn on agent(), and log a failing hook as an event
Features
- guardrails: a guard lists the codes it can answer (e406065)
- guardrails: a refusal outranks a hold, a hold outranks the rest (d00bccc)
- guardrails: dispatcher failures as typed events (d0ccd6d)
- guardrails: hold, outcome and reported-evaluation types (24dddc9)
- logging: every line writes an error through the listed fields (a256658)
- logging: listed error fields, the closed lists of error types and codes (8601dc8)
- memory: a context argument for the memory hooks and the recall data block (566a15b)
- memory: clamp the memory block per model hop and deliver it whole through PromptEngine (1aed939)
- memory: hand tools the session's user and memory subject on agent(), and the subject on gmi() (9b0857c)
- memory: run the memory hooks once per turn on agent(), and log a failing hook as an event (7edf37c)
- memory: send recalled text as a data block in a user message, not as a system message (dd50dfd)
- memory: tell the memory hooks which session, user and agent a turn serves on agent() (8d89a65)
- memory: tell the memory hooks which session, user and agent a turn serves on gmi() (f61a10a)
- memory: tell the tools of a generateText or streamText call the caller it runs for (1353a08)
- souls: quote the wiki compile's records as JSON, labelled as data (b11866e)
- telephony: answer an inbound Telnyx call with its media stream (b642a2e)
Bug Fixes
- config: keep a GMI pair the host sets on the factory's defaults object (c4fec3c)
- config: run a model-less persona on the default provider's model, with one default per provider (527d334)
- config: tell a factory-built GMI default from one the host writes (cf36106)
- gmi: a pinned model stays when the turn names its provider in another letter case (5bc7bd1)
- gmi: a provider named without a model runs on that provider's default model (766ac30)
- gmi: report the history a session's request leaves out (ffa90c8)
- gmi: the GMI's config carries the runtime's model and provider as one pair (0126845)
- logging: list the error names and codes the library sets where it throws (bebb2e8)
- logging: the error lists are read-only views, list the filter code a provider error is given, and note an ignored hold for each unnamed guard (c4f3d88)
- memory: an anonymous id names no user on gmi() reopen, tools and end-user id; a malformed recall fails as a hook (61fea38)
- memory: call observe with two arguments when a turn has no context (1dafcf9)
- memory: keep a session handle's user once its id is reopened for another (fb3ec6f)
- memory: keep only string fields of a recalled record so rendering the block never fails (54749ef)
- memory: keep the paused hop's record for the continuation, send the block to a host's own prompt engine, record a failed re-render as one, and count and reduce retrieved context only as sent (0851c5d)
- memory: send retrieved context through the Anthropic and completion templates, and name a beforeModelCall that replaced the prompt in the delivery record (80158e3)
- orchestration: a node a resume marks complete saves no checkpoint of its own (91c6ec3)
- orchestration: save before, after and every_node checkpoints in a resumed run (f6e8931)
- souls: name a soul that gives no id by learning.agentKey (bbeee2c)
- telephony: ask Telnyx once when two deliveries of one call.speak.ended hang up a notify call (90873f6)
- telephony: end a call before asking the carrier to hang it up (634806c)
- telephony: end a call once in the legacy event handling (86eb23e)
- telephony: hang up a Telnyx notify call once its message has been spoken (e69f8bf)
- telephony: keep a durable notify hangup recoverable until it commits (debe6b0)
- telephony: refuse a notify webhook a disposed manager cannot hang up (a81d509)
- telephony: speak a Telnyx notify call's message when the call is answered (a4b201c)
- telephony: stream a Telnyx call as PCMU and report a refused Telnyx hangup (2304a0d)
- voice-pipeline: pair each speech end with its own final by item (5f4c6ab)
- voice: a flush that stops waiting commits only the audio pushed before it returned (18a6f31)
- voice: keep a flush waiting when the adopted connection's socket is already closing (b010d84)
- voice: keep a flush's commit when the OpenAI Realtime socket is closing (e11d073)
- voice: keep a flush's deferred commit when the adopted socket is closing with nothing held (cfbb835)