@@ -41,6 +41,33 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
4141 without replacing tool-based output, weakening schema validation, or
4242 changing authored system prompts.
4343
44+ ### Changed
45+
46+ - ** Step definitions split into concrete models with a discriminated union**
47+ (#517 ) — the single monolithic ` AgentDef ` that carried every step type's
48+ fields is now a set of focused Pydantic models: ` AgentDef ` (provider-backed
49+ LLM agents only), ` HumanGateStepDef ` , ` QuestionsStepDef ` , ` ScriptStepDef ` ,
50+ ` MCPStepDef ` , ` WaitStepDef ` , ` SetStepDef ` , ` TerminateStepDef ` , and
51+ ` WorkflowStepDef ` , united by the static ` StepDef ` union discriminated on
52+ ` type ` . Every model owns exactly the fields meaningful for its kind with
53+ ` extra="forbid" ` , so a misplaced field is rejected next to its step instead
54+ of being silently ignored, and the published JSON Schema now exposes a
55+ ` oneOf ` + ` discriminator ` mapping with per-variant
56+ ` additionalProperties: false ` for editors and tooling. Compatibility:
57+ workflow YAML is unchanged — an omitted ` type ` or an explicit ` type: null `
58+ still loads as an LLM agent (now canonicalized to ` type: "agent" ` at parse
59+ time) — and ` AgentDef(...) ` keeps working for LLM agents, including
60+ ` AgentDef(type=None, ...) ` . What changed: constructing a non-LLM step
61+ programmatically via ` AgentDef(type="script", ...) ` no longer works — use
62+ the named step class (e.g. ` ScriptStepDef(...) ` ) — and a field that belongs
63+ to a different step type now fails with Pydantic's standard
64+ ` extra_forbidden ` error rather than the previous custom
65+ ` "<type> agents cannot have '<field>'" ` messages. Human gates additionally
66+ lost the inert ` model ` field and can no longer appear as a ` for_each `
67+ inline agent (concurrent iterations would compete for one interactive
68+ channel; route to a gate from the group's ` routes: ` instead). All classes
69+ are exported from ` conductor.config ` and ` conductor.config.schema ` .
70+
4471## [ 0.1.37] ( https://github.com/microsoft/conductor/compare/v0.1.36...v0.1.37 ) - 2026-09-09
4572
4673### Added
0 commit comments