Run.timeTravelStream()
La méthode .timeTravelStream() réexécute un Workflow à partir de n’importe quelle étape donnée et en diffuse les événements. Vous pouvez recevoir des mises à jour en temps réel pendant l’exécution Time Travel, tout en conservant une visibilité complète sur la progression de chaque étape.
Exemple d’utilisationLien direct vers Exemple d’utilisation
const run = await workflow.createRun()
const output = run.timeTravelStream({
step: 'step2',
inputData: { value: 10 },
})
// Process events as they arrive
for await (const event of output.fullStream) {
console.log(event.type, event.payload)
}
// Get the final result
const result = await output.result
ParamètresLien direct vers Paramètres
Tous les paramètres sont identiques à ceux de Run.timeTravel(). Consultez la référence de timeTravel pour obtenir la documentation détaillée des paramètres.
Valeur renvoyéeLien direct vers Valeur renvoyée
output:
WorkflowRunOutput<WorkflowResult<TState, TInput, TOutput, TSteps>>
Objet contenant à la fois le flux et la Promise du résultat
output.fullStream:
ReadableStream<WorkflowStreamEvent>
Flux lisible qui émet les événements du Workflow à mesure que l’exécution progresse
output.result:
Promise<WorkflowResult<TState, TInput, TOutput, TSteps>>
Promise résolue avec le résultat final de l’exécution du Workflow
output.traceId?:
string
ID de Trace associé à cette exécution lorsque le Tracing est activé
Événements du fluxLien direct vers Événements du flux
Le flux émet des événements de Workflow pendant l’exécution :
workflow-step-start: émis lorsqu’une étape commence son exécutionworkflow-step-finish: émis lorsqu’une étape se termine avec succèsworkflow-step-error: émis lorsqu’une étape rencontre une erreurworkflow-step-suspended: émis lorsqu’une étape est suspendue- Événements supplémentaires selon le type d’étape (Agents, Tools, etc.)
Exemples d’utilisation avancéeLien direct vers Exemples d’utilisation avancée
Traiter les événements pendant le Time TravelLien direct vers Traiter les événements pendant le Time Travel
const run = await workflow.createRun()
const output = run.timeTravelStream({
step: 'step2',
inputData: { value: 10 },
})
for await (const event of output.fullStream) {
switch (event.type) {
case 'workflow-step-start':
console.log(`Starting step: ${event.payload.stepName}`)
break
case 'workflow-step-finish':
console.log(`Completed step: ${event.payload.stepName}`)
break
case 'workflow-step-error':
console.error(`Error in step: ${event.payload.stepName}`, event.payload.error)
break
}
}
const result = await output.result
console.log('Time travel completed:', result)
Flux Time Travel avec contexteLien direct vers Flux Time Travel avec contexte
const output = run.timeTravelStream({
step: 'step2',
context: {
step1: {
status: 'success',
payload: { value: 0 },
output: { step1Result: 2 },
startedAt: Date.now(),
endedAt: Date.now(),
},
},
})
for await (const event of output.fullStream) {
// Handle events
console.log(event)
}
const result = await output.result
Flux Time Travel avec des Workflows imbriquésLien direct vers Flux Time Travel avec des Workflows imbriqués
const output = run.timeTravelStream({
step: ['nestedWorkflow', 'step3'],
inputData: { value: 10 },
nestedStepsContext: {
nestedWorkflow: {
step2: {
status: 'success',
payload: { step1Result: 2 },
output: { step2Result: 3 },
startedAt: Date.now(),
endedAt: Date.now(),
},
},
},
})
for await (const event of output.fullStream) {
console.log(event.type, event.payload)
}
const result = await output.result
RemarquesLien direct vers Remarques
- Le flux se ferme automatiquement lorsque l’exécution Time Travel se termine ou rencontre une erreur
- Vous pouvez traiter les événements du flux pendant que le Workflow est encore en cours d’exécution
- La Promise
resultn’est résolue qu’une fois toutes les étapes terminées - Les événements du flux suivent le même format que lors du streaming habituel d’un Workflow
- Le streaming Time Travel nécessite la configuration d’un stockage, car il repose sur des snapshots de Workflow persistants