/** * Workflow Model * * Pure data model for monitoring workflows. * Workflows define triggers and visual graphs for the workflow engine. */ import { type EmbeddedTag, type WorkflowGraph, type WorkflowResponse, type WorkflowStatus, type WorkflowTrigger } from "@artu-ai/shared"; import { BaseModel } from "./base"; export type WorkflowData = WorkflowResponse; /** * Workflow model - represents a monitoring workflow. * * A workflow consists of: * - Trigger: When the workflow fires (event or schedule) * - Graph: A visual DAG of nodes (source, transform, condition, action) */ export declare class Workflow extends BaseModel { get id(): string; get organizationId(): string; get environment(): "test" | "live"; get name(): string; get description(): string | undefined; get externalId(): string | undefined; get status(): WorkflowStatus; get trigger(): WorkflowTrigger | null; /** ID of the trigger node within the workflow graph, if any. */ get triggerNodeId(): string | null; get workflow(): WorkflowGraph; get metadata(): Record | undefined; /** * Tags applied to this workflow. */ get tags(): EmbeddedTag[]; get createdAt(): Date; get updatedAt(): Date; /** * Whether this is an event-triggered workflow */ get isEventTrigger(): boolean; /** * Whether this is a schedule-triggered workflow */ get isScheduleTrigger(): boolean; /** * Whether this is a manual-triggered workflow */ get isManualTrigger(): boolean; /** * Whether this is a manual file-triggered workflow */ get isManualFileTrigger(): boolean; /** * Whether this is a form-link-triggered workflow (shareable URL). * These workflows can't be run with "Run Now" — they start when * an external user visits a workflow link. */ get isFormLinkTrigger(): boolean; /** * Whether this is an API-triggered workflow. External callers POST to * a public URL minted via `createApiEndpoint` to start a run. */ get isApiTrigger(): boolean; /** * Whether this is a workflow-completion-triggered workflow — runs * when another workflow finishes. Manual "Run Now" simulates the * upstream completion with no parent execution attached. */ get isWorkflowCompletionTrigger(): boolean; /** * Whether the workflow is active */ get isActive(): boolean; /** * Whether the workflow is in draft status */ get isDraft(): boolean; /** * Whether the workflow is inactive */ get isInactive(): boolean; /** * ID of the corresponding live workflow (only set on test workflows after promotion) */ get liveWorkflowId(): string | null | undefined; /** * ID of the source test workflow (only set on live workflows after promotion) */ get testWorkflowId(): string | null | undefined; /** * Timestamp of last promotion */ get promotedAt(): Date | undefined; /** * Whether this workflow has been promoted to live */ get isPromoted(): boolean; /** * Whether this is a live environment workflow */ get isLiveWorkflow(): boolean; /** * Whether this is a test environment workflow */ get isTestWorkflow(): boolean; toString(): string; } export declare function isWorkflow(value: unknown): value is Workflow;