package models import ( "context" "time" "tangled.org/core/spindle/secrets" "tangled.org/core/workflow" ) const MaxWorkflowTimeBudget = 6 * time.Hour func WorkflowTimeBudget(configured time.Duration) time.Duration { return min(configured, MaxWorkflowTimeBudget) } type Engine interface { InitWorkflow(twf workflow.WorkflowSpec, tpl workflow.PipelineSpec) (*Workflow, error) SetupWorkflow(ctx context.Context, wid WorkflowId, wf *Workflow, wfLogger WorkflowLogger) error WorkflowTimeout() time.Duration DestroyWorkflow(ctx context.Context, wid WorkflowId) error RunStep(ctx context.Context, wid WorkflowId, w *Workflow, idx int, secrets []secrets.UnlockedSecret, wfLogger WorkflowLogger) error }