from __future__ import annotations from dataclasses import dataclass, field from typing import Any class WorkflowPaused(Exception): """Raised by nodes that need user input before the run can continue.""" def __init__(self, message: str, payload: dict[str, Any] | None = None) -> None: super().__init__(message) self.message = message self.payload = payload or {} @dataclass class WorkflowContext: workflow_id: int | None provider_id: int | None = None model_id: int | None = None temperature: float = 0.1 variables: dict[str, Any] = field(default_factory=dict) runtime: dict[str, Any] = field(default_factory=dict) outputs: dict[str, dict[str, Any]] = field(default_factory=dict) opened_pids: list[int] = field(default_factory=list) def remember_pid(self, pid: int | None) -> None: if pid is not None and pid not in self.opened_pids: self.opened_pids.append(pid)