context.py 958 B

1234567891011121314151617181920212223242526272829
  1. from __future__ import annotations
  2. from dataclasses import dataclass, field
  3. from typing import Any
  4. class WorkflowPaused(Exception):
  5. """Raised by nodes that need user input before the run can continue."""
  6. def __init__(self, message: str, payload: dict[str, Any] | None = None) -> None:
  7. super().__init__(message)
  8. self.message = message
  9. self.payload = payload or {}
  10. @dataclass
  11. class WorkflowContext:
  12. workflow_id: int | None
  13. provider_id: int | None = None
  14. model_id: int | None = None
  15. temperature: float = 0.1
  16. variables: dict[str, Any] = field(default_factory=dict)
  17. runtime: dict[str, Any] = field(default_factory=dict)
  18. outputs: dict[str, dict[str, Any]] = field(default_factory=dict)
  19. opened_pids: list[int] = field(default_factory=list)
  20. def remember_pid(self, pid: int | None) -> None:
  21. if pid is not None and pid not in self.opened_pids:
  22. self.opened_pids.append(pid)