0.19

An agent's log stores each message once, so agent sessions from earlier releases don't fold.

Start new agent sessions

0.19 stores each message's content once, in the ai.control.requested command that brought it in. The AI reducers advance to a2.ai.state.v27, a2.ai.context.v7, and a2.ai.control.v6, and a log written before 0.19 doesn't fold: reduceAIState() and deriveUIMessages() throw on an ai.message.created that no command explains. Start new agent sessions after you deploy. Earlier sessions keep their events in history, but their state can't be read.

Payloads and types

Code that reads the AI log directly changes with it:

  • ai.message.created records an admission as { messageId, role, generate? }, without the message. MessageCreatedPayload takes no type argument.
  • ai.control.committed carries no message content. Queued inputs and AIState.active.input are InputRefs, { id, role, generate, afterStepOf? }, and ActiveTurn takes no type argument. AIState.inbox.items keep their message, now with role.

Provider tools under fx() and pi()

agent() throws a TypeError when a provider-defined tool (type: 'provider', such as a provider's web search) is passed with fx() or pi(). Before, both harnesses dropped it without a word, so the model never saw it. Take it out of those agents' tools.