Files
lda-wf/src/wf_api/draft_updates.py
T

27 lines
926 B
Python

from __future__ import annotations
from typing import Self
from pydantic import BaseModel, ConfigDict, Field, model_validator
from wf_core.models.steps import StepInputBinding
class CapabilityStepUpdate(BaseModel):
"""Presence-aware patch for one existing capability-backed draft step."""
model_config = ConfigDict(extra="forbid")
desc: str | None = Field(default=None, min_length=1)
retry: int | None = Field(default=None, ge=0)
timeout_seconds: int | None = Field(default=None, gt=0)
input: list[StepInputBinding] | None = None
@model_validator(mode="after")
def validate_patch_shape(self) -> Self:
if not self.model_fields_set:
raise ValueError("capability step update requires at least one field")
if "input" in self.model_fields_set and self.input is None:
raise ValueError("capability step update input must be a list")
return self