Aller au contenu
English

defineDecisionTask

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

Déclarer une tâche de décision sans sandbox utilisant dépendances, nouvelles tentatives, délais, caches et checkpoints existants. Chaque tentative exécutée calcule son état et rapporte l’usage de façon synchrone, y compris les reçus valides de troncatures refusées.

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

  • optionsRequis
    DecisionTaskOptions<Q>
    Configuration fixe de décision et contrôles du workflow ; l’état peut être calculé à partir des dépendances.
  • 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.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.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.decisionRequis
    Decision<Q>
    Déclaration typée et figée de questions créée avec defineDecision.
  • options.modelRequis
    string
    Nom non vide du modèle de décision, sans réglages de génération ni de raisonnement.
  • options.providerRequis
    DecisionProvider
    Provider de décision qui réalise cette évaluation.
  • options.allowTruncatedOptionnel
    boolean | undefined
    False par défaut ; true accepte une troncature signalée en conservant son indicateur dans le résultat.
  • options.stateRequis
    DecisionState | ((context: TaskContext) => DecisionState | Promise<DecisionState>)
    État JSON sans perte statique ou fonction synchrone/asynchrone de TaskContext, résolue à chaque tentative exécutée.

Task<DecisionResult<Q>>

export declare function defineDecisionTask<const Q extends DecisionQuestions>(
  options: DecisionTaskOptions<Q>,
): Task<DecisionResult<Q>>;