Skip to content

0.5.0

Pre-release
Pre-release

Choose a tag to compare

@JasonSteving99 JasonSteving99 released this 30 Sep 21:58
· 36 commits to main since this release
4cef523

Highlights

Typed agent sessions for React and Svelte

Build a product UI on a harness agent without writing protocol code. useAgentSession<MyAgent>() (React) or new AgentSession<MyAgent>() (Svelte) gives you one reactive object holding the session's messages, state, subagent tree, approvals and callbacks. Types are generated from the agent's Python class, so sendMessage("play", { cell: 5 }) and agent.states.board are checked at compile time. Sessions survive reloads, stay live across tabs, and pick up where they left off after a server restart. Published to npm as @temporalio/agent-harness-client, @temporalio/agent-harness-react and @temporalio/agent-harness-svelte. Declare observable state on the agent with agent.state(...), and print an agent's schema with temporal-agent-harness schema.

Auto mode for tool approvals

Approve tool calls automatically based on their arguments, using named rule sets you write (AutoApprovalCriteria) and a swappable evaluator. Jev is built in (agent.jev_evaluator(), in the new jev extra). Auto mode only adds calls to the allow list, so a call it doesn't approve still goes to a person. Policies and rules can change per session or mid-conversation, and the console's new decision audit panel shows each verdict, its confidence, and the outcome.

A simpler way to define agents, with typed init data

An agent is now defined entirely with agent.* decorators: @agent.defn, @agent.init, and optional @agent.setup / @agent.teardown hooks. An agent can take typed pydantic init data, which is validated however it's started: the web API, the console, the TypeScript client, AgentClient, or as a subagent.

One path for every message

Everything a caller sends goes to an @agent.accepts handler, and each handler declares what happens when a message arrives mid-turn (MidTurn.ENQUEUE, REJECT or ACCEPT). Every event in the stream carries a message_id, so each event can be traced to the message that caused it.

Console upgrades

Answer callback tools like ask_user right from the chat, using forms built from their schema. Approval cards are clearer, and the Session Manager is now a resizable drawer that doubles as a quick switcher (press S), with many more replay and Logs improvements.