Entries before 0.13.0 describe the earlier legacy APIs. For the typed executable DSL (0.13.0 and later), its supported capabilities and recovery limits, see Agent Workflow.
0.14.0 (2026-10-08)
Fluent DSL consolidation with no scheduling or persistence-format change.Workflows.Sequence.build()completes a parent ending in an always-failing/cancelling child. Returning paths still need explicit terminals; unreachable successors remain invalid.- Located diagnostics explain missing/duplicate decision arms, ambiguous or inaccessible typed values, invalid bounds and reused builder stages.
- Six deterministic typed lessons and public Javadocs guide the authoring path. No provider calls are required.
- Store format remains 9; incompatible deployments and older stores are refused without migration. Unresolved effects may repeat and terminal failed/cancelled runs stay terminal.
- Loops, waits/timers, Workflow Journal projection and other deferred capabilities remain subsequent work.
0.13.0 (2026-10-08)
Available on Maven Central. First executable-DSL milestone: typed Steps and derived bindings, nested reusable workflows, exhaustive enum/native Verdict routing, static parallel groups, bounded runtime fan-out and local JDBC recovery.- Not implemented: loops and durable waits/timers.
- Deferred: Workflow Journal projection, first-class non-routing evaluation, visualization and AI authoring.
- Examples are deterministic fixtures, not live provider demonstrations.
- Store format 9 refuses older stores; there is no migration.
- Uncommitted external effects may repeat after a crash.
- Terminal runs stay terminal: failed or cancelled runs cannot be restarted from saved progress.
0.10.0 (2026-06-15)
- Spring AI 2.0.0 GA (clears CVE-2026-41712; spring-ai-client-chat 2.0.0)
0.9.0 (2026-06-06)
- Jackson 2.21.2 alignment, journal 1.4.0 + judge 0.12.0 pins, release 0.9.0
- Migrate judge integration to io.github.markpollack namespace
- Add journal entry for trace path wiring session
0.8.0
Trace file capture through the workflow journal.AgentClientStep now propagates trace file paths from the underlying agent model into the workflow’s StepTransition and journal events. This closes the gap between “the agent ran” and “here’s exactly what the agent did” — every tool call, token count, and thinking block is preserved in a JSONL trace file, and the path to that file is recorded in the workflow journal.
AgentClientStep trace wiring
When the backingAgentClient implementation returns a trace path via executeForResult(), AgentClientStep writes it to AgentContext.TRACE_PATH and the executor propagates it through to StepTransition.tracePath():
What changed
AgentClient.executeForResult()— new default method returningExecutionResult(text, tracePath). Backward compatible: lambdas still work, trace path is null.AgentClientStep— callsexecuteForResult(), writesTRACE_PATHto context viaupdateContext()StepTransitionandWorkflowStepEvent— carry optionaltracePathfieldJdbcTraceRecorder— newtrace_pathcolumn instep_transitionstableAgentContext.TRACE_PATH— new well-known context keyAgentContext.Builder.without()— remove a key from context (used internally to clear per-step trace paths)ClaudeStepjavadoc — now recommendsAgentClientStepfor experiments needing trace capture
0.7.0
Managed Agents as a step runtime. The newManagedAgentStep delegates workflow steps to Anthropic’s Managed Agents API. The workflow graph stays in charge — but specific steps can run in Anthropic’s cloud sandbox with full tool access (bash, file I/O, web search).
This proves the core thesis: workflow is portable, execution substrate is pluggable. The same workflow definition can run steps locally, via Temporal, or in Anthropic’s hosted infrastructure — swap a single step, zero changes to the graph.
ManagedAgentStep
Reference a pre-created agent and environment:- Uses the official
com.anthropic:anthropic-javaSDK directly — no wrapper layer - Follows the
A2AStepimmutable pattern: factory methods, copier methods forname()/timeout(),SessionRunnerfunctional interface for testability - One session per
execute()call — agents are reused, sessions are ephemeral - Stream-first SSE pattern: opens the event stream before sending the user message, collects
agentMessagetext blocks, breaks onsessionStatusIdleorsessionStatusTerminated
ManagedAgentStep):