Relier les tâches et leurs dépendances
Définissez les tâches, déclarez leurs dépendances et lisez leurs résultats typés.
Définir des tâches et un workflow
Section intitulée « Définir des tâches et un workflow »Déclarez chaque étape avec une fonction de définition de tâche, puis passez les tâches à defineWorkflow(). Les dépendances déterminent l’ordre d’exécution et les résultats précédents qu’une tâche peut lire.
Le script affiche { reviewed: 1 }. defineTask() et defineWorkflow() ne font que déclarer le graphe : rien ne s’exécute avant start().
Lire une dépendance
Section intitulée « Lire une dépendance »Listez une tâche dans after, puis lisez sa sortie avec context.value(task). La valeur garde le type renvoyé par le perform de cette tâche.
context.value() lève une exception pour une tâche absente de after, même si elle s’est déjà exécutée. Une tâche ne démarre qu’une fois toutes les tâches de son after à l’état done.
Corriger les erreurs du graphe
Section intitulée « Corriger les erreurs du graphe »defineWorkflow() vérifie le graphe avant toute exécution et lève une exception à la première erreur.
| Erreur de construction | Message |
|---|---|
| Deux tâches partagent une clé | Duplicate task: test |
Une tâche de after manque dans la liste du workflow | publish: missing dependency lint |
| Des tâches dépendent les unes des autres en boucle | Dependency cycle at report |
Une clé ne respecte pas [A-Za-z0-9][A-Za-z0-9._-]* | Invalid task key: …, levé par defineTask() |
Lire les résultats
Section intitulée « Lire les résultats »start() se résout avec un WorkflowResult dès qu’aucune tâche ne peut plus s’exécuter, même si des tâches ont échoué. La promesse est rejetée si une option est invalide ou si un checkpoint ne peut pas être enregistré.
Le script affiche failed, puis lint failed 2 lint errors et test cancelled : par défaut, le premier échec annule les tâches qui n’ont pas terminé.
Référence API : WorkflowResult et TaskRecord.
Exécuter des tâches en parallèle
Section intitulée « Exécuter des tâches en parallèle »Par défaut, start() exécute une tâche à la fois, dans l’ordre de la liste. Passez concurrency pour exécuter ensemble les tâches indépendantes.
lint et test s’exécutent ensemble, puis report affiche true. Les relances, les délais et ce qu’un échec interrompt sont décrits dans Concurrence, relances et délais.
Ignorer une tâche
Section intitulée « Ignorer une tâche »condition s’exécute avant la première tentative de la tâche. Si elle renvoie false, la tâche se termine à l’état skipped sans s’exécuter.
Le script affiche done [ 'done', 'skipped' ]. Une tâche ignorée ne fait pas échouer l’exécution, n’a pas de valeur et fait ignorer toutes les tâches qui en dépendent.
Afficher les dépendances
Section intitulée « Afficher les dépendances »diagram() renvoie le graphe sous forme de flowchart Mermaid, à placer dans un README ou une pull request.
Partager une sandbox
Section intitulée « Partager une sandbox »defineAgentTask() et defineCommandTask() s’exécutent dans une sandbox que vous avez ouverte avec createSandbox(). Les tâches partagent ses fichiers ; c’est vous qui la fermez.
test lance npm test sur les modifications de l’agent. Un code de sortie non nul fait échouer la tâche.
Choisir le type de tâche
Section intitulée « Choisir le type de tâche »Chaque déclaration renvoie une tâche que vous listez dans defineWorkflow() et reliez avec after.
| Déclaration | Usage | Guide |
|---|---|---|
defineTask | Votre propre code, qui renvoie une valeur. | Cette page |
defineIsolatedTask | Une tâche d’agent dans sa propre sandbox, ouverte et fermée par la tâche. | D’une tâche à un workflow |
defineAgentTask | Un tour d’agent dans une sandbox que vous gardez ouverte. | Partager une sandbox |
defineCommandTask | Une commande dans une sandbox que vous gardez ouverte. | Partager une sandbox |
defineLoopTask | Des essais vérifiés par tours, avec le contrôle échoué comme retour de la vérification. | Boucles de vérification |
defineQueuedTask | Un travail confié à un worker via une file de jobs. | Files de jobs et workers |
defineApprovalTask | Une pause jusqu’à l’approbation ou au rejet d’une personne listée. | Approbations |
definePauseTask | Une pause jusqu’à la reprise ou au rejet par une personne listée. | Approbations |
defineInteractiveAgentTask | Un dialogue d’agent qui attend des réponses humaines entre les tours. | Tâches interactives |
defineArtifactTask | Une valeur publiée comme artefact ; les dépendants reçoivent une référence. | Artefacts |
defineWorkflowJob | Pas une tâche : exécute un workflow entier comme job de file. | Files de jobs et workers |
- Les sorties restent en mémoire le temps d’un
start(). Une exécution relancée réexécute toutes les tâches, sauf si vous passez un checkpoint. - Les tâches d’approbation et de pause, les tâches interactives, les pauses de quota,
answersetdecisionsexigent un checkpoint : sans lui,start()lève une exception. - Un workflow ne committe, ne fusionne et ne pousse pas les tâches en une seule transaction. Pour modifier plusieurs dépôts, voir Plusieurs dépôts.
API : defineTask · defineWorkflow · TaskContext · WorkflowResult · TaskRecord · WorkflowFailure