Aller au contenu
English

defineArtifactTask

import { defineArtifactTask } from "@elie-laloum/outpost";

Définit une tâche de workflow dont la sortie est une ArtifactReference : elle exécute produce(context) et publie la valeur, avec un producteur tiré de l’id d’exécution, de la clé de tâche et de la tentative. Une tentative relancée publie une nouvelle référence. Les dépendants lisent la valeur avec readArtifact().

Exemple complet et règles détaillées.

  • optionsRequis
    ArtifactTaskOptions<T>
    Options de tâche (key, after, retry, cache…) plus store, contract, produce et parents ; la tâche d’artefact fournit perform.
  • options.retryOptionnel
    Retry | undefined
    Politique de relance des tentatives échouées ; sans elle, la tâche s’exécute une fois. Une tentative relancée répète ses effets de bord.
  • options.cacheOptionnel
    TaskCacheOptions | undefined
    Cache de résultat : une entrée trouvée restaure la valeur JSON sans perte enregistrée, sans tentative, usage ni effet de bord. En cas d’absence, un résultat qui n’est pas du JSON sans perte fait échouer la tâche. Refusé sur les gates, les interactions et les tâches qui renvoient un résultat de dispatch.
  • options.gateOptionnel
    WorkflowGate | undefined
    Définition persistée d’approbation ou pause ; son exécution exige un checkpoint et une décision de confiance correspondante.
  • options.keyRequis
    string
    Clé unique dans le workflow, conforme à [A-Za-z0-9][A-Za-z0-9._-]*. Les enregistrements, événements et checkpoints identifient la tâche par elle.
  • options.afterOptionnel
    readonly Task<unknown>[] | undefined
    Tâches qui doivent être done avant que celle-ci démarre, aucune par défaut ; seules celles-ci se lisent avec context.value().
  • options.interactionOptionnel
    TaskInteraction | undefined
    Contrat optionnel de saisie humaine durable ; exige un checkpoint et ne peut pas être combiné avec une gate.
  • options.conditionOptionnel
    ((context: TaskContext) => boolean | Promise<boolean>) | undefined
    Évaluée avec attempt 0 avant l’exécution de la tâche, y compris quand un start() ultérieur la reprend ; false termine la tâche en skipped, ce qui ignore aussi ses dépendantes.
  • options.timeoutMsOptionnel
    number | undefined
    Délai en millisecondes de chaque tentative, entier positif jusqu’à 2147483647. À l’expiration, context.signal est annulé et la tentative échoue ; retry peut la répéter.
  • options.storeRequis
    ArtifactStore
    Store qui reçoit l’artefact publié.
  • options.contractRequis
    ArtifactContract<T>
    Contrat qui valide et encode la valeur produite.
  • options.produceRequis
    (context: TaskContext) => T | Promise<T>
    Calcule la valeur à publier depuis le contexte de tâche, par exemple avec context.value() d’une dépendance.
  • options.parentsOptionnel
    ((context: TaskContext) => readonly ArtifactReference[]) | undefined
    Renvoie les références parentes à enregistrer, en général context.value() de tâches d’artefact listées dans after. S’exécute avant produce().

Task<ArtifactReference>

export declare function defineArtifactTask<T>(
  options: ArtifactTaskOptions<T>,
): Task<ArtifactReference>;