feat: persist interrupt contract in run state

This commit is contained in:
lda
2026-07-01 05:52:06 +07:00 Verified
parent b13545505f
commit 32831e5b13
3 changed files with 49 additions and 0 deletions
+9
View File
@@ -137,6 +137,11 @@ class InterruptRoute:
workflow_ref: WorkflowRef
def _object_schema() -> dict[str, object]:
"""Default legacy interrupt contract used when older checkpoints are loaded."""
return {"type": "object", "additionalProperties": True}
@dataclass(slots=True)
class InterruptRequest:
id: str
@@ -146,6 +151,10 @@ class InterruptRequest:
payload: dict[str, Any] = field(default_factory=dict)
resumable: bool = True
route: InterruptRoute | None = None
outcomes: list[str] = field(default_factory=lambda: ["submitted"])
request_schema: dict[str, object] = field(default_factory=_object_schema)
resume_schema: dict[str, object] = field(default_factory=_object_schema)
typed: bool = False
@dataclass(slots=True)
+4
View File
@@ -60,6 +60,10 @@ def build_interrupt_request(
kind=node.kind,
payload=payload,
route=route,
outcomes=list(node.outcomes),
request_schema=dict(node.request_schema),
resume_schema=dict(node.resume_schema),
typed=node.has_explicit_contract,
)