feat(G): G-RUN/G-CTX/G-WAIT/G-HTTP/G-MAIL/G-CAL/G-DMS/G-SEARCH/G-AGENT/G-CRM/G-EVT/G-WEB — Durable WorkflowRun, 10 step handlers, resume/wait/lock/retry, SSRF protection, frontend step editor

This commit is contained in:
Agent Zero
2026-08-18 00:29:58 +02:00
parent 4ec2ac9eb5
commit db41e60042
8 changed files with 1783 additions and 154 deletions
+10
View File
@@ -65,6 +65,16 @@ class WorkflowInstance(Base, TenantMixin):
completed_at: Mapped[datetime | None] = mapped_column(DateTime(timezone=True), nullable=True)
timeout_hours: Mapped[int | None] = mapped_column(Integer, nullable=True)
timeout_at: Mapped[datetime | None] = mapped_column(DateTime(timezone=True), nullable=True)
# G-RUN: Durable/Resume semantics
resume_at: Mapped[datetime | None] = mapped_column(DateTime(timezone=True), nullable=True)
resume_reason: Mapped[str | None] = mapped_column(String(50), nullable=True) # wait, approval, event, webhook, cron
step_state: Mapped[dict[str, Any]] = mapped_column(JSONB, default=dict, nullable=False, server_default="{}")
idempotency_key: Mapped[str | None] = mapped_column(String(255), nullable=True)
lock_owner: Mapped[str | None] = mapped_column(String(100), nullable=True)
lock_expires_at: Mapped[datetime | None] = mapped_column(DateTime(timezone=True), nullable=True)
error_message: Mapped[str | None] = mapped_column(Text, nullable=True)
retry_count: Mapped[int] = mapped_column(Integer, nullable=False, default=0, server_default="0")
max_retries: Mapped[int] = mapped_column(Integer, nullable=False, default=3, server_default="3")
class WorkflowStepHistory(Base, TenantMixin):