feat: add interrupt schema builder helpers

This commit is contained in:
lda
2026-07-01 06:02:33 +07:00 Verified
parent e7099b330a
commit c379789977
2 changed files with 46 additions and 8 deletions
+19 -8
View File
@@ -603,6 +603,8 @@ class WorkflowBuilder:
request: Sequence[InputBindingArg] | None = None,
resume: Sequence[OutputBindingArg] | None = None,
outcomes: list[str] | None = None,
request_schema: Mapping[str, Any] | None = None,
resume_schema: Mapping[str, Any] | None = None,
) -> InterruptNode: ...
@overload
@@ -615,6 +617,8 @@ class WorkflowBuilder:
request_map: MapArg | None = None,
out_map: MapArg | None = None,
outcomes: list[str] | None = None,
request_schema: Mapping[str, Any] | None = None,
resume_schema: Mapping[str, Any] | None = None,
) -> InterruptNode: ...
def interrupt(
@@ -627,6 +631,8 @@ class WorkflowBuilder:
request_map: MapArg | None = None,
out_map: MapArg | None = None,
outcomes: list[str] | None = None,
request_schema: Mapping[str, Any] | None = None,
resume_schema: Mapping[str, Any] | None = None,
) -> InterruptNode:
if request is not None and request_map is not None:
raise TypeError("cannot mix canonical request with deprecated request_map")
@@ -652,14 +658,19 @@ class WorkflowBuilder:
if resume is not None
else _canonical_output_bindings(normalize_output_mapping(out_map))
)
node = InterruptNode(
id=id or self._next_step_id(f"interrupt_{slug_id(kind)}"),
type="interrupt",
kind=kind,
request=request_bindings,
resume=resume_bindings,
outcomes=outcomes or ["submitted"],
)
payload: dict[str, Any] = {
"id": id or self._next_step_id(f"interrupt_{slug_id(kind)}"),
"type": "interrupt",
"kind": kind,
"request": request_bindings,
"resume": resume_bindings,
"outcomes": outcomes or ["submitted"],
}
if request_schema is not None:
payload["request_schema"] = dict(request_schema)
if resume_schema is not None:
payload["resume_schema"] = dict(resume_schema)
node = InterruptNode.model_validate(payload)
self.nodes.append(node)
return node