WorkflowRun est créée via workflow.createRun(runId?). Elle encapsule l’état d’exécution, la surveillance des événements et la gestion des interactions humaines.
Méthodes
watch(listener)
workflow:start, step:success, step:event, step:human:*, etc.). Retourne un disposeur pour arrêter l’écoute.
cancel(reason?)
AbortSignal interne. Le résultat final aura le statut "cancelled" et l’erreur contiendra WorkflowAbortError si aucun reason n’est fourni.
start(options)
stream(options)
final se résout lorsque le run se termine (success, failed, cancelled ou waiting_human). En cas d’attente humaine, le flux reste ouvert jusqu’à la reprise.
resumeWithHumanInput({ stepId, data, runId? })
WorkflowResumeError si aucune interaction n’est en attente ou si l’identifiant ne correspond pas.
Télémétrie & événements
- Les événements incluent
workflowId,runId,timestamp,metadata(courante) et des données spécifiques au type (step:start,step:event, etc.). - La télémétrie (OTEL/Langfuse) est configurée via
workflowouoptions.telemetry.WorkflowRunexpose automatiquement les spans par step et les événements humains.
Historique et contexte
Les handlers reçoivent unWorkflowStepRuntimeContext fournissant :
getMetadata()/updateMetadata()– métadonnées mutables partagées.store–Map<string, unknown>pour stocker des références temporaires (utile pourresumeWithHumanInput).getCtx()/updateCtx()– contexte partagé typé.emit(event)– événements custom (step:event) relayés àwatch/stream.
WorkflowRunResult.steps (tableau par step avec statut, horodatage, occurrence, branche suivie et prochain step).