interrupt to get the same treatment too!

This commit is contained in:
lda
2026-05-21 14:15:52 +07:00 Verified
parent 274bf34edf
commit b619e529fa
15 changed files with 317 additions and 66 deletions
+2 -2
View File
@@ -58,8 +58,8 @@ def _add_step(builder: WorkflowBuilder, step_id: str, step: DraftStep):
return builder.interrupt(
id=step_id,
kind=step.interrupt.kind,
request_map=step.interrupt.request,
out_map=step.interrupt.resume,
request=step.interrupt.request,
resume=step.interrupt.resume,
outcomes=step.interrupt.outcomes,
)
if isinstance(step, DraftJoinStep):
+22 -2
View File
@@ -114,10 +114,30 @@ class DraftInterruptPayload(BaseModel):
model_config = ConfigDict(extra="forbid")
kind: str
request: dict[str, str] = Field(default_factory=dict)
resume: dict[str, str] = Field(default_factory=dict)
request: list[InputBinding] = Field(default_factory=list)
resume: list[OutputBinding] = Field(default_factory=list)
outcomes: list[str] = Field(default_factory=lambda: ["submitted"])
@model_validator(mode="before")
@classmethod
def _coerce_legacy_maps(cls, data: object) -> object:
"""Accept old draft interrupt maps but save canonical binding lists."""
if not isinstance(data, dict):
return data
data = dict(data)
request = data.get("request", [])
resume = data.get("resume", [])
if isinstance(request, dict):
data["request"] = [
{"target": target, "path": path} for path, target in request.items()
]
if isinstance(resume, dict):
data["resume"] = [
{"source": source, "target": target}
for source, target in resume.items()
]
return data
class DraftInterruptStep(BaseModel):
"""Draft step that pauses execution and waits for resume input."""