Skip to content

v0.8.0 — typed workflow state

Choose a tag to compare

@timmcleod timmcleod released this 28 Jul 22:38

Additive release, no breaking changes.

Typed state classes. A workflow can now declare a WorkflowState subclass and the engine hydrates it for every step, prompt closure, condition, predicate, and post-resume continuation:

public function stateClass(): string
{
    return ContractReviewState::class;
}

Typed accessors, IDE completion, and one class that knows where things live — while the storage stays the same schemaless JSON checkpoint. Fully opt-in: workflows without stateClass() behave exactly as before, the base get()/set() API still works on subclasses, and the state class is excluded from the definition hash so adopting one never strands in-flight runs.

WorkflowState::output(). Step outputs addressed by class instead of structural paths, on every state instance:

$state->output(RiskAnalysisAgent::class)?->structured('riskScore');
$state->output(DraftReplyAgent::class)?->text();

Full write-up: docs/typed-state.md.