Changelog

Copy Markdown

0.1.0-rc.3 (2026-11-03)

Changed

  • A model call waits up to five minutes for an answer, and as long on a stream gone quiet. Set :model_timeouts on start_agent/2 to change them.
  • durable_server is pinned to 0.1.7: list/1 reads its backend's listing.

Fixed

  • list/1 reads only keys from the backend, not every agent's state.

0.1.0-rc.2 (2026-11-02)

Breaking

0.1.0-rc.1 (2026-10-30)

  • Durable agents that run a model and its tools in a loop, kept in any DurableServer backend. They pick up where they left off after a crash. WardrikCore.Backends.MemoryStore keeps them in memory for tests.
  • Capabilities that hand an agent its tools, and middleware that wraps every turn, model call and tool call. Middleware can answer a step, or park it until a person resumes it.
  • Tool annotations, like read_only and idempotent. A call lost in a crash is repeated only if its tool is idempotent, and parks as :in_doubt otherwise.
  • Principals, as in IAM. The turn that answers a message acts on behalf of whoever sent it, and each step's span says so as enduser.id.
  • WardrikCore.Credentials and WardrikCore.Keys, which give tools and model calls the credentials and keys of whoever the agent works for. A credential not yet granted parks the call on a WardrikCore.Authorization.
  • WardrikCore.subagent/3, which runs a subagent on its parent's model, middleware and tools.
  • WardrikCore.Event, which sends each event to :telemetry and to the agent's WardrikCore.Events sink. Text streams as [:wardrik_core, :message, :delta].
  • Every turn a trace and every step a span, with what each tool reports it cost. WardrikCore.evaluate asks an evaluation model questions about a step.