> Discover all available pages from the documentation index: https://mastra.zisheng.pro/fr/llms.txt # Run.timeTravel() La méthode `.timeTravel()` réexécute un Workflow à partir de n’importe quelle étape spécifique, en utilisant les données d’un instantané stocké ou le contexte personnalisé que vous fournissez. Utilisez-la pour déboguer des Workflows ayant échoué et tester des étapes individuelles avec différentes entrées. Elle peut aussi permettre de récupérer après des erreurs sans réexécuter l’ensemble du Workflow. ## Exemple d’utilisation ```typescript const run = await workflow.createRun() const result = await run.timeTravel({ step: 'step2', inputData: { value: 10 }, }) ``` ## Paramètres **step** (`Step | [...Step[], Step] | string | string[]`): Étape cible à partir de laquelle démarrer l’exécution. Elle peut être une instance Step, un tableau de Steps (pour des Workflows imbriqués), une chaîne d’ID d’étape ou un tableau de chaînes d’ID d’étape. Utilisez la notation par points ou des tableaux pour les étapes de Workflows imbriqués (par exemple, 'nestedWorkflow\.step3' ou \['nestedWorkflow', 'step3']) **inputData** (`z.infer`): Données d’entrée de l’étape cible. Elles doivent correspondre au schéma d’entrée de l’étape. Si elles ne sont pas fournies, les données de l’instantané du Workflow sont utilisées **resumeData** (`any`): Données de reprise à fournir si le Workflow a été suspendu précédemment **initialState** (`z.infer`): État initial à définir pour l’exécution du Workflow. Sert à définir l’état au niveau du Workflow avant l’exécution **context** (`TimeTravelContext`): Contexte d’exécution contenant les résultats des étapes antérieures à l’étape cible. Chaque clé est un ID d’étape associé à un objet StepResult contenant status, payload, output, startedAt, endedAt, suspendPayload et resumePayload **nestedStepsContext** (`Record>`): Contexte des étapes de Workflows imbriqués. Indexé par ID de Workflow imbriqué, chaque élément contenant les résultats des étapes de ce Workflow imbriqué **requestContext** (`RequestContext`): Données de Request Context à utiliser pendant l’exécution du time travel **outputWriter** (`(chunk: TOutput) => Promise`): Fonction asynchrone facultative permettant de traiter les fragments de sortie à mesure qu’ils sont produits **tracingContext** (`TracingContext`): Contexte de traçage pour créer des spans enfants et ajouter des métadonnées. Injecté automatiquement lors de l’utilisation du système de traçage de Mastra. **tracingContext.currentSpan** (`Span`): Span actuel pour créer des spans enfants et ajouter des métadonnées. Utilisez-le pour créer des spans enfants personnalisés ou mettre à jour les attributs du span pendant l’exécution. **tracingOptions** (`TracingOptions`): Options de configuration de Tracing. **tracingOptions.metadata** (`Record`): Métadonnées à ajouter au span racine de la trace. Utile pour ajouter des attributs personnalisés, tels que des ID utilisateur, des ID de session ou des feature flags. **tracingOptions.requestContextKeys** (`string[]`): Clés RequestContext supplémentaires à extraire comme métadonnées pour cette trace. Prend en charge la notation par points pour les valeurs imbriquées (par exemple, 'user.id'). **tracingOptions.traceId** (`string`): ID de trace à utiliser pour cette exécution (1 à 32 caractères hexadécimaux). S’il est fourni, cette trace fera partie de la trace spécifiée. **tracingOptions.parentSpanId** (`string`): ID du span parent à utiliser pour cette exécution (1 à 16 caractères hexadécimaux). S’il est fourni, le span racine sera créé comme enfant de ce span. **tracingOptions.tags** (`string[]`): Tags à appliquer à cette trace. Étiquettes de chaîne pour catégoriser et filtrer les traces. **outputOptions** (`OutputOptions`): Options de configuration de la sortie. **outputOptions.includeState** (`boolean`): Indique si l’état de l’exécution du Workflow doit être inclus dans le résultat. **outputOptions.includeResumeLabels** (`boolean`): Indique si les libellés de reprise doivent être inclus dans le résultat. ## Valeurs renvoyées **result** (`Promise>`): Promise qui se résout avec le résultat de l’exécution du Workflow, contenant les sorties des étapes et l’état **traceId** (`string`): ID de trace associé à cette exécution lorsque Tracing est activé. Utilisez-le pour corréler les journaux et déboguer le flux d’exécution. **spanId** (`string`): ID du span racine associé à cette exécution lorsque Tracing est activé. Utilisez-le pour la recherche et la corrélation au niveau du span. ## Exemples d’utilisation avancés ### Time travel avec un contexte personnalisé ```typescript const result = await run.timeTravel({ step: 'step2', context: { step1: { status: 'success', payload: { value: 0 }, output: { step1Result: 2 }, startedAt: Date.now(), endedAt: Date.now(), }, }, }) ``` ### Time travel vers une étape de Workflow imbriqué ```typescript // Using dot notation const result = await run.timeTravel({ step: 'nestedWorkflow.step3', inputData: { value: 10 }, }) // Using array of step IDs const result = await run.timeTravel({ step: ['nestedWorkflow', 'step3'], inputData: { value: 10 }, }) ``` ### Time travel avec un état initial ```typescript const result = await run.timeTravel({ step: 'step2', inputData: { value: 10 }, initialState: { counter: 5, metadata: { source: 'time-travel' }, }, }) ``` ### Time travel avec le contexte de Workflows imbriqués ```typescript const result = await run.timeTravel({ step: 'nestedWorkflow.step3', context: { step1: { status: 'success', payload: { value: 0 }, output: { step1Result: 2 }, startedAt: Date.now(), endedAt: Date.now(), }, nestedWorkflow: { status: 'running', payload: { step1Result: 2 }, startedAt: Date.now(), }, }, nestedStepsContext: { nestedWorkflow: { step2: { status: 'success', payload: { step1Result: 2 }, output: { step2Result: 3 }, startedAt: Date.now(), endedAt: Date.now(), }, }, }, }) ``` ## Remarques - Le time travel exige qu’un stockage soit configuré, car il s’appuie sur des instantanés persistants de Workflow - Lors de la réexécution d’un Workflow, le Workflow charge l’instantané existant depuis le stockage, s’il est disponible - Les résultats des étapes antérieures à l’étape cible sont reconstruits à partir de l’instantané ou du contexte fourni - L’exécution commence à l’étape spécifiée avec les données d’entrée fournies ou reconstruites - Le Workflow se poursuit jusqu’à son terme à partir de ce point - Le time travel peut être utilisé sur des Workflows qui n’ont pas encore été exécutés en fournissant un contexte personnalisé ou des données d’entrée pour l’étape de départ. ## Voir aussi - [Time Travel](https://mastra.zisheng.pro/fr/docs/workflows/time-travel) - [Présentation des Workflows](https://mastra.zisheng.pro/fr/docs/workflows/overview) - [Workflow.createRun()](https://mastra.zisheng.pro/fr/reference/workflows/workflow-methods/create-run) - [Instantanés](https://mastra.zisheng.pro/fr/docs/workflows/snapshots) - [Suspendre et reprendre](https://mastra.zisheng.pro/fr/docs/workflows/suspend-and-resume)